.editor-styles-wrapper,:root{--paper: #f2f0ea;--ink: #16130f;--ink-70: #514d48;--ink-55: #78746e;--ink-38: #9e9a94;--rule: #d6d3cb;--brick: #9c3b21;--screen: #100d0a;--on-screen: rgba(242, 240, 235, 0.82);--void: #000;--sans: "instrument-sans-variable", "Instrument Sans", system-ui, sans-serif;--serif: minion-pro, "Minion Pro", Georgia, serif;--size-still: 0.625rem;--size-label: 0.65625rem;--size-nav: 0.6875rem;--size-caption: 0.6875rem;--size-body: 0.8125rem;--size-subhead: 1.0625rem;--size-heading: 1.3125rem;--track-nav: 0.14em;--track-label: 0.16em;--track-caption: 0.06em;--track-body: 0.002em;--track-name: 0.01em;--lh-body: 1.55;--lh-tight: 1.45;--lh-subhead: 1.2;--space-3xs: 0.375rem;--space-2xs: 0.5rem;--space-xs: 0.75rem;--space-s: 1.125rem;--space-m: 1.625rem;--space-l: 2.5rem;--space-xl: 3.5rem;--space-2xl: 4.5rem;--page-x: 1.125rem;--page-top: 1.125rem;--site: 73.75rem;--inner: 56.25rem;--measure: 40rem;--carousel: 32.5rem;--list: 20.625rem;--nav-gap: 1.75rem;--header-height: 4.75rem;--ease-out: cubic-bezier(0.19, 1, 0.22, 1);--duration: 0.3s;--duration-fade: 1.2s}@media print,screen and (min-width: 40em){.editor-styles-wrapper,:root{--page-x: clamp(1.125rem, 9.03vw, 8.125rem);--page-top: 1.375rem;--header-height: 3.5rem}}/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}abbr[title]{border-bottom:0;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}[data-whatintent=mouse] *,[data-whatintent=mouse] *:focus,[data-whatintent=touch] *,[data-whatintent=touch] *:focus,[data-whatinput=mouse] *,[data-whatinput=mouse] *:focus,[data-whatinput=touch] *,[data-whatinput=touch] *:focus{outline:none}[draggable=false]{-webkit-touch-callout:none;-webkit-user-select:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{box-sizing:border-box;font-size:100%}*,*::before,*::after{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}[data-whatinput=mouse] button{outline:0}button{padding:0;appearance:none;border:0;border-radius:0;background:rgba(0,0,0,0);line-height:1;cursor:auto}pre{overflow:auto;-webkit-overflow-scrolling:touch}button,input,optgroup,select,textarea{font-family:inherit}.is-visible{display:block !important}.is-hidden{display:none !important}.grid-container{padding-right:0.9rem;padding-left:0.9rem;max-width:75rem;margin-left:auto;margin-right:auto}.grid-container.fluid{padding-right:0.9rem;padding-left:0.9rem;max-width:100%;margin-left:auto;margin-right:auto}.grid-container.full{padding-right:0;padding-left:0;max-width:100%;margin-left:auto;margin-right:auto}.grid-x{display:flex;flex-flow:row wrap}.cell{flex:0 0 auto;min-height:0;min-width:0;width:100%}.cell.auto{flex:1 1 0}.cell.shrink{flex:0 0 auto}.grid-x>.auto{width:auto}.grid-x>.shrink{width:auto}.grid-x>.small-shrink,.grid-x>.small-full,.grid-x>.small-1,.grid-x>.small-2,.grid-x>.small-3,.grid-x>.small-4,.grid-x>.small-5,.grid-x>.small-6,.grid-x>.small-7,.grid-x>.small-8,.grid-x>.small-9,.grid-x>.small-10,.grid-x>.small-11,.grid-x>.small-12{flex-basis:auto}@media print,screen and (min-width: 40em){.grid-x>.medium-shrink,.grid-x>.medium-full,.grid-x>.medium-1,.grid-x>.medium-2,.grid-x>.medium-3,.grid-x>.medium-4,.grid-x>.medium-5,.grid-x>.medium-6,.grid-x>.medium-7,.grid-x>.medium-8,.grid-x>.medium-9,.grid-x>.medium-10,.grid-x>.medium-11,.grid-x>.medium-12{flex-basis:auto}}@media print,screen and (min-width: 64em){.grid-x>.large-shrink,.grid-x>.large-full,.grid-x>.large-1,.grid-x>.large-2,.grid-x>.large-3,.grid-x>.large-4,.grid-x>.large-5,.grid-x>.large-6,.grid-x>.large-7,.grid-x>.large-8,.grid-x>.large-9,.grid-x>.large-10,.grid-x>.large-11,.grid-x>.large-12{flex-basis:auto}}.grid-x>.small-12,.grid-x>.small-11,.grid-x>.small-10,.grid-x>.small-9,.grid-x>.small-8,.grid-x>.small-7,.grid-x>.small-6,.grid-x>.small-5,.grid-x>.small-4,.grid-x>.small-3,.grid-x>.small-2,.grid-x>.small-1{flex:0 0 auto}.grid-x>.small-1{width:8.3333333333%}.grid-x>.small-2{width:16.6666666667%}.grid-x>.small-3{width:25%}.grid-x>.small-4{width:33.3333333333%}.grid-x>.small-5{width:41.6666666667%}.grid-x>.small-6{width:50%}.grid-x>.small-7{width:58.3333333333%}.grid-x>.small-8{width:66.6666666667%}.grid-x>.small-9{width:75%}.grid-x>.small-10{width:83.3333333333%}.grid-x>.small-11{width:91.6666666667%}.grid-x>.small-12{width:100%}@media print,screen and (min-width: 40em){.grid-x>.medium-auto{flex:1 1 0;width:auto}.grid-x>.medium-12,.grid-x>.medium-11,.grid-x>.medium-10,.grid-x>.medium-9,.grid-x>.medium-8,.grid-x>.medium-7,.grid-x>.medium-6,.grid-x>.medium-5,.grid-x>.medium-4,.grid-x>.medium-3,.grid-x>.medium-2,.grid-x>.medium-1,.grid-x>.medium-shrink{flex:0 0 auto}.grid-x>.medium-shrink{width:auto}.grid-x>.medium-1{width:8.3333333333%}.grid-x>.medium-2{width:16.6666666667%}.grid-x>.medium-3{width:25%}.grid-x>.medium-4{width:33.3333333333%}.grid-x>.medium-5{width:41.6666666667%}.grid-x>.medium-6{width:50%}.grid-x>.medium-7{width:58.3333333333%}.grid-x>.medium-8{width:66.6666666667%}.grid-x>.medium-9{width:75%}.grid-x>.medium-10{width:83.3333333333%}.grid-x>.medium-11{width:91.6666666667%}.grid-x>.medium-12{width:100%}}@media print,screen and (min-width: 64em){.grid-x>.large-auto{flex:1 1 0;width:auto}.grid-x>.large-12,.grid-x>.large-11,.grid-x>.large-10,.grid-x>.large-9,.grid-x>.large-8,.grid-x>.large-7,.grid-x>.large-6,.grid-x>.large-5,.grid-x>.large-4,.grid-x>.large-3,.grid-x>.large-2,.grid-x>.large-1,.grid-x>.large-shrink{flex:0 0 auto}.grid-x>.large-shrink{width:auto}.grid-x>.large-1{width:8.3333333333%}.grid-x>.large-2{width:16.6666666667%}.grid-x>.large-3{width:25%}.grid-x>.large-4{width:33.3333333333%}.grid-x>.large-5{width:41.6666666667%}.grid-x>.large-6{width:50%}.grid-x>.large-7{width:58.3333333333%}.grid-x>.large-8{width:66.6666666667%}.grid-x>.large-9{width:75%}.grid-x>.large-10{width:83.3333333333%}.grid-x>.large-11{width:91.6666666667%}.grid-x>.large-12{width:100%}}.grid-margin-x:not(.grid-x)>.cell{width:auto}.grid-margin-y:not(.grid-y)>.cell{height:auto}.grid-margin-x{margin-left:-0.3125rem;margin-right:-0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-x{margin-left:-0.4375rem;margin-right:-0.4375rem}}.grid-margin-x>.cell{width:calc(100% - 0.625rem);margin-left:0.3125rem;margin-right:0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-x>.cell{width:calc(100% - 0.875rem);margin-left:0.4375rem;margin-right:0.4375rem}}.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.3333333333% - 0.625rem)}.grid-margin-x>.small-2{width:calc(16.6666666667% - 0.625rem)}.grid-margin-x>.small-3{width:calc(25% - 0.625rem)}.grid-margin-x>.small-4{width:calc(33.3333333333% - 0.625rem)}.grid-margin-x>.small-5{width:calc(41.6666666667% - 0.625rem)}.grid-margin-x>.small-6{width:calc(50% - 0.625rem)}.grid-margin-x>.small-7{width:calc(58.3333333333% - 0.625rem)}.grid-margin-x>.small-8{width:calc(66.6666666667% - 0.625rem)}.grid-margin-x>.small-9{width:calc(75% - 0.625rem)}.grid-margin-x>.small-10{width:calc(83.3333333333% - 0.625rem)}.grid-margin-x>.small-11{width:calc(91.6666666667% - 0.625rem)}.grid-margin-x>.small-12{width:calc(100% - 0.625rem)}@media print,screen and (min-width: 40em){.grid-margin-x>.auto{width:auto}.grid-margin-x>.shrink{width:auto}.grid-margin-x>.small-1{width:calc(8.3333333333% - 0.875rem)}.grid-margin-x>.small-2{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x>.small-3{width:calc(25% - 0.875rem)}.grid-margin-x>.small-4{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x>.small-5{width:calc(41.6666666667% - 0.875rem)}.grid-margin-x>.small-6{width:calc(50% - 0.875rem)}.grid-margin-x>.small-7{width:calc(58.3333333333% - 0.875rem)}.grid-margin-x>.small-8{width:calc(66.6666666667% - 0.875rem)}.grid-margin-x>.small-9{width:calc(75% - 0.875rem)}.grid-margin-x>.small-10{width:calc(83.3333333333% - 0.875rem)}.grid-margin-x>.small-11{width:calc(91.6666666667% - 0.875rem)}.grid-margin-x>.small-12{width:calc(100% - 0.875rem)}.grid-margin-x>.medium-auto{width:auto}.grid-margin-x>.medium-shrink{width:auto}.grid-margin-x>.medium-1{width:calc(8.3333333333% - 0.875rem)}.grid-margin-x>.medium-2{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x>.medium-3{width:calc(25% - 0.875rem)}.grid-margin-x>.medium-4{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x>.medium-5{width:calc(41.6666666667% - 0.875rem)}.grid-margin-x>.medium-6{width:calc(50% - 0.875rem)}.grid-margin-x>.medium-7{width:calc(58.3333333333% - 0.875rem)}.grid-margin-x>.medium-8{width:calc(66.6666666667% - 0.875rem)}.grid-margin-x>.medium-9{width:calc(75% - 0.875rem)}.grid-margin-x>.medium-10{width:calc(83.3333333333% - 0.875rem)}.grid-margin-x>.medium-11{width:calc(91.6666666667% - 0.875rem)}.grid-margin-x>.medium-12{width:calc(100% - 0.875rem)}}@media print,screen and (min-width: 64em){.grid-margin-x>.large-auto{width:auto}.grid-margin-x>.large-shrink{width:auto}.grid-margin-x>.large-1{width:calc(8.3333333333% - 0.875rem)}.grid-margin-x>.large-2{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x>.large-3{width:calc(25% - 0.875rem)}.grid-margin-x>.large-4{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x>.large-5{width:calc(41.6666666667% - 0.875rem)}.grid-margin-x>.large-6{width:calc(50% - 0.875rem)}.grid-margin-x>.large-7{width:calc(58.3333333333% - 0.875rem)}.grid-margin-x>.large-8{width:calc(66.6666666667% - 0.875rem)}.grid-margin-x>.large-9{width:calc(75% - 0.875rem)}.grid-margin-x>.large-10{width:calc(83.3333333333% - 0.875rem)}.grid-margin-x>.large-11{width:calc(91.6666666667% - 0.875rem)}.grid-margin-x>.large-12{width:calc(100% - 0.875rem)}}.grid-padding-x .grid-padding-x{margin-right:-0.3125rem;margin-left:-0.3125rem}@media print,screen and (min-width: 40em){.grid-padding-x .grid-padding-x{margin-right:-0.4375rem;margin-left:-0.4375rem}}.grid-container:not(.full)>.grid-padding-x{margin-right:-0.3125rem;margin-left:-0.3125rem}@media print,screen and (min-width: 40em){.grid-container:not(.full)>.grid-padding-x{margin-right:-0.4375rem;margin-left:-0.4375rem}}.grid-padding-x>.cell{padding-right:0.9rem;padding-left:0.9rem}.small-up-1>.cell{width:100%}.small-up-2>.cell{width:50%}.small-up-3>.cell{width:33.3333333333%}.small-up-4>.cell{width:25%}.small-up-5>.cell{width:20%}.small-up-6>.cell{width:16.6666666667%}.small-up-7>.cell{width:14.2857142857%}.small-up-8>.cell{width:12.5%}@media print,screen and (min-width: 40em){.medium-up-1>.cell{width:100%}.medium-up-2>.cell{width:50%}.medium-up-3>.cell{width:33.3333333333%}.medium-up-4>.cell{width:25%}.medium-up-5>.cell{width:20%}.medium-up-6>.cell{width:16.6666666667%}.medium-up-7>.cell{width:14.2857142857%}.medium-up-8>.cell{width:12.5%}}@media print,screen and (min-width: 64em){.large-up-1>.cell{width:100%}.large-up-2>.cell{width:50%}.large-up-3>.cell{width:33.3333333333%}.large-up-4>.cell{width:25%}.large-up-5>.cell{width:20%}.large-up-6>.cell{width:16.6666666667%}.large-up-7>.cell{width:14.2857142857%}.large-up-8>.cell{width:12.5%}}.grid-margin-x.small-up-1>.cell{width:calc(100% - 0.625rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 0.625rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.3333333333% - 0.625rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 0.625rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 0.625rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.6666666667% - 0.625rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.2857142857% - 0.625rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 0.625rem)}@media print,screen and (min-width: 40em){.grid-margin-x.small-up-1>.cell{width:calc(100% - 0.875rem)}.grid-margin-x.small-up-2>.cell{width:calc(50% - 0.875rem)}.grid-margin-x.small-up-3>.cell{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x.small-up-4>.cell{width:calc(25% - 0.875rem)}.grid-margin-x.small-up-5>.cell{width:calc(20% - 0.875rem)}.grid-margin-x.small-up-6>.cell{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x.small-up-7>.cell{width:calc(14.2857142857% - 0.875rem)}.grid-margin-x.small-up-8>.cell{width:calc(12.5% - 0.875rem)}.grid-margin-x.medium-up-1>.cell{width:calc(100% - 0.875rem)}.grid-margin-x.medium-up-2>.cell{width:calc(50% - 0.875rem)}.grid-margin-x.medium-up-3>.cell{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x.medium-up-4>.cell{width:calc(25% - 0.875rem)}.grid-margin-x.medium-up-5>.cell{width:calc(20% - 0.875rem)}.grid-margin-x.medium-up-6>.cell{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x.medium-up-7>.cell{width:calc(14.2857142857% - 0.875rem)}.grid-margin-x.medium-up-8>.cell{width:calc(12.5% - 0.875rem)}}@media print,screen and (min-width: 64em){.grid-margin-x.large-up-1>.cell{width:calc(100% - 0.875rem)}.grid-margin-x.large-up-2>.cell{width:calc(50% - 0.875rem)}.grid-margin-x.large-up-3>.cell{width:calc(33.3333333333% - 0.875rem)}.grid-margin-x.large-up-4>.cell{width:calc(25% - 0.875rem)}.grid-margin-x.large-up-5>.cell{width:calc(20% - 0.875rem)}.grid-margin-x.large-up-6>.cell{width:calc(16.6666666667% - 0.875rem)}.grid-margin-x.large-up-7>.cell{width:calc(14.2857142857% - 0.875rem)}.grid-margin-x.large-up-8>.cell{width:calc(12.5% - 0.875rem)}}.small-margin-collapse{margin-right:0;margin-left:0}.small-margin-collapse>.cell{margin-right:0;margin-left:0}.small-margin-collapse>.small-1{width:8.3333333333%}.small-margin-collapse>.small-2{width:16.6666666667%}.small-margin-collapse>.small-3{width:25%}.small-margin-collapse>.small-4{width:33.3333333333%}.small-margin-collapse>.small-5{width:41.6666666667%}.small-margin-collapse>.small-6{width:50%}.small-margin-collapse>.small-7{width:58.3333333333%}.small-margin-collapse>.small-8{width:66.6666666667%}.small-margin-collapse>.small-9{width:75%}.small-margin-collapse>.small-10{width:83.3333333333%}.small-margin-collapse>.small-11{width:91.6666666667%}.small-margin-collapse>.small-12{width:100%}@media print,screen and (min-width: 40em){.small-margin-collapse>.medium-1{width:8.3333333333%}.small-margin-collapse>.medium-2{width:16.6666666667%}.small-margin-collapse>.medium-3{width:25%}.small-margin-collapse>.medium-4{width:33.3333333333%}.small-margin-collapse>.medium-5{width:41.6666666667%}.small-margin-collapse>.medium-6{width:50%}.small-margin-collapse>.medium-7{width:58.3333333333%}.small-margin-collapse>.medium-8{width:66.6666666667%}.small-margin-collapse>.medium-9{width:75%}.small-margin-collapse>.medium-10{width:83.3333333333%}.small-margin-collapse>.medium-11{width:91.6666666667%}.small-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width: 64em){.small-margin-collapse>.large-1{width:8.3333333333%}.small-margin-collapse>.large-2{width:16.6666666667%}.small-margin-collapse>.large-3{width:25%}.small-margin-collapse>.large-4{width:33.3333333333%}.small-margin-collapse>.large-5{width:41.6666666667%}.small-margin-collapse>.large-6{width:50%}.small-margin-collapse>.large-7{width:58.3333333333%}.small-margin-collapse>.large-8{width:66.6666666667%}.small-margin-collapse>.large-9{width:75%}.small-margin-collapse>.large-10{width:83.3333333333%}.small-margin-collapse>.large-11{width:91.6666666667%}.small-margin-collapse>.large-12{width:100%}}.small-padding-collapse{margin-right:0;margin-left:0}.small-padding-collapse>.cell{padding-right:0;padding-left:0}@media print,screen and (min-width: 40em){.medium-margin-collapse{margin-right:0;margin-left:0}.medium-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print,screen and (min-width: 40em){.medium-margin-collapse>.small-1{width:8.3333333333%}.medium-margin-collapse>.small-2{width:16.6666666667%}.medium-margin-collapse>.small-3{width:25%}.medium-margin-collapse>.small-4{width:33.3333333333%}.medium-margin-collapse>.small-5{width:41.6666666667%}.medium-margin-collapse>.small-6{width:50%}.medium-margin-collapse>.small-7{width:58.3333333333%}.medium-margin-collapse>.small-8{width:66.6666666667%}.medium-margin-collapse>.small-9{width:75%}.medium-margin-collapse>.small-10{width:83.3333333333%}.medium-margin-collapse>.small-11{width:91.6666666667%}.medium-margin-collapse>.small-12{width:100%}}@media print,screen and (min-width: 40em){.medium-margin-collapse>.medium-1{width:8.3333333333%}.medium-margin-collapse>.medium-2{width:16.6666666667%}.medium-margin-collapse>.medium-3{width:25%}.medium-margin-collapse>.medium-4{width:33.3333333333%}.medium-margin-collapse>.medium-5{width:41.6666666667%}.medium-margin-collapse>.medium-6{width:50%}.medium-margin-collapse>.medium-7{width:58.3333333333%}.medium-margin-collapse>.medium-8{width:66.6666666667%}.medium-margin-collapse>.medium-9{width:75%}.medium-margin-collapse>.medium-10{width:83.3333333333%}.medium-margin-collapse>.medium-11{width:91.6666666667%}.medium-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width: 64em){.medium-margin-collapse>.large-1{width:8.3333333333%}.medium-margin-collapse>.large-2{width:16.6666666667%}.medium-margin-collapse>.large-3{width:25%}.medium-margin-collapse>.large-4{width:33.3333333333%}.medium-margin-collapse>.large-5{width:41.6666666667%}.medium-margin-collapse>.large-6{width:50%}.medium-margin-collapse>.large-7{width:58.3333333333%}.medium-margin-collapse>.large-8{width:66.6666666667%}.medium-margin-collapse>.large-9{width:75%}.medium-margin-collapse>.large-10{width:83.3333333333%}.medium-margin-collapse>.large-11{width:91.6666666667%}.medium-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width: 40em){.medium-padding-collapse{margin-right:0;margin-left:0}.medium-padding-collapse>.cell{padding-right:0;padding-left:0}}@media print,screen and (min-width: 64em){.large-margin-collapse{margin-right:0;margin-left:0}.large-margin-collapse>.cell{margin-right:0;margin-left:0}}@media print,screen and (min-width: 64em){.large-margin-collapse>.small-1{width:8.3333333333%}.large-margin-collapse>.small-2{width:16.6666666667%}.large-margin-collapse>.small-3{width:25%}.large-margin-collapse>.small-4{width:33.3333333333%}.large-margin-collapse>.small-5{width:41.6666666667%}.large-margin-collapse>.small-6{width:50%}.large-margin-collapse>.small-7{width:58.3333333333%}.large-margin-collapse>.small-8{width:66.6666666667%}.large-margin-collapse>.small-9{width:75%}.large-margin-collapse>.small-10{width:83.3333333333%}.large-margin-collapse>.small-11{width:91.6666666667%}.large-margin-collapse>.small-12{width:100%}}@media print,screen and (min-width: 64em){.large-margin-collapse>.medium-1{width:8.3333333333%}.large-margin-collapse>.medium-2{width:16.6666666667%}.large-margin-collapse>.medium-3{width:25%}.large-margin-collapse>.medium-4{width:33.3333333333%}.large-margin-collapse>.medium-5{width:41.6666666667%}.large-margin-collapse>.medium-6{width:50%}.large-margin-collapse>.medium-7{width:58.3333333333%}.large-margin-collapse>.medium-8{width:66.6666666667%}.large-margin-collapse>.medium-9{width:75%}.large-margin-collapse>.medium-10{width:83.3333333333%}.large-margin-collapse>.medium-11{width:91.6666666667%}.large-margin-collapse>.medium-12{width:100%}}@media print,screen and (min-width: 64em){.large-margin-collapse>.large-1{width:8.3333333333%}.large-margin-collapse>.large-2{width:16.6666666667%}.large-margin-collapse>.large-3{width:25%}.large-margin-collapse>.large-4{width:33.3333333333%}.large-margin-collapse>.large-5{width:41.6666666667%}.large-margin-collapse>.large-6{width:50%}.large-margin-collapse>.large-7{width:58.3333333333%}.large-margin-collapse>.large-8{width:66.6666666667%}.large-margin-collapse>.large-9{width:75%}.large-margin-collapse>.large-10{width:83.3333333333%}.large-margin-collapse>.large-11{width:91.6666666667%}.large-margin-collapse>.large-12{width:100%}}@media print,screen and (min-width: 64em){.large-padding-collapse{margin-right:0;margin-left:0}.large-padding-collapse>.cell{padding-right:0;padding-left:0}}.small-offset-0{margin-left:0%}.grid-margin-x>.small-offset-0{margin-left:calc(0% + 0.625rem / 2)}.small-offset-1{margin-left:8.3333333333%}.grid-margin-x>.small-offset-1{margin-left:calc(8.3333333333% + 0.625rem / 2)}.small-offset-2{margin-left:16.6666666667%}.grid-margin-x>.small-offset-2{margin-left:calc(16.6666666667% + 0.625rem / 2)}.small-offset-3{margin-left:25%}.grid-margin-x>.small-offset-3{margin-left:calc(25% + 0.625rem / 2)}.small-offset-4{margin-left:33.3333333333%}.grid-margin-x>.small-offset-4{margin-left:calc(33.3333333333% + 0.625rem / 2)}.small-offset-5{margin-left:41.6666666667%}.grid-margin-x>.small-offset-5{margin-left:calc(41.6666666667% + 0.625rem / 2)}.small-offset-6{margin-left:50%}.grid-margin-x>.small-offset-6{margin-left:calc(50% + 0.625rem / 2)}.small-offset-7{margin-left:58.3333333333%}.grid-margin-x>.small-offset-7{margin-left:calc(58.3333333333% + 0.625rem / 2)}.small-offset-8{margin-left:66.6666666667%}.grid-margin-x>.small-offset-8{margin-left:calc(66.6666666667% + 0.625rem / 2)}.small-offset-9{margin-left:75%}.grid-margin-x>.small-offset-9{margin-left:calc(75% + 0.625rem / 2)}.small-offset-10{margin-left:83.3333333333%}.grid-margin-x>.small-offset-10{margin-left:calc(83.3333333333% + 0.625rem / 2)}.small-offset-11{margin-left:91.6666666667%}.grid-margin-x>.small-offset-11{margin-left:calc(91.6666666667% + 0.625rem / 2)}@media print,screen and (min-width: 40em){.medium-offset-0{margin-left:0%}.grid-margin-x>.medium-offset-0{margin-left:calc(0% + 0.875rem / 2)}.medium-offset-1{margin-left:8.3333333333%}.grid-margin-x>.medium-offset-1{margin-left:calc(8.3333333333% + 0.875rem / 2)}.medium-offset-2{margin-left:16.6666666667%}.grid-margin-x>.medium-offset-2{margin-left:calc(16.6666666667% + 0.875rem / 2)}.medium-offset-3{margin-left:25%}.grid-margin-x>.medium-offset-3{margin-left:calc(25% + 0.875rem / 2)}.medium-offset-4{margin-left:33.3333333333%}.grid-margin-x>.medium-offset-4{margin-left:calc(33.3333333333% + 0.875rem / 2)}.medium-offset-5{margin-left:41.6666666667%}.grid-margin-x>.medium-offset-5{margin-left:calc(41.6666666667% + 0.875rem / 2)}.medium-offset-6{margin-left:50%}.grid-margin-x>.medium-offset-6{margin-left:calc(50% + 0.875rem / 2)}.medium-offset-7{margin-left:58.3333333333%}.grid-margin-x>.medium-offset-7{margin-left:calc(58.3333333333% + 0.875rem / 2)}.medium-offset-8{margin-left:66.6666666667%}.grid-margin-x>.medium-offset-8{margin-left:calc(66.6666666667% + 0.875rem / 2)}.medium-offset-9{margin-left:75%}.grid-margin-x>.medium-offset-9{margin-left:calc(75% + 0.875rem / 2)}.medium-offset-10{margin-left:83.3333333333%}.grid-margin-x>.medium-offset-10{margin-left:calc(83.3333333333% + 0.875rem / 2)}.medium-offset-11{margin-left:91.6666666667%}.grid-margin-x>.medium-offset-11{margin-left:calc(91.6666666667% + 0.875rem / 2)}}@media print,screen and (min-width: 64em){.large-offset-0{margin-left:0%}.grid-margin-x>.large-offset-0{margin-left:calc(0% + 0.875rem / 2)}.large-offset-1{margin-left:8.3333333333%}.grid-margin-x>.large-offset-1{margin-left:calc(8.3333333333% + 0.875rem / 2)}.large-offset-2{margin-left:16.6666666667%}.grid-margin-x>.large-offset-2{margin-left:calc(16.6666666667% + 0.875rem / 2)}.large-offset-3{margin-left:25%}.grid-margin-x>.large-offset-3{margin-left:calc(25% + 0.875rem / 2)}.large-offset-4{margin-left:33.3333333333%}.grid-margin-x>.large-offset-4{margin-left:calc(33.3333333333% + 0.875rem / 2)}.large-offset-5{margin-left:41.6666666667%}.grid-margin-x>.large-offset-5{margin-left:calc(41.6666666667% + 0.875rem / 2)}.large-offset-6{margin-left:50%}.grid-margin-x>.large-offset-6{margin-left:calc(50% + 0.875rem / 2)}.large-offset-7{margin-left:58.3333333333%}.grid-margin-x>.large-offset-7{margin-left:calc(58.3333333333% + 0.875rem / 2)}.large-offset-8{margin-left:66.6666666667%}.grid-margin-x>.large-offset-8{margin-left:calc(66.6666666667% + 0.875rem / 2)}.large-offset-9{margin-left:75%}.grid-margin-x>.large-offset-9{margin-left:calc(75% + 0.875rem / 2)}.large-offset-10{margin-left:83.3333333333%}.grid-margin-x>.large-offset-10{margin-left:calc(83.3333333333% + 0.875rem / 2)}.large-offset-11{margin-left:91.6666666667%}.grid-margin-x>.large-offset-11{margin-left:calc(91.6666666667% + 0.875rem / 2)}}.grid-y{display:flex;flex-flow:column nowrap}.grid-y>.cell{height:auto;max-height:none}.grid-y>.auto{height:auto}.grid-y>.shrink{height:auto}.grid-y>.small-shrink,.grid-y>.small-full,.grid-y>.small-1,.grid-y>.small-2,.grid-y>.small-3,.grid-y>.small-4,.grid-y>.small-5,.grid-y>.small-6,.grid-y>.small-7,.grid-y>.small-8,.grid-y>.small-9,.grid-y>.small-10,.grid-y>.small-11,.grid-y>.small-12{flex-basis:auto}@media print,screen and (min-width: 40em){.grid-y>.medium-shrink,.grid-y>.medium-full,.grid-y>.medium-1,.grid-y>.medium-2,.grid-y>.medium-3,.grid-y>.medium-4,.grid-y>.medium-5,.grid-y>.medium-6,.grid-y>.medium-7,.grid-y>.medium-8,.grid-y>.medium-9,.grid-y>.medium-10,.grid-y>.medium-11,.grid-y>.medium-12{flex-basis:auto}}@media print,screen and (min-width: 64em){.grid-y>.large-shrink,.grid-y>.large-full,.grid-y>.large-1,.grid-y>.large-2,.grid-y>.large-3,.grid-y>.large-4,.grid-y>.large-5,.grid-y>.large-6,.grid-y>.large-7,.grid-y>.large-8,.grid-y>.large-9,.grid-y>.large-10,.grid-y>.large-11,.grid-y>.large-12{flex-basis:auto}}.grid-y>.small-12,.grid-y>.small-11,.grid-y>.small-10,.grid-y>.small-9,.grid-y>.small-8,.grid-y>.small-7,.grid-y>.small-6,.grid-y>.small-5,.grid-y>.small-4,.grid-y>.small-3,.grid-y>.small-2,.grid-y>.small-1{flex:0 0 auto}.grid-y>.small-1{height:8.3333333333%}.grid-y>.small-2{height:16.6666666667%}.grid-y>.small-3{height:25%}.grid-y>.small-4{height:33.3333333333%}.grid-y>.small-5{height:41.6666666667%}.grid-y>.small-6{height:50%}.grid-y>.small-7{height:58.3333333333%}.grid-y>.small-8{height:66.6666666667%}.grid-y>.small-9{height:75%}.grid-y>.small-10{height:83.3333333333%}.grid-y>.small-11{height:91.6666666667%}.grid-y>.small-12{height:100%}@media print,screen and (min-width: 40em){.grid-y>.medium-auto{flex:1 1 0;height:auto}.grid-y>.medium-12,.grid-y>.medium-11,.grid-y>.medium-10,.grid-y>.medium-9,.grid-y>.medium-8,.grid-y>.medium-7,.grid-y>.medium-6,.grid-y>.medium-5,.grid-y>.medium-4,.grid-y>.medium-3,.grid-y>.medium-2,.grid-y>.medium-1,.grid-y>.medium-shrink{flex:0 0 auto}.grid-y>.medium-shrink{height:auto}.grid-y>.medium-1{height:8.3333333333%}.grid-y>.medium-2{height:16.6666666667%}.grid-y>.medium-3{height:25%}.grid-y>.medium-4{height:33.3333333333%}.grid-y>.medium-5{height:41.6666666667%}.grid-y>.medium-6{height:50%}.grid-y>.medium-7{height:58.3333333333%}.grid-y>.medium-8{height:66.6666666667%}.grid-y>.medium-9{height:75%}.grid-y>.medium-10{height:83.3333333333%}.grid-y>.medium-11{height:91.6666666667%}.grid-y>.medium-12{height:100%}}@media print,screen and (min-width: 64em){.grid-y>.large-auto{flex:1 1 0;height:auto}.grid-y>.large-12,.grid-y>.large-11,.grid-y>.large-10,.grid-y>.large-9,.grid-y>.large-8,.grid-y>.large-7,.grid-y>.large-6,.grid-y>.large-5,.grid-y>.large-4,.grid-y>.large-3,.grid-y>.large-2,.grid-y>.large-1,.grid-y>.large-shrink{flex:0 0 auto}.grid-y>.large-shrink{height:auto}.grid-y>.large-1{height:8.3333333333%}.grid-y>.large-2{height:16.6666666667%}.grid-y>.large-3{height:25%}.grid-y>.large-4{height:33.3333333333%}.grid-y>.large-5{height:41.6666666667%}.grid-y>.large-6{height:50%}.grid-y>.large-7{height:58.3333333333%}.grid-y>.large-8{height:66.6666666667%}.grid-y>.large-9{height:75%}.grid-y>.large-10{height:83.3333333333%}.grid-y>.large-11{height:91.6666666667%}.grid-y>.large-12{height:100%}}.grid-padding-y .grid-padding-y{margin-top:-0.3125rem;margin-bottom:-0.3125rem}@media print,screen and (min-width: 40em){.grid-padding-y .grid-padding-y{margin-top:-0.4375rem;margin-bottom:-0.4375rem}}.grid-padding-y>.cell{padding-top:0.9rem;padding-bottom:0.9rem}.grid-margin-y{margin-top:-0.3125rem;margin-bottom:-0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-y{margin-top:-0.4375rem;margin-bottom:-0.4375rem}}.grid-margin-y>.cell{height:calc(100% - 0.625rem);margin-top:0.3125rem;margin-bottom:0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 0.875rem);margin-top:0.4375rem;margin-bottom:0.4375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.3333333333% - 0.625rem)}.grid-margin-y>.small-2{height:calc(16.6666666667% - 0.625rem)}.grid-margin-y>.small-3{height:calc(25% - 0.625rem)}.grid-margin-y>.small-4{height:calc(33.3333333333% - 0.625rem)}.grid-margin-y>.small-5{height:calc(41.6666666667% - 0.625rem)}.grid-margin-y>.small-6{height:calc(50% - 0.625rem)}.grid-margin-y>.small-7{height:calc(58.3333333333% - 0.625rem)}.grid-margin-y>.small-8{height:calc(66.6666666667% - 0.625rem)}.grid-margin-y>.small-9{height:calc(75% - 0.625rem)}.grid-margin-y>.small-10{height:calc(83.3333333333% - 0.625rem)}.grid-margin-y>.small-11{height:calc(91.6666666667% - 0.625rem)}.grid-margin-y>.small-12{height:calc(100% - 0.625rem)}@media print,screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.small-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.small-3{height:calc(25% - 0.875rem)}.grid-margin-y>.small-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.small-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.small-6{height:calc(50% - 0.875rem)}.grid-margin-y>.small-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.small-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.small-9{height:calc(75% - 0.875rem)}.grid-margin-y>.small-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.small-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.small-12{height:calc(100% - 0.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.medium-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 0.875rem)}.grid-margin-y>.medium-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.medium-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 0.875rem)}.grid-margin-y>.medium-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.medium-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 0.875rem)}.grid-margin-y>.medium-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.medium-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 0.875rem)}}@media print,screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.large-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.large-3{height:calc(25% - 0.875rem)}.grid-margin-y>.large-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.large-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.large-6{height:calc(50% - 0.875rem)}.grid-margin-y>.large-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.large-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.large-9{height:calc(75% - 0.875rem)}.grid-margin-y>.large-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.large-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.large-12{height:calc(100% - 0.875rem)}}.grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .grid-frame{width:100%}.cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.cell-block-container{display:flex;flex-direction:column;max-height:100%}.cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}@media print,screen and (min-width: 40em){.medium-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .medium-grid-frame{width:100%}.medium-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.medium-cell-block-container{display:flex;flex-direction:column;max-height:100%}.medium-cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}.medium-cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}@media print,screen and (min-width: 64em){.large-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;width:100vw}.cell .large-grid-frame{width:100%}.large-cell-block{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.large-cell-block-container{display:flex;flex-direction:column;max-height:100%}.large-cell-block-container>.grid-x{max-height:100%;flex-wrap:nowrap}.large-cell-block-y{overflow-y:auto;max-height:100%;min-height:100%;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}}.grid-y.grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh;width:auto}@media print,screen and (min-width: 40em){.grid-y.medium-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh;width:auto}}@media print,screen and (min-width: 64em){.grid-y.large-grid-frame{overflow:hidden;position:relative;flex-wrap:nowrap;align-items:stretch;height:100vh;width:auto}}.cell .grid-y.grid-frame{height:100%}@media print,screen and (min-width: 40em){.cell .grid-y.medium-grid-frame{height:100%}}@media print,screen and (min-width: 64em){.cell .grid-y.large-grid-frame{height:100%}}.grid-margin-y{margin-top:-0.3125rem;margin-bottom:-0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-y{margin-top:-0.4375rem;margin-bottom:-0.4375rem}}.grid-margin-y>.cell{height:calc(100% - 0.625rem);margin-top:0.3125rem;margin-bottom:0.3125rem}@media print,screen and (min-width: 40em){.grid-margin-y>.cell{height:calc(100% - 0.875rem);margin-top:0.4375rem;margin-bottom:0.4375rem}}.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.3333333333% - 0.625rem)}.grid-margin-y>.small-2{height:calc(16.6666666667% - 0.625rem)}.grid-margin-y>.small-3{height:calc(25% - 0.625rem)}.grid-margin-y>.small-4{height:calc(33.3333333333% - 0.625rem)}.grid-margin-y>.small-5{height:calc(41.6666666667% - 0.625rem)}.grid-margin-y>.small-6{height:calc(50% - 0.625rem)}.grid-margin-y>.small-7{height:calc(58.3333333333% - 0.625rem)}.grid-margin-y>.small-8{height:calc(66.6666666667% - 0.625rem)}.grid-margin-y>.small-9{height:calc(75% - 0.625rem)}.grid-margin-y>.small-10{height:calc(83.3333333333% - 0.625rem)}.grid-margin-y>.small-11{height:calc(91.6666666667% - 0.625rem)}.grid-margin-y>.small-12{height:calc(100% - 0.625rem)}@media print,screen and (min-width: 40em){.grid-margin-y>.auto{height:auto}.grid-margin-y>.shrink{height:auto}.grid-margin-y>.small-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.small-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.small-3{height:calc(25% - 0.875rem)}.grid-margin-y>.small-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.small-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.small-6{height:calc(50% - 0.875rem)}.grid-margin-y>.small-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.small-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.small-9{height:calc(75% - 0.875rem)}.grid-margin-y>.small-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.small-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.small-12{height:calc(100% - 0.875rem)}.grid-margin-y>.medium-auto{height:auto}.grid-margin-y>.medium-shrink{height:auto}.grid-margin-y>.medium-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.medium-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.medium-3{height:calc(25% - 0.875rem)}.grid-margin-y>.medium-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.medium-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.medium-6{height:calc(50% - 0.875rem)}.grid-margin-y>.medium-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.medium-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.medium-9{height:calc(75% - 0.875rem)}.grid-margin-y>.medium-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.medium-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.medium-12{height:calc(100% - 0.875rem)}}@media print,screen and (min-width: 64em){.grid-margin-y>.large-auto{height:auto}.grid-margin-y>.large-shrink{height:auto}.grid-margin-y>.large-1{height:calc(8.3333333333% - 0.875rem)}.grid-margin-y>.large-2{height:calc(16.6666666667% - 0.875rem)}.grid-margin-y>.large-3{height:calc(25% - 0.875rem)}.grid-margin-y>.large-4{height:calc(33.3333333333% - 0.875rem)}.grid-margin-y>.large-5{height:calc(41.6666666667% - 0.875rem)}.grid-margin-y>.large-6{height:calc(50% - 0.875rem)}.grid-margin-y>.large-7{height:calc(58.3333333333% - 0.875rem)}.grid-margin-y>.large-8{height:calc(66.6666666667% - 0.875rem)}.grid-margin-y>.large-9{height:calc(75% - 0.875rem)}.grid-margin-y>.large-10{height:calc(83.3333333333% - 0.875rem)}.grid-margin-y>.large-11{height:calc(91.6666666667% - 0.875rem)}.grid-margin-y>.large-12{height:calc(100% - 0.875rem)}}.grid-frame.grid-margin-y{height:calc(100vh + 0.625rem)}@media print,screen and (min-width: 40em){.grid-frame.grid-margin-y{height:calc(100vh + 0.875rem)}}@media print,screen and (min-width: 64em){.grid-frame.grid-margin-y{height:calc(100vh + 0.875rem)}}@media print,screen and (min-width: 40em){.grid-margin-y.medium-grid-frame{height:calc(100vh + 0.875rem)}}@media print,screen and (min-width: 64em){.grid-margin-y.large-grid-frame{height:calc(100vh + 0.875rem)}}.align-left{justify-content:flex-start}.align-right{justify-content:flex-end}.align-center{justify-content:center}.align-justify{justify-content:space-between}.align-spaced{justify-content:space-around}.align-left.vertical.menu>li>a{justify-content:flex-start}.align-right.vertical.menu>li>a{justify-content:flex-end}.align-center.vertical.menu>li>a{justify-content:center}.align-top{align-items:flex-start}.align-self-top{align-self:flex-start}.align-bottom{align-items:flex-end}.align-self-bottom{align-self:flex-end}.align-middle{align-items:center}.align-self-middle{align-self:center}.align-stretch{align-items:stretch}.align-self-stretch{align-self:stretch}.align-center-middle{justify-content:center;align-items:center;align-content:center}.small-order-1{order:1}.small-order-2{order:2}.small-order-3{order:3}.small-order-4{order:4}.small-order-5{order:5}.small-order-6{order:6}@media print,screen and (min-width: 40em){.medium-order-1{order:1}.medium-order-2{order:2}.medium-order-3{order:3}.medium-order-4{order:4}.medium-order-5{order:5}.medium-order-6{order:6}}@media print,screen and (min-width: 64em){.large-order-1{order:1}.large-order-2{order:2}.large-order-3{order:3}.large-order-4{order:4}.large-order-5{order:5}.large-order-6{order:6}}.flex-container{display:flex}.flex-child-auto{flex:1 1 auto}.flex-child-grow{flex:1 0 auto}.flex-child-shrink{flex:0 1 auto}.flex-dir-row{flex-direction:row}.flex-dir-row-reverse{flex-direction:row-reverse}.flex-dir-column{flex-direction:column}.flex-dir-column-reverse{flex-direction:column-reverse}@media print,screen and (min-width: 40em){.medium-flex-container{display:flex}.medium-flex-child-auto{flex:1 1 auto}.medium-flex-child-grow{flex:1 0 auto}.medium-flex-child-shrink{flex:0 1 auto}.medium-flex-dir-row{flex-direction:row}.medium-flex-dir-row-reverse{flex-direction:row-reverse}.medium-flex-dir-column{flex-direction:column}.medium-flex-dir-column-reverse{flex-direction:column-reverse}}@media print,screen and (min-width: 64em){.large-flex-container{display:flex}.large-flex-child-auto{flex:1 1 auto}.large-flex-child-grow{flex:1 0 auto}.large-flex-child-shrink{flex:0 1 auto}.large-flex-dir-row{flex-direction:row}.large-flex-dir-row-reverse{flex-direction:row-reverse}.large-flex-dir-column{flex-direction:column}.large-flex-dir-column-reverse{flex-direction:column-reverse}}.hide{display:none !important}.invisible{visibility:hidden}.visible{visibility:visible}@media print,screen and (max-width: 39.99875em){.hide-for-small-only{display:none !important}}@media screen and (max-width: 0em),screen and (min-width: 40em){.show-for-small-only{display:none !important}}@media print,screen and (min-width: 40em){.hide-for-medium{display:none !important}}@media screen and (max-width: 39.99875em){.show-for-medium{display:none !important}}@media print,screen and (min-width: 40em)and (max-width: 63.99875em){.hide-for-medium-only{display:none !important}}@media screen and (max-width: 39.99875em),screen and (min-width: 64em){.show-for-medium-only{display:none !important}}@media print,screen and (min-width: 64em){.hide-for-large{display:none !important}}@media screen and (max-width: 63.99875em){.show-for-large{display:none !important}}@media print,screen and (min-width: 64em)and (max-width: 74.99875em){.hide-for-large-only{display:none !important}}@media screen and (max-width: 63.99875em),screen and (min-width: 75em){.show-for-large-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto !important;height:auto !important;overflow:visible !important;clip:auto !important;white-space:normal !important}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation: portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}.show-for-dark-mode{display:none}.hide-for-dark-mode{display:block}@media screen and (prefers-color-scheme: dark){.show-for-dark-mode{display:block !important}.hide-for-dark-mode{display:none !important}}.show-for-ie{display:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.show-for-ie{display:block !important}.hide-for-ie{display:none !important}}.show-for-sticky{display:none}.is-stuck .show-for-sticky{display:block}.is-stuck .hide-for-sticky{display:none}.t-meta,.t-body,.t-caption,.t-still,.t-label{font-family:var(--sans);font-variation-settings:"wght" 400,"wdth" 100;font-weight:400}.t-label{font-variation-settings:"wght" 600,"wdth" 100;font-weight:600;font-size:var(--size-label);line-height:var(--lh-tight);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink-38)}.t-still{font-variation-settings:"wght" 600,"wdth" 100;font-weight:600;font-size:var(--size-still);line-height:var(--lh-tight);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink-38)}.t-caption{font-size:var(--size-caption);line-height:var(--lh-tight);letter-spacing:var(--track-caption);color:var(--ink-55)}.t-body{font-size:var(--size-body);line-height:var(--lh-body);letter-spacing:var(--track-body);color:var(--ink)}.t-meta{font-size:var(--size-body);line-height:var(--lh-body);letter-spacing:var(--track-body);color:var(--ink-70)}.t-subhead{font-family:var(--serif);font-weight:400;font-size:var(--size-subhead);line-height:var(--lh-subhead);text-transform:uppercase;color:var(--ink)}.t-name{font-family:var(--serif);font-weight:500;font-size:var(--size-subhead);line-height:var(--lh-tight);letter-spacing:var(--track-name);text-transform:uppercase;color:var(--ink)}.t-heading{font-family:var(--serif);font-weight:400;font-size:var(--size-heading);line-height:1.3;color:var(--ink)}.t-prose{max-width:var(--measure)}.t-prose p,.t-prose ul,.t-prose ol{margin:0;font-size:inherit;line-height:inherit}.t-prose p+*,.t-prose ul+*,.t-prose ol+*{margin-top:.875rem}html{background-color:var(--void);font-size:100%}body{margin:0;background-color:var(--void);color:var(--ink);font-family:var(--sans);font-variation-settings:"wght" 400,"wdth" 100;font-weight:400;font-size:var(--size-body);line-height:var(--lh-body);letter-spacing:var(--track-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overscroll-behavior:none}*,*::before,*::after{box-sizing:border-box}p,ul,ol,figure,blockquote,h1,h2,h3,h4{margin:0;padding:0}img,video,svg{display:block;max-width:100%}em,i{font-style:italic}a{color:inherit;text-decoration:underline;text-decoration-thickness:from-font;text-underline-position:from-font;transition:color var(--duration) var(--ease-out)}a:hover,a:focus-visible{color:var(--brick)}:focus-visible{outline:1px solid var(--brick);outline-offset:2px}::selection{background:var(--ink);color:var(--paper)}.visually-hidden,.screen-reader-text{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link:focus{position:fixed !important;top:var(--space-2xs);left:var(--space-2xs);z-index:200;width:auto;height:auto;clip:auto;padding:var(--space-2xs) var(--space-xs);background:var(--paper);color:var(--ink)}.barba-container{min-height:100vh;min-height:100svh;background-color:var(--paper);transform-origin:50% 50%}.site-frame{display:flex;flex-direction:column;min-height:100vh;min-height:100svh;max-width:calc(var(--site) + 2*var(--page-x));margin-inline:auto;padding:var(--header-height) var(--page-x) calc(var(--page-top)*2)}.site-main{display:flex;flex:1 0 auto;flex-direction:column;padding-top:2rem}@media print,screen and (min-width: 40em){.site-main{padding-top:calc(var(--space-xl) + .875rem)}}.site-main--home{padding-top:1rem}@media print,screen and (min-width: 40em){.site-main--home{padding-top:var(--page-top)}}.site-main--inner>*{max-width:var(--inner)}.site-main>*+*,.work>*+*{margin-top:var(--space-m)}.site-main>.block-section-label,.work>.block-section-label,.site-main>.work+*{margin-top:var(--space-l)}.site-main>.block-section-label+*,.work>.block-section-label+*{margin-top:var(--space-xs)}.site-main>.block-stills,.work>.block-stills{margin-top:var(--space-l)}.site-main>:first-child,.site-main>.visually-hidden+*,.work>:first-child{margin-top:0}.site-main--inner>.work>*{max-width:var(--inner)}.works-list{display:grid;row-gap:.5625rem;max-width:var(--measure);list-style:none}.block-placeholder{padding:var(--space-s);border:1px dashed var(--rule);color:var(--ink-55)}.site-header{position:fixed;top:0;right:0;left:0;z-index:50;padding:calc(var(--page-top)*2) var(--page-x) calc(var(--space-xs)*2);background-color:var(--paper);line-height:var(--lh-tight);text-transform:uppercase}.site-header__inner{row-gap:var(--space-xs);max-width:var(--site);margin-inline:auto}@media print,screen and (min-width: 40em){.site-header__inner{align-items:baseline}}.is-morphing .site-header{background-color:rgba(0,0,0,0);mix-blend-mode:difference}.is-morphing .site-header .site-logo,.is-morphing .site-header .site-burger,.is-morphing .site-header .site-nav__link{color:var(--paper)}.site-logo{display:inline-block;font-family:var(--serif);font-weight:700;font-size:.9375rem;letter-spacing:var(--track-name)}@media print,screen and (min-width: 40em){.site-logo{font-size:var(--size-subhead)}}.site-logo{color:var(--ink);text-decoration:none;white-space:nowrap;transition:color var(--duration) var(--ease-out)}.site-logo:hover,.site-logo:focus-visible{color:var(--brick)}.site-header__brand,.site-header__toggle{position:relative;z-index:2}.site-burger{display:block;padding:var(--space-2xs);margin:calc(var(--space-2xs)*-1);background:none;border:0;cursor:pointer;color:var(--ink);transition:color var(--duration) var(--ease-out)}.site-burger:hover,.site-burger:focus-visible{color:var(--brick)}@media print,screen and (min-width: 40em){.site-burger{display:none}}.site-burger__box{--bar-width: 1.125rem;--bar-height: 0.625rem;--bar-shift: calc(var(--bar-height) / 2 - 0.5px);position:relative;display:block;width:var(--bar-width);height:var(--bar-height)}.site-burger__bar{position:absolute;right:0;left:0;height:1px;background-color:currentColor;transition:transform .42s var(--ease-out),opacity .18s linear}.site-burger__bar:nth-child(1){top:0}.site-burger__bar:nth-child(2){top:var(--bar-shift)}.site-burger__bar:nth-child(3){bottom:0}.is-menu-open .site-burger__bar:nth-child(1){transform:translateY(var(--bar-shift)) rotate(45deg)}.is-menu-open .site-burger__bar:nth-child(2){opacity:0}.is-menu-open .site-burger__bar:nth-child(3){transform:translateY(calc(var(--bar-shift) * -1)) rotate(-45deg)}@media print,screen and (max-width: 39.99875em){.site-menu{position:fixed;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:space-between;padding:calc(var(--header-height) + var(--space-xl)) var(--page-x) var(--space-2xl);background-color:var(--paper);opacity:0;visibility:hidden;transition:opacity .34s var(--ease-out),visibility 0s linear .34s}}@media print,screen and (max-width: 39.99875em){.is-menu-open .site-menu{opacity:1;visibility:visible;transition:opacity .34s var(--ease-out),visibility 0s linear}}.site-nav__list{display:flex;justify-content:space-between;list-style:none}@media print,screen and (max-width: 39.99875em){.site-nav__list{flex-direction:column;gap:var(--space-s)}}@media print,screen and (min-width: 40em){.site-nav__list{gap:var(--nav-gap)}}@media print,screen and (max-width: 39.99875em){.site-nav__item,.site-menu__contact{opacity:0;transform:translateY(0.875rem);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}}@media print,screen and (max-width: 39.99875em){.is-menu-open .site-nav__item,.is-menu-open .site-menu__contact{opacity:1;transform:none;transition-delay:calc(var(--i, 0)*.06s + .12s)}}@media print,screen and (min-width: 40em){.site-menu__contact{display:none}}.site-menu__label{margin-bottom:var(--space-3xs);font-size:var(--size-label);letter-spacing:var(--track-label);color:var(--ink-38)}.site-menu__email{font-size:var(--size-body);letter-spacing:var(--track-body);color:var(--ink);text-decoration:none;text-transform:none;border-bottom:1px solid var(--rule);transition:color var(--duration) var(--ease-out)}.site-menu__email:hover,.site-menu__email:focus-visible{color:var(--brick);border-bottom-color:currentColor}.site-nav__item{display:block}.site-nav__link{display:block;font-variation-settings:"wght" 500,"wdth" 100;font-weight:500;font-size:var(--size-subhead);letter-spacing:var(--track-nav);color:var(--ink-70);text-decoration:none;white-space:nowrap}@media print,screen and (min-width: 40em){.site-nav__link{font-size:var(--size-nav)}}.site-nav__link:hover,.site-nav__link:focus-visible{color:var(--brick)}.site-nav__link.is-active{color:var(--ink)}.site-nav__label{position:relative;display:inline-block;padding-bottom:.25rem;transition:transform var(--duration) var(--ease-out)}.site-nav__label::after{content:"";position:absolute;right:0;bottom:0;left:0;height:1px;background-color:currentColor;transform:scaleX(0);transform-origin:right center;transition:transform .42s var(--ease-out)}.site-nav__link:hover .site-nav__label,.site-nav__link:focus-visible .site-nav__label{transform:translateY(-1px)}.site-nav__link:hover .site-nav__label::after,.site-nav__link:focus-visible .site-nav__label::after{transform:scaleX(1);transform-origin:left center}.site-nav__link.is-active .site-nav__label::after{transform:scaleX(1);transform-origin:left center}.preload{display:none}.has-intro .preload{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background-color:var(--paper)}.preload__mark{width:13.125rem;max-width:54vw;color:var(--ink)}.wordmark-svg{width:100%;height:auto;overflow:visible;fill:currentColor}.wordmark-svg .wm-rule{stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}.has-intro .wm-part{opacity:0}.has-intro .wm-rule{opacity:0}.is-loading .site-logo,.is-loading .site-burger,.is-loading .site-nav__item,.is-loading .site-main>*{opacity:0}@media print,screen and (max-width: 39.99875em){.is-menu-open,.is-menu-open body{overflow:hidden}}.is-morphing .barba-container{position:fixed;inset:0;overflow:hidden;transform:translateZ(0);will-change:transform,clip-path;backface-visibility:hidden}.is-morphing .barba-container.is-leaving{z-index:1}.is-morphing .barba-container.is-entering{z-index:2}.site-footer{margin-top:auto;padding-top:var(--space-2xl);opacity:.25;line-height:var(--lh-tight);text-transform:uppercase}.site-footer__inner{row-gap:var(--space-3xs);max-width:var(--site);margin-inline:auto}.site-footer__credit,.site-footer__link{font-variation-settings:"wght" 500,"wdth" 100;font-weight:500;font-size:var(--size-still);letter-spacing:var(--track-nav);color:var(--ink-70)}@media print,screen and (min-width: 40em){.site-footer__credit,.site-footer__link{font-size:var(--size-nav)}}.site-footer__credit{margin:0}.site-footer__links{display:flex;gap:var(--space-s);margin:0;list-style:none}.site-footer__link{text-decoration:none;white-space:nowrap;transition:color var(--duration) var(--ease-out)}.site-footer__link:hover,.site-footer__link:focus-visible{color:var(--brick)}@media(prefers-reduced-motion: reduce){*,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important}.site-nav__item,.site-menu__contact{transition-delay:0s !important}}.not-found,.work-stub{max-width:var(--measure);padding-bottom:var(--space-2xl)}.not-found .not-found__title,.not-found .work-stub__title,.work-stub .not-found__title,.work-stub .work-stub__title{margin-bottom:var(--space-s)}.not-found .not-found__body,.not-found .work-stub__summary,.work-stub .not-found__body,.work-stub .work-stub__summary{margin-bottom:var(--space-m);color:var(--ink-70)}.not-found__links{display:flex;gap:var(--space-m);list-style:none}.not-found__link,.work-stub__link{color:var(--ink-70);text-decoration:underline;text-underline-offset:.2em;transition:color var(--duration) var(--ease-out)}.not-found__link:hover,.not-found__link:focus-visible,.work-stub__link:hover,.work-stub__link:focus-visible{color:var(--brick)}.password-gate{max-width:var(--measure)}.password-gate .password-gate__intro{margin-bottom:var(--space-m);color:var(--ink-70)}.password-gate .password-gate__label{display:block;margin-bottom:var(--space-2xs);color:var(--ink-38)}.password-gate .password-gate__row{display:flex;align-items:stretch;gap:var(--space-xs);max-width:22rem}.password-gate .password-gate__input{flex:1 1 auto;min-width:0;margin:0;padding:var(--space-2xs) 0;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:rgba(0,0,0,0);color:var(--ink);box-shadow:none;transition:border-color var(--duration) var(--ease-out)}.password-gate .password-gate__input:focus{outline:none;border-bottom-color:var(--ink)}.password-gate .password-gate__submit{flex:0 0 auto;padding:var(--space-2xs) 0;border:0;background:rgba(0,0,0,0);color:var(--ink-70);cursor:pointer;transition:color var(--duration) var(--ease-out)}.password-gate .password-gate__submit:hover,.password-gate .password-gate__submit:focus-visible{color:var(--brick)}.consent{position:fixed;right:var(--page-x);bottom:var(--space-s);left:var(--page-x);z-index:40;padding:var(--space-s);background-color:var(--paper);border:1px solid var(--rule);opacity:0;transform:translateY(var(--space-xs));transition:opacity var(--duration-fade) var(--ease-out),transform var(--duration-fade) var(--ease-out)}.consent.is-open{opacity:1;transform:none}@media print,screen and (min-width: 40em){.consent{right:auto;left:var(--page-x);max-width:28rem;padding:var(--space-m)}}.consent .consent__text{margin-bottom:var(--space-s);color:var(--ink-70)}.consent .consent__more{color:var(--ink-70);text-decoration:underline;text-underline-offset:.2em;transition:color var(--duration) var(--ease-out)}.consent .consent__more:hover,.consent .consent__more:focus-visible{color:var(--brick)}.consent .consent__actions{display:flex;flex-wrap:wrap;gap:var(--space-m);align-items:center}.consent .consent__button{padding:0;border:0;background:rgba(0,0,0,0);color:var(--ink-38);cursor:pointer;transition:color var(--duration) var(--ease-out)}.consent .consent__button:hover,.consent .consent__button:focus-visible{color:var(--brick)}.consent .consent__button--yes{color:var(--ink)}.is-menu-open .consent{opacity:0;pointer-events:none}@media(prefers-reduced-motion: reduce){.consent{transition:none;transform:none}}.block-bio .block-bio__born{margin-top:var(--space-3xs)}.block-bio .block-bio__biography{margin-top:var(--space-xs)}.block-exhibition .block-exhibition__description{margin-top:var(--space-2xs)}.block-exhibition .block-exhibition__tour{width:100%;margin-top:var(--space-s);border-collapse:collapse;text-align:left}.block-exhibition th,.block-exhibition td{padding:0;font-weight:inherit;vertical-align:top;background:none}.block-exhibition thead{display:none}@media print,screen and (min-width: 40em){.block-exhibition thead{display:table-header-group}}.block-exhibition thead th{padding-bottom:var(--space-2xs);border-bottom:1px solid var(--rule)}.block-exhibition tbody tr{display:block;padding-block:var(--space-2xs);border-bottom:1px solid var(--rule)}@media print,screen and (min-width: 40em){.block-exhibition tbody tr{display:table-row}}.block-exhibition tbody td{display:block}@media print,screen and (min-width: 40em){.block-exhibition tbody td{display:table-cell;padding-block:var(--space-2xs)}}.block-exhibition .block-exhibition__dates{color:var(--ink-55)}@media print,screen and (min-width: 40em){.block-exhibition .block-exhibition__dates{width:13.125rem;padding-right:var(--space-s)}}@media print,screen and (min-width: 40em){.block-exhibition .block-exhibition__city{width:11.125rem;padding-right:var(--space-s)}}@media print,screen and (min-width: 40em){.block-home-feature .block-home-feature__media{max-width:var(--carousel)}}.block-home-feature .block-home-feature__carousel{position:relative;aspect-ratio:4/3;overflow:hidden;background-color:var(--rule)}.block-home-feature .block-home-feature__slide{position:absolute;inset:0;opacity:0;transition:opacity var(--duration-fade) ease-in-out}.block-home-feature .block-home-feature__slide.is-active{opacity:1}.block-home-feature .block-home-feature__slide img{width:100%;height:100%;object-fit:cover}.block-home-feature .block-home-feature__caption{margin-top:var(--space-2xs)}.block-home-feature .block-home-feature__aside{margin-top:var(--space-l)}@media print,screen and (min-width: 40em){.block-home-feature .block-home-feature__aside{width:var(--list);max-width:40%;margin-top:0;text-align:right}}.block-home-feature .block-home-feature__list{display:grid;row-gap:.5625rem;list-style:none}.block-identity{max-width:var(--carousel);margin-top:auto;padding-top:var(--space-2xl)}.block-identity .block-identity__intro{margin-top:.625rem}.block-press-list{display:grid;row-gap:.5625rem;max-width:var(--measure);list-style:none}.block-quote{max-width:var(--measure)}.block-quote .block-quote__text p{text-indent:-0.4em}.block-quote .block-quote__source{margin-top:var(--space-xs)}.block-section-label .t-label{margin:0}.block-stills .block-stills__label{margin-bottom:var(--space-s)}.block-stills .block-stills__grid{row-gap:.625rem;list-style:none}@media print,screen and (min-width: 40em){.block-stills .block-stills__grid{row-gap:.875rem}}.block-stills .block-stills__frame{position:relative;aspect-ratio:4/3;overflow:hidden;background-color:var(--rule)}.block-stills .block-stills__frame img{width:100%;height:100%;object-fit:cover}.block-stills .block-stills__caption{margin-top:var(--space-3xs)}.block-text .block-text__heading+.block-text__body{margin-top:var(--space-2xs)}.block-video{max-width:var(--measure)}.block-video .block-video__frame{position:relative;aspect-ratio:var(--ratio, 16/9);overflow:hidden;background-color:var(--screen)}.block-video .block-video__media{width:100%;height:100%;object-fit:contain}.block-video .block-video__poster{position:absolute;inset:0}.block-video .block-video__poster img{width:100%;height:100%;object-fit:cover}.block-video .block-video__poster::after{content:"";position:absolute;inset:0;background-color:var(--screen);opacity:.38}.block-video .block-video__player{position:absolute;inset:0;width:100%;height:100%;border:0}.block-video .block-video__play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;padding:0;border:0;background:rgba(0,0,0,0);color:var(--on-screen);font-family:var(--sans);font-variation-settings:"wght" 600,"wdth" 100;font-weight:600;font-size:var(--size-label);line-height:var(--lh-tight);letter-spacing:var(--track-label);text-transform:uppercase;cursor:pointer;transition:color var(--duration) var(--ease-out)}.block-video .block-video__play:hover,.block-video .block-video__play:focus-visible{color:var(--paper)}.block-video .block-video__label{position:absolute;left:50%;top:calc(50% + 1.75rem);translate:-50% 0;white-space:nowrap;will-change:transform}.block-video .block-video__icon{display:flex;align-items:center;justify-content:center;width:2.375rem;height:2.375rem;border:1px solid currentColor;border-radius:50%}.block-video .block-video__icon::after{content:"";width:0;height:0;margin-left:.1875rem;border-style:solid;border-width:.3125rem 0 .3125rem .5rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) currentColor}.block-video .block-video__caption{margin-top:var(--space-2xs)}.block-video.is-playing .block-video__play{display:none}.block-video.is-playing .block-video__poster{opacity:0}.block-work-details{max-width:var(--inner)}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvdGhlbWUuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3ZlbmRvci9ub3JtYWxpemUuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL19nbG9iYWwuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3V0aWwvX3VuaXQuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3V0aWwvX21peGlucy5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fZ3V0dGVycy5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fZ3JpZC5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fY2VsbC5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fbGF5b3V0LnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvZm91bmRhdGlvbi94eS1ncmlkL19jb2xsYXBzZS5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24veHktZ3JpZC9fcG9zaXRpb24uc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3h5LWdyaWQvX2ZyYW1lLnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvZm91bmRhdGlvbi9jb21wb25lbnRzL19mbGV4LnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvZm91bmRhdGlvbi91dGlsL19mbGV4LnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvZm91bmRhdGlvbi9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYXNzZXRzL3Njc3MvX3R5cG9ncmFwaHkuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9hcHAuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9hc3NldHMvc2Nzcy9fcGFzc3dvcmQtZm9ybS5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Fzc2V0cy9zY3NzL19jb25zZW50LnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYmxvY2tzL2Jpby9zdHlsZS5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Jsb2Nrcy9leGhpYml0aW9uL3N0eWxlLnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYmxvY2tzL2hvbWUtZmVhdHVyZS9zdHlsZS5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Jsb2Nrcy9pZGVudGl0eS9zdHlsZS5zY3NzIiwiZmlsZTovLy92YXIvd3d3L2h0bWwvaHVzc2FpbmFuZGd1bmFyYXRuZS9hcHAvdGhlbWVzL3N0aXJ0aW5nYWxlL2Jsb2Nrcy9wcmVzcy1saXN0L3N0eWxlLnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYmxvY2tzL3F1b3RlL3N0eWxlLnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYmxvY2tzL3NlY3Rpb24tbGFiZWwvc3R5bGUuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9ibG9ja3Mvc3RpbGxzL3N0eWxlLnNjc3MiLCJmaWxlOi8vL3Zhci93d3cvaHRtbC9odXNzYWluYW5kZ3VuYXJhdG5lL2FwcC90aGVtZXMvc3RpcnRpbmdhbGUvYmxvY2tzL3RleHQvc3R5bGUuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9ibG9ja3MvdmlkZW8vc3R5bGUuc2NzcyIsImZpbGU6Ly8vdmFyL3d3dy9odG1sL2h1c3NhaW5hbmRndW5hcmF0bmUvYXBwL3RoZW1lcy9zdGlydGluZ2FsZS9ibG9ja3Mvd29yay1kZXRhaWxzL3N0eWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsNkJBR0MsaUJBQ0EsZUFDQSxrQkFDQSxrQkFDQSxrQkFDQSxnQkFDQSxpQkFDQSxrQkFDQSx1Q0FDQSxhQUdBLDZFQUNBLGtEQUVBLHVCQUNBLHlCQUNBLHNCQUNBLDBCQUNBLHVCQUNBLDBCQUNBLDBCQUVBLG9CQUNBLHNCQUNBLHdCQUNBLHNCQUNBLHFCQUVBLGdCQUNBLGlCQUNBLGtCQUdBLHNCQUNBLG9CQUNBLG9CQUNBLG9CQUNBLG9CQUNBLGtCQUNBLG1CQUNBLG9CQUdBLG1CQUNBLHFCQUNBLGlCQUNBLGtCQUNBLGlCQUNBLG9CQUNBLGtCQUNBLG1CQUNBLHlCQUdBLDJDQUNBLGlCQUNBLHNCQzhHTywwQ0QxS1IsNkJBK0RFLDRDQUNBLHFCQUNBLHlCRXZFQSw0RUFRQSxLQUNFLGlCQUNBLDhCQVFGLEtBQ0UsU0FNRixHQUNFLGNBQ0EsZUFTRixHQUNFLHVCQUNBLFNBQ0EsaUJBTUYsSUFDRSxnQ0FDQSxjQVFGLEVBQ0UsK0JBTUYsWUFDRSxnQkFDQSxpQ0FLRixTQUVFLG1CQU1GLGNBR0UsZ0NBQ0EsY0FLRixNQUNFLGNBTUYsUUFFRSxjQUNBLGNBQ0Esa0JBQ0Esd0JBR0YsSUFDRSxlQUdGLElBQ0UsV0FRRixJQUNFLGtCQVNGLHNDQUtFLG9CQUNBLGVBQ0EsaUJBQ0EsU0FNRixhQUVFLGlCQU1GLGNBRUUsb0JBS0YsZ0RBSUUsMEJBS0Ysd0hBSUUsa0JBQ0EsVUFLRiw0R0FJRSw4QkFLRixTQUNFLDJCQVFGLE9BQ0Usc0JBQ0EsY0FDQSxjQUNBLGVBQ0EsVUFDQSxtQkFLRixTQUNFLHdCQUtGLFNBQ0UsY0FNRiw2QkFFRSxzQkFDQSxVQUtGLGtGQUVFLFlBTUYsY0FDRSw2QkFDQSxvQkFLRix5Q0FDRSx3QkFNRiw2QkFDRSwwQkFDQSxhQVFGLFFBQ0UsY0FLRixRQUNFLGtCQVFGLFNBQ0UsYUFLRixTQUNFLGFBUUEsb09BQ0UsYUFLSixrQkFDRSwyQkFDQSx5QkN4SkYsZUFDRSx3RUFHRixLQUNFLHNCQUNBLFVDekllLEtENklqQixxQkFHRSxtQkFJRixLQUNFLFNBQ0EsVUFVQSxXQXhISSxRQTBISixZQTlHZSxtREErR2YsWUF2Rm1CLE9Bd0ZuQixZQTFKZ0IsSUEySmhCLE1BaklJLFFBb0lGLG1DQUNBLGtDQUlKLElBRUUscUJBQ0Esc0JBR0EsZUFDQSxZQUNBLCtCQUlGLFNBQ0UsWUFDQSxnQkFDQSxjQXhHWSxFQTRHZCxPQUNFLHNCQUNBLFdBQ0EsY0EvR1ksRUFzSFosNkdBR0UsMEJFaEJKLDhCQUNFLFVGb0JGLE9BRUUsVUFDQSxnQkFDQSxTQUNBLGNBbklZLEVBb0laLHlCQUNBLGNBQ0EsT0EvR21CLEtBbUhyQixJQUNFLGNBQ0EsaUNBSUYsc0NBS0Usb0JBSUYsWUFDRSx5QkFHRixXQUNFLHdCR2xQRixnQkM2QkkseUNDdkJKLGdCQUNBLGlCQUNBLGtCRkxFLHNCQzBCRSx5Q0N2QkosVUZGK0IsS0VHL0IsaUJBQ0Esa0JGREUscUJDc0JFLCtCQ3ZCSixVRkUrQixLRUQvQixpQkFDQSxrQkZLQSxRRVNBLGFBQ0EsbUJGTkEsTUdxR0EsY0FJRSxhQUNBLFlBc0NBLE1BVE0sS0hwSU4sV0drR0YsV0g5RkUsYUc4RkYsY0h4RkUsY0dtSUEsTUFUTSxLSHRITixnQkcrSEEsTUFUTSxLSHRHSix5UEFDRSxnQkxvSEEsMENLckhGLHVRQUNFLGlCTG9IQSwwQ0tySEYseVBBQ0UsaUJBYUosK01Hc0RGLGNIdkNJLGlCR2tGRixNQVRNLGNIekVKLGlCR2tGRixNQVRNLGVIekVKLGlCR2tGRixNQVRNLElIekVKLGlCR2tGRixNQVRNLGVIekVKLGlCR2tGRixNQVRNLGVIekVKLGlCR2tGRixNQVRNLElIekVKLGlCR2tGRixNQVRNLGVIekVKLGlCR2tGRixNQVRNLGVIekVKLGlCR2tGRixNQVRNLElIekVKLGtCR2tGRixNQVRNLGVIekVKLGtCR2tGRixNQVRNLGVIekVKLGtCR2tGRixNQVRNLEtSZUYsMENLNUdGLHFCRzJESixXQTJDRSxNQVRNLEtIeEZOLGtQR3NERixjSGhESSx1QkcyRkYsTUFUTSxLSHpFSixrQkdrRkYsTUFUTSxjSHpFSixrQkdrRkYsTUFUTSxlSHpFSixrQkdrRkYsTUFUTSxJSHpFSixrQkdrRkYsTUFUTSxlSHpFSixrQkdrRkYsTUFUTSxlSHpFSixrQkdrRkYsTUFUTSxJSHpFSixrQkdrRkYsTUFUTSxlSHpFSixrQkdrRkYsTUFUTSxlSHpFSixrQkdrRkYsTUFUTSxJSHpFSixtQkdrRkYsTUFUTSxlSHpFSixtQkdrRkYsTUFUTSxlSHpFSixtQkdrRkYsTUFUTSxNUmVGLDBDSzVHRixvQkcyREosV0EyQ0UsTUFUTSxLSHhGTixxT0dzREYsY0hoREksc0JHMkZGLE1BVE0sS0h6RUosaUJHa0ZGLE1BVE0sY0h6RUosaUJHa0ZGLE1BVE0sZUh6RUosaUJHa0ZGLE1BVE0sSUh6RUosaUJHa0ZGLE1BVE0sZUh6RUosaUJHa0ZGLE1BVE0sZUh6RUosaUJHa0ZGLE1BVE0sSUh6RUosaUJHa0ZGLE1BVE0sZUh6RUosaUJHa0ZGLE1BVE0sZUh6RUosaUJHa0ZGLE1BVE0sSUh6RUosa0JHa0ZGLE1BVE0sZUh6RUosa0JHa0ZGLE1BVE0sZUh6RUosa0JHa0ZGLE1BVE0sTUhqRVIsa0NBQ0UsV0FJRixrQ0FDRSxZQThCRixlQ3ZHTSwrQ05tSkEsMENLNUNOLGVDdkdNLGdERDJHSixxQkdrQ0EsTUFUTSxzQkYzSEosNkNOMElFLDBDS2pDQSxxQkcyQkosTUFUTSxzQkYzSEosOENEc0VKLHFCRzhERSxNQVRNLEtIakRSLHVCRzBERSxNQVRNLEtIekNOLHdCR2tEQSxNQVRNLCtCSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHlCR2tEQSxNQVRNLGdDSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0sc0JSZUYsMENLcEVOLHFCRzhERSxNQVRNLEtIakRSLHVCRzBERSxNQVRNLEtIekNOLHdCR2tEQSxNQVRNLCtCSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHlCR2tEQSxNQVRNLGdDSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0sc0JIckRSLDRCRzhERSxNQVRNLEtIakRSLDhCRzBERSxNQVRNLEtIekNOLHlCR2tEQSxNQVRNLCtCSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0scUJIekNOLHlCR2tEQSxNQVRNLGdDSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0scUJIekNOLHlCR2tEQSxNQVRNLGdDSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0scUJIekNOLDBCR2tEQSxNQVRNLGdDSHpDTiwwQkdrREEsTUFUTSxnQ0h6Q04sMEJHa0RBLE1BVE0sdUJSZUYsMENLcEVOLDJCRzhERSxNQVRNLEtIakRSLDZCRzBERSxNQVRNLEtIekNOLHdCR2tEQSxNQVRNLCtCSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHdCR2tEQSxNQVRNLGdDSHpDTix3QkdrREEsTUFUTSxnQ0h6Q04sd0JHa0RBLE1BVE0scUJIekNOLHlCR2tEQSxNQVRNLGdDSHpDTix5QkdrREEsTUFUTSxnQ0h6Q04seUJHa0RBLE1BVE0sdUJIVU4sZ0NDOUlJLCtDTm1KQSwwQ0tMSixnQ0M5SUksZ0REb0pKLDJDQ3BKSSwrQ05tSkEsMENLQ0osMkNDcEpJLGdERHlKSixzQkNoSkUseUNHVEosa0JENklFLE1BVE0sS0NwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sTVJlRiwwQ1NuSk4sbUJENklFLE1BVE0sS0NwSVIsbUJENklFLE1BVE0sSUNwSVIsbUJENklFLE1BVE0sZUNwSVIsbUJENklFLE1BVE0sSUNwSVIsbUJENklFLE1BVE0sSUNwSVIsbUJENklFLE1BVE0sZUNwSVIsbUJENklFLE1BVE0sZUNwSVIsbUJENklFLE1BVE0sT1JlRiwwQ1NuSk4sa0JENklFLE1BVE0sS0NwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sSUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sZUNwSVIsa0JENklFLE1BVE0sT0NwSVIsZ0NENklFLE1BVE0sc0JDcElSLGdDRDZJRSxNQVRNLHFCQ3BJUixnQ0Q2SUUsTUFUTSxnQ0NwSVIsZ0NENklFLE1BVE0scUJDcElSLGdDRDZJRSxNQVRNLHFCQ3BJUixnQ0Q2SUUsTUFUTSxnQ0NwSVIsZ0NENklFLE1BVE0sZ0NDcElSLGdDRDZJRSxNQVRNLHVCUmVGLDBDU25KTixnQ0Q2SUUsTUFUTSxzQkNwSVIsZ0NENklFLE1BVE0scUJDcElSLGdDRDZJRSxNQVRNLGdDQ3BJUixnQ0Q2SUUsTUFUTSxxQkNwSVIsZ0NENklFLE1BVE0scUJDcElSLGdDRDZJRSxNQVRNLGdDQ3BJUixnQ0Q2SUUsTUFUTSxnQ0NwSVIsZ0NENklFLE1BVE0sdUJDcElSLGlDRDZJRSxNQVRNLHNCQ3BJUixpQ0Q2SUUsTUFUTSxxQkNwSVIsaUNENklFLE1BVE0sZ0NDcElSLGlDRDZJRSxNQVRNLHFCQ3BJUixpQ0Q2SUUsTUFUTSxxQkNwSVIsaUNENklFLE1BVE0sZ0NDcElSLGlDRDZJRSxNQVRNLGdDQ3BJUixpQ0Q2SUUsTUFUTSx3QlJlRiwwQ1NuSk4sZ0NENklFLE1BVE0sc0JDcElSLGdDRDZJRSxNQVRNLHFCQ3BJUixnQ0Q2SUUsTUFUTSxnQ0NwSVIsZ0NENklFLE1BVE0scUJDcElSLGdDRDZJRSxNQVRNLHFCQ3BJUixnQ0Q2SUUsTUFUTSxnQ0NwSVIsZ0NENklFLE1BVE0sZ0NDcElSLGdDRDZJRSxNQVRNLHdCSG1FSix1Qks5TUUsNkJBR0YsNkJBRUksNkJBc0JFLGdDRnlIUixNQVRNLGNFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLEtSZUYsMENVL0hJLGlDRnlIUixNQVRNLGNFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLE1SZUYsMENVL0hJLGdDRnlIUixNQVRNLGNFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLE1IeUVKLHdCSzdLRSw2QkFHRiw4QkFFSSwrQlY4R0YsMENLb0RGLHdCSzlNRSw2QkFHRiw4QkFFSSw4QlZxSkYsMENVeElJLGlDRmtJUixNQVRNLGNFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGtDRmtJUixNQVRNLGVFekhFLGtDRmtJUixNQVRNLGVFekhFLGtDRmtJUixNQVRNLE1SZUYsMENVL0hJLGtDRnlIUixNQVRNLGNFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLElFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLElFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLElFaEhFLG1DRnlIUixNQVRNLGVFaEhFLG1DRnlIUixNQVRNLGVFaEhFLG1DRnlIUixNQVRNLE1SZUYsMENVL0hJLGlDRnlIUixNQVRNLGNFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLElFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLGVFaEhFLGtDRnlIUixNQVRNLE1SZUYsMENLMERGLHlCSzdLRSw2QkFHRiwrQkFFSSxnQ1Y4R0YsMENLb0RGLHVCSzlNRSw2QkFHRiw2QkFFSSw4QlZxSkYsMENVeElJLGdDRmtJUixNQVRNLGNFekhFLGdDRmtJUixNQVRNLGVFekhFLGdDRmtJUixNQVRNLElFekhFLGdDRmtJUixNQVRNLGVFekhFLGdDRmtJUixNQVRNLGVFekhFLGdDRmtJUixNQVRNLElFekhFLGdDRmtJUixNQVRNLGVFekhFLGdDRmtJUixNQVRNLGVFekhFLGdDRmtJUixNQVRNLElFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLE1SZUYsMENVeElJLGlDRmtJUixNQVRNLGNFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLGVFekhFLGlDRmtJUixNQVRNLElFekhFLGtDRmtJUixNQVRNLGVFekhFLGtDRmtJUixNQVRNLGVFekhFLGtDRmtJUixNQVRNLE1SZUYsMENVL0hJLGdDRnlIUixNQVRNLGNFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLGVFaEhFLGdDRnlIUixNQVRNLElFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLGVFaEhFLGlDRnlIUixNQVRNLE1SZUYsMENLMERGLHdCSzdLRSw2QkFHRiw4QkFFSSxnQ0xzTEosZ0JNbk1GLGVOdU1FLCtCTXZNRixvQ05tTUUsZ0JNbk1GLDBCTnVNRSwrQk12TUYsK0NObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsZ0JNbk1GLDJCTnVNRSwrQk12TUYsZ0RObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsZ0JNbk1GLDJCTnVNRSwrQk12TUYsZ0RObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsaUJNbk1GLDJCTnVNRSxnQ012TUYsZ0RObU1FLGlCTW5NRiwyQk51TUUsZ0NNdk1GLGdEWDJISSwwQ0t3RUYsaUJNbk1GLGVOdU1FLGdDTXZNRixvQ05tTUUsaUJNbk1GLDBCTnVNRSxnQ012TUYsK0NObU1FLGlCTW5NRiwyQk51TUUsZ0NNdk1GLGdETm1NRSxpQk1uTUYsZ0JOdU1FLGdDTXZNRixxQ05tTUUsaUJNbk1GLDJCTnVNRSxnQ012TUYsZ0RObU1FLGlCTW5NRiwyQk51TUUsZ0NNdk1GLGdETm1NRSxpQk1uTUYsZ0JOdU1FLGdDTXZNRixxQ05tTUUsaUJNbk1GLDJCTnVNRSxnQ012TUYsZ0RObU1FLGlCTW5NRiwyQk51TUUsZ0NNdk1GLGdETm1NRSxpQk1uTUYsZ0JOdU1FLGdDTXZNRixxQ05tTUUsa0JNbk1GLDJCTnVNRSxpQ012TUYsZ0RObU1FLGtCTW5NRiwyQk51TUUsaUNNdk1GLGlEWDJISSwwQ0t3RUYsZ0JNbk1GLGVOdU1FLCtCTXZNRixvQ05tTUUsZ0JNbk1GLDBCTnVNRSwrQk12TUYsK0NObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsZ0JNbk1GLDJCTnVNRSwrQk12TUYsZ0RObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsZ0JNbk1GLDJCTnVNRSwrQk12TUYsZ0RObU1FLGdCTW5NRiwyQk51TUUsK0JNdk1GLGdETm1NRSxnQk1uTUYsZ0JOdU1FLCtCTXZNRixxQ05tTUUsaUJNbk1GLDJCTnVNRSxnQ012TUYsZ0RObU1FLGlCTW5NRiwyQk51TUUsZ0NNdk1GLGlETnlORixRRS9PQSxhQUNBLHdCRmtQRSxjR3JJRixZQUNBLGdCSHdJRSxjRzVHQSxPQVRNLEtIeUhOLGdCR2hIQSxPQVRNLEtIdUlKLHlQQUNFLGdCTHpIQSwwQ0t3SEYsdVFBQ0UsaUJMekhBLDBDS3dIRix5UEFDRSxpQkFZRiwrTUd0TEosY0hxTU0saUJHMUpKLE9BVE0sY0htS0YsaUJHMUpKLE9BVE0sZUhtS0YsaUJHMUpKLE9BVE0sSUhtS0YsaUJHMUpKLE9BVE0sZUhtS0YsaUJHMUpKLE9BVE0sZUhtS0YsaUJHMUpKLE9BVE0sSUhtS0YsaUJHMUpKLE9BVE0sZUhtS0YsaUJHMUpKLE9BVE0sZUhtS0YsaUJHMUpKLE9BVE0sSUhtS0Ysa0JHMUpKLE9BVE0sZUhtS0Ysa0JHMUpKLE9BVE0sZUhtS0Ysa0JHMUpKLE9BVE0sS1JlRiwwQ0tnSUEscUJHakxOLFdBMkNFLE9BVE0sS0hvSkosa1BHdExKLGNINExNLHVCR2pKSixPQVRNLEtIbUtGLGtCRzFKSixPQVRNLGNIbUtGLGtCRzFKSixPQVRNLGVIbUtGLGtCRzFKSixPQVRNLElIbUtGLGtCRzFKSixPQVRNLGVIbUtGLGtCRzFKSixPQVRNLGVIbUtGLGtCRzFKSixPQVRNLElIbUtGLGtCRzFKSixPQVRNLGVIbUtGLGtCRzFKSixPQVRNLGVIbUtGLGtCRzFKSixPQVRNLElIbUtGLG1CRzFKSixPQVRNLGVIbUtGLG1CRzFKSixPQVRNLGVIbUtGLG1CRzFKSixPQVRNLE1SZUYsMENLZ0lBLG9CR2pMTixXQTJDRSxPQVRNLEtIb0pKLHFPR3RMSixjSDRMTSxzQkdqSkosT0FUTSxLSG1LRixpQkcxSkosT0FUTSxjSG1LRixpQkcxSkosT0FUTSxlSG1LRixpQkcxSkosT0FUTSxJSG1LRixpQkcxSkosT0FUTSxlSG1LRixpQkcxSkosT0FUTSxlSG1LRixpQkcxSkosT0FUTSxJSG1LRixpQkcxSkosT0FUTSxlSG1LRixpQkcxSkosT0FUTSxlSG1LRixpQkcxSkosT0FUTSxJSG1LRixrQkcxSkosT0FUTSxlSG1LRixrQkcxSkosT0FUTSxlSG1LRixrQkcxSkosT0FUTSxNSCtLSixnQ0NuVEUsK0NObUpBLDBDS2dLRixnQ0NuVEUsZ0REd1RGLHNCQy9TQSx5Q0Q4RkosZUN2R00sK0NObUpBLDBDSzVDTixlQ3ZHTSxnREQyR0oscUJHa0NBLE9BVE0sc0JGM0hKLDZDTjBJRSwwQ0tqQ0EscUJHMkJKLE9BVE0sc0JGM0hKLDhDRHNFSixxQkc4REUsT0FUTSxLSGpEUix1QkcwREUsT0FUTSxLSHpDTix3QkdrREEsT0FUTSwrQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix5QkdrREEsT0FUTSxnQ0h6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHNCUmVGLDBDS3BFTixxQkc4REUsT0FUTSxLSGpEUix1QkcwREUsT0FUTSxLSHpDTix3QkdrREEsT0FUTSwrQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix5QkdrREEsT0FUTSxnQ0h6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHNCSHJEUiw0Qkc4REUsT0FUTSxLSGpEUiw4QkcwREUsT0FUTSxLSHpDTix5QkdrREEsT0FUTSwrQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHFCSHpDTix5QkdrREEsT0FUTSxnQ0h6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHFCSHpDTix5QkdrREEsT0FUTSxnQ0h6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHFCSHpDTiwwQkdrREEsT0FUTSxnQ0h6Q04sMEJHa0RBLE9BVE0sZ0NIekNOLDBCR2tEQSxPQVRNLHVCUmVGLDBDS3BFTiwyQkc4REUsT0FUTSxLSGpEUiw2QkcwREUsT0FUTSxLSHpDTix3QkdrREEsT0FUTSwrQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix3QkdrREEsT0FUTSxnQ0h6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLHFCSHpDTix5QkdrREEsT0FUTSxnQ0h6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLHVCSGtNUixZT3BWRSxnQkFDQSxrQkFDQSxpQkFDQSxvQkFtQ0ksWVBrVE4sa0JBQ0UsV0FHRixZT25TRSxnQkFDQSxlQUdGLGlDQUNBLDRDUGtTQSxjTzNTRSxnQkFDQSxnQkFDQSxnQkFNRixpQ0FDQSw0Q1B1U0Esc0JPaFNBLGFBQ0Esc0JBQ0EsZ0JBRUEsOEJBQ0UsZ0JBQ0EsaUJac0ZJLDBDSzJNSixtQk81V0EsZ0JBQ0Esa0JBQ0EsaUJBQ0Esb0JBbUNJLFlQMFVKLHlCQUNFLFdBR0YsbUJPM1RBLGdCQUNBLGVBR0YsaUNBQ0EsNENQMFRFLDZCT25URixhQUNBLHNCQUNBLGdCQUVBLHFDQUNFLGdCQUNBLGlCUGlUQSxxQk92VUEsZ0JBQ0EsZ0JBQ0EsZ0JBTUYsaUNBQ0EsNkNabUdNLDBDSzJNSixrQk81V0EsZ0JBQ0Esa0JBQ0EsaUJBQ0Esb0JBbUNJLFlQMFVKLHdCQUNFLFdBR0Ysa0JPM1RBLGdCQUNBLGVBR0YsaUNBQ0EsNENQMFRFLDRCT25URixhQUNBLHNCQUNBLGdCQUVBLG9DQUNFLGdCQUNBLGlCUGlUQSxvQk92VUEsZ0JBQ0EsZ0JBQ0EsZ0JBTUYsaUNBQ0EsNkNQcVVJLG1CT25ZRixnQkFDQSxrQkFDQSxpQkFDQSxvQkFpQ0ksYVBpV0EsV0xwT0EsMENLd09BLDBCT3pZSixnQkFDQSxrQkFDQSxpQkFDQSxvQkFpQ0ksYVB1V0UsWUwxT0YsMENLd09BLHlCT3pZSixnQkFDQSxrQkFDQSxpQkFDQSxvQkFpQ0ksYVB1V0UsWUFNSix5QkFDRSxZTGpQQSwwQ0tvUEEsZ0NBQ0UsYUxyUEYsMENLb1BBLCtCQUNFLGFBalNSLGVDdkdNLCtDTm1KQSwwQ0s1Q04sZUN2R00sZ0REMkdKLHFCR2tDQSxPQVRNLHNCRjNISiw2Q04wSUUsMENLakNBLHFCRzJCSixPQVRNLHNCRjNISiw4Q0RzRUoscUJHOERFLE9BVE0sS0hqRFIsdUJHMERFLE9BVE0sS0h6Q04sd0JHa0RBLE9BVE0sK0JIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSxzQlJlRiwwQ0twRU4scUJHOERFLE9BVE0sS0hqRFIsdUJHMERFLE9BVE0sS0h6Q04sd0JHa0RBLE9BVE0sK0JIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSxzQkhyRFIsNEJHOERFLE9BVE0sS0hqRFIsOEJHMERFLE9BVE0sS0h6Q04seUJHa0RBLE9BVE0sK0JIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSxxQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSxxQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSxxQkh6Q04sMEJHa0RBLE9BVE0sZ0NIekNOLDBCR2tEQSxPQVRNLGdDSHpDTiwwQkdrREEsT0FUTSx1QlJlRiwwQ0twRU4sMkJHOERFLE9BVE0sS0hqRFIsNkJHMERFLE9BVE0sS0h6Q04sd0JHa0RBLE9BVE0sK0JIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04sd0JHa0RBLE9BVE0sZ0NIekNOLHdCR2tEQSxPQVRNLGdDSHpDTix3QkdrREEsT0FUTSxxQkh6Q04seUJHa0RBLE9BVE0sZ0NIekNOLHlCR2tEQSxPQVRNLGdDSHpDTix5QkdrREEsT0FUTSx1QkgyUU4sMEJPdFlJLDhCWjBJQSwwQ0s0UEosMEJPdFlJLCtCWjBJQSwwQ0s0UEosMEJPdFlJLCtCWjBJQSwwQ0tnUUYsaUNPMVlFLCtCWjBJQSwwQ0tnUUYsZ0NPMVlFLCtCQ2lDSixZQ25CRixnQkFoQlEsV0RtQ04sYUNuQkYsZ0JBaEJRLFNEbUNOLGNDbkJGLGdCQWhCUSxPRG1DTixlQ25CRixnQkFoQlEsY0RtQ04sY0NuQkYsZ0JBaEJRLGFENENGLCtCQzVCTixnQkFoQlEsV0Q0Q0YsZ0NDNUJOLGdCQWhCUSxTRDRDRixpQ0M1Qk4sZ0JBaEJRLE9EcUROLFdDcENGLFlBUlEsV0RnRE4sZ0JDeEJGLFdBUFEsV0QyQk4sY0NwQ0YsWUFSUSxTRGdETixtQkN4QkYsV0FQUSxTRDJCTixjQ3BDRixZQVJRLE9EZ0ROLG1CQ3hCRixXQVBRLE9EMkJOLGVDcENGLFlBUlEsUURnRE4sb0JDeEJGLFdBUFEsUURxQ1IscUJDL0NBLGdCQWhCUSxPQWlCUixZQVJRLE9Ed0ROLHFCQU1FLGVDaENKLE1EK0JlLEVBQ1gsZUNoQ0osTUQrQmUsRUFDWCxlQ2hDSixNRCtCZSxFQUNYLGVDaENKLE1EK0JlLEVBQ1gsZUNoQ0osTUQrQmUsRUFDWCxlQ2hDSixNRCtCZSxFYnNFVCwwQ2FyRUYsZ0JDaENKLE1EK0JlLEVBQ1gsZ0JDaENKLE1EK0JlLEVBQ1gsZ0JDaENKLE1EK0JlLEVBQ1gsZ0JDaENKLE1EK0JlLEVBQ1gsZ0JDaENKLE1EK0JlLEVBQ1gsZ0JDaENKLE1EK0JlLEdic0VULDBDYXJFRixlQ2hDSixNRCtCZSxFQUNYLGVDaENKLE1EK0JlLEVBQ1gsZUNoQ0osTUQrQmUsRUFDWCxlQ2hDSixNRCtCZSxFQUNYLGVDaENKLE1EK0JlLEVBQ1gsZUNoQ0osTUQrQmUsR0E1RmYsZ0JDWUEsYURSQSxpQkFDRSxjQUdGLGlCQUNFLGNBR0YsbUJBQ0UsY0FJQSxjQ3NERixlQXBFbUIsSURjakIsc0JDc0RGLGVBcEVtQixZRGNqQixpQkNzREYsZUFwRW1CLE9EY2pCLHlCQ3NERixlQXBFbUIsZWQrSmIsMENhdklFLHVCQ2ZSLGFEbUJRLHdCQUNFLGNBR0Ysd0JBQ0UsY0FHRiwwQkFDRSxjQUlBLHFCQzJCVixlQXBFbUIsSUR5Q1QsNkJDMkJWLGVBcEVtQixZRHlDVCx3QkMyQlYsZUFwRW1CLE9EeUNULGdDQzJCVixlQXBFbUIsZ0JkK0piLDBDYXZJRSxzQkNmUixhRG1CUSx1QkFDRSxjQUdGLHVCQUNFLGNBR0YseUJBQ0UsY0FJQSxvQkMyQlYsZUFwRW1CLElEeUNULDRCQzJCVixlQXBFbUIsWUR5Q1QsdUJDMkJWLGVBcEVtQixPRHlDVCwrQkMyQlYsZUFwRW1CLGdCQzRDbkIsTUFDRSx3QkFHRixXQUNFLGtCQUVGLFNBQ0UsbUJmMkdJLGdEZTVGSixxQkE3QkEseUJBbkJBLGdFQW9EQSxxQkFuREUseUJmMklFLDBDZXJHRixpQkE1QkYseUJmc0lJLDBDZXRHRixpQkFwRUYseUJmcUtJLHFFZTVGSixzQkE3QkEseUJBbkJBLHVFQW9EQSxzQkFuREUseUJmMklFLDBDZXJHRixnQkE1QkYseUJmc0lJLDBDZXRHRixnQkFwRUYseUJmcUtJLHFFZTVGSixxQkE3QkEseUJBbkJBLHVFQW9EQSxxQkFuREUseUJBMERKLDRCWHNIQSw2QkFDQSxxQkFDQSxzQkFDQSxxQkFDQSwyQkFDQSxpQ0FDQSw4QkFDQSxvQld0SEUsMkNYZ0lGLDJCQUNBLHNCQUNBLHVCQUNBLDRCQUNBLHFCQUNBLDhCVzlIQSx1Q0FFRSx5QmZzRUksMkNleEVOLHVDQUtJLDBCZm1FRSwwQ2V4RU4sdUNBU0kseUJBSUosdUNBRUUsd0JmeURJLDJDZTNETix1Q0FLSSx5QmZzREUsMENlM0ROLHVDQVNJLDBCQUtKLG9CQUNFLGFBRUYsb0JBQ0UsY0FFRiwrQ0FDRSxvQkFDRSx5QkFFRixvQkFDRSx5QkFLSixhQUNFLGFBRUYscUVBQ0UsYUFDRSx5QkFFRixhQUNFLHlCQUtKLGlCQUNFLGFBRUYsMkJBQ0UsY0FFRiwyQkFDRSxhQ3pLSiw2Q0FDQyx3QkFDQSw4Q0FDQSxnQkFJRCxTQUVDLDhDQUNBLGdCQUNBLDRCQUNBLDRCQUNBLGtDQUNBLHlCQUNBLG9CQUlELFNBRUMsOENBQ0EsZ0JBQ0EsNEJBQ0EsNEJBQ0Esa0NBQ0EseUJBQ0Esb0JBSUQsV0FFQyw4QkFDQSw0QkFDQSxvQ0FDQSxvQkFJRCxRQUVDLDJCQUNBLDJCQUNBLGlDQUNBLGlCQUlELFFBRUMsMkJBQ0EsMkJBQ0EsaUNBQ0Esb0JBSUQsV0FDQyx5QkFDQSxnQkFDQSw4QkFDQSw4QkFDQSx5QkFDQSxpQkFJRCxRQUNDLHlCQUNBLGdCQUNBLDhCQUNBLDRCQUNBLGlDQUNBLHlCQUNBLGlCQUlELFdBQ0MseUJBQ0EsZ0JBQ0EsOEJBQ0EsZ0JBQ0EsaUJBSUQsU0FDQyx5QkFFQSxtQ0FHQyxTQUNBLGtCQUNBLG9CQUVBLHlDQUNDLG1CQ25HSCxLQUdDLDZCQUNBLGVBR0QsS0FDQyxTQUNBLDZCQUNBLGlCQUNBLHdCQUNBLDhDQUNBLGdCQUNBLDJCQUNBLDJCQUNBLGlDQUNBLG1DQUNBLGtDQUNBLGtDQUNBLHlCQUdELHFCQUdDLHNCQUdELHNDQVNDLFNBQ0EsVUFHRCxjQUdDLGNBQ0EsZUFHRCxLQUVDLGtCQUdELEVBQ0MsY0FDQSwwQkFDQSxvQ0FDQSxrQ0FDQSxpREFFQSx3QkFFQyxtQkFJRixlQUNDLCtCQUNBLG1CQUdELFlBQ0Msc0JBQ0EsbUJBR0QscUNBRUMsNkJBQ0EsVUFDQSxXQUNBLGdCQUNBLG1CQUNBLG1CQUdELGlCQUNDLDBCQUNBLHFCQUNBLHNCQUNBLFlBQ0EsV0FDQSxZQUNBLFVBQ0EseUNBQ0Esd0JBQ0EsaUJBU0QsaUJBQ0MsaUJBQ0Esa0JBQ0EsOEJBQ0EseUJBR0QsWUFDQyxhQUNBLHNCQUlBLGlCQUNBLGtCQUNBLDhDQUNBLG1CQUlBLG1FQUtELFdBQ0MsYUFDQSxjQUNBLHNCQUNBLGlCakJzQ08sMENpQjFDUixXQU9FLDZDQUlGLGlCQUNDLGlCakI4Qk8sMENpQi9CUixpQkFJRSw2QkFJRixvQkFDQyx1QkFLRCx5QkFFQywwQkFHRCw4RUFHQywwQkFHRCwrREFFQywyQkFHRCw2Q0FFQywwQkFHRCx5RUFHQyxhQUdELDBCQUNDLHVCQUlELFlBQ0MsYUFDQSxpQkFDQSx5QkFDQSxnQkFJRCxtQkFDQyx1QkFDQSw4QkFDQSxvQkFTRCxhQUNDLGVBQ0EsTUFDQSxRQUNBLE9BQ0EsV0FFQSxzRUFDQSw4QkFDQSw0QkFDQSx5QkFHRCxvQkFDQyx3QkFDQSxzQkFDQSxtQmpCbkRPLDBDaUJnRFIsb0JBT0Usc0JBTUYsMEJBQ0MsK0JBQ0EsMEJBRUEsc0hBR0MsbUJBTUYsV0FDQyxxQkFDQSx5QkFDQSxnQkFDQSxtQkFDQSxpQ2pCL0VPLDBDaUIwRVIsV0FRRSwrQkFSRixXQVVDLGlCQUNBLHFCQUNBLG1CQUNBLGlEQUVBLDBDQUVDLG1CQU9GLHlDQUVDLGtCQUNBLFVBT0QsYUFDQyxjQUNBLHlCQUNBLGlDQUNBLGdCQUNBLFNBQ0EsZUFDQSxpQkFDQSxpREFFQSw4Q0FFQyxtQmpCeEhNLDBDaUI0R1IsYUFnQkUsY0FJRixrQkFDQyxzQkFDQSx1QkFFQSxpREFFQSxrQkFDQSxjQUNBLHVCQUNBLHlCQUdELGtCQUNDLGtCQUNBLFFBQ0EsT0FDQSxXQUNBLDhCQUNBLFdBQ0MsbURBR0QsK0JBQ0MsTUFHRCwrQkFDQyxxQkFHRCwrQkFDQyxTQU1ELDZDQUNDLHFEQUdELDZDQUNDLFVBR0QsNkNBQ0MsaUVqQjlLTSxnRGlCeUxSLFdBRUUsZUFDQSxRQUNBLFVBQ0EsYUFDQSxzQkFDQSw4QkFDQSxvRkFDQSw4QkFDQSxVQUNBLGtCQUdBLFdBQ0Msd0RqQnhNSyxnRGlCNk1SLHlCQUVFLFVBQ0EsbUJBQ0EsV0FDQyxtREFLSCxnQkFDQyxhQUNBLDhCQUNBLGdCakIxTk8sZ0RpQnVOUixnQkFNRSxzQkFDQSxvQmpCOU5NLDBDaUJ1TlIsZ0JBV0Usb0JqQmxPTSxnRGlCeU9SLG9DQUdFLFVBQ0EsK0JBQ0EsV0FDQywyRGpCL09LLGdEaUJvUFIsZ0VBR0UsVUFDQSxlQUNBLGdEakJ6UE0sMENpQjZQUixvQkFFRSxjQUlGLGtCQUNDLCtCQUNBLDRCQUNBLGtDQUNBLG9CQUlELGtCQUNDLDJCQUNBLGlDQUNBLGlCQUNBLHFCQUNBLG9CQUNBLG9DQUNBLGlEQUVBLHdEQUVDLG1CQUNBLGlDQUlGLGdCQUNDLGNBS0QsZ0JBQ0MsY0FDQSw4Q0FDQSxnQkFHQSw4QkFDQSxnQ0FDQSxvQkFDQSxxQkFDQSxtQmpCM1NPLDBDaUJpU1IsZ0JBYUUsMkJBR0Qsb0RBRUMsbUJBR0QsMEJBQ0MsaUJBSUYsaUJBQ0Msa0JBQ0EscUJBQ0Esc0JBQ0EscURBSUEsd0JBQ0MsV0FDQSxrQkFDQSxRQUNBLFNBQ0EsT0FDQSxXQUNBLDhCQUNBLG9CQUNBLDhCQUNBLDBDQUlGLHNGQUVDLDJCQUVBLG9HQUNDLG9CQUNBLDZCQUlGLGtEQUNDLG9CQUNBLDZCQVVELFNBQ0MsYUFHRCxvQkFDQyxlQUNBLFFBQ0EsWUFDQSxhQUNBLG1CQUNBLHVCQUNBLDhCQUdELGVBQ0MsZ0JBQ0EsZUFDQSxpQkFHRCxjQUNDLFdBQ0EsWUFDQSxpQkFDQSxrQkFFQSx1QkFDQyxvQkFDQSxlQUNBLGlDQUlGLG9CQUNDLFVBR0Qsb0JBQ0MsVUFJRCxxR0FJQyxVakJyWk8sZ0RpQnlaUixpQ0FHRSxpQkFZRCw4QkFDQyxlQUNBLFFBQ0EsZ0JBQ0Esd0JBQ0EsZ0NBQ0EsMkJBR0QseUNBQ0MsVUFHRCwwQ0FDQyxVQWFGLGFBQ0MsZ0JBQ0EsNkJBQ0EsWUFDQSw0QkFDQSx5QkFHRCxvQkFDQyx5QkFDQSxzQkFDQSxtQkFHRCx3Q0FFQyw4Q0FDQSxnQkFDQSw0QkFDQSxnQ0FDQSxvQmpCdmRPLDBDaUJpZFIsd0NBU0UsMkJBSUYscUJBQ0MsU0FHRCxvQkFDQyxhQUNBLG1CQUNBLFNBQ0EsZ0JBR0QsbUJBQ0MscUJBQ0EsbUJBQ0EsaURBRUEsMERBRUMsbUJBSUYsdUNBQ0MscUJBR0MscUNBQ0Esb0NBTUQsb0NBRUMsZ0NBVUYsc0JBRUMseUJBQ0EsZ0NBRUEsb0hBRUMsNkJBR0Qsc0hBRUMsNkJBQ0Esb0JBSUYsa0JBQ0MsYUFDQSxtQkFDQSxnQkFHRCxrQ0FFQyxvQkFDQSwwQkFDQSwyQkFDQSxpREFFQSw0R0FFQyxtQkN4dEJGLGVBQ0MseUJBRUEscUNBQ0MsNkJBQ0Esb0JBR0QscUNBQ0MsY0FDQSwrQkFDQSxvQkFHRCxtQ0FDQyxhQUNBLG9CQUNBLG9CQUNBLGdCQUdELHFDQUNDLGNBQ0EsWUFDQSxTQUNBLDJCQUNBLFNBQ0Esb0NBQ0EsZ0JBQ0EseUJBQ0EsaUJBQ0EsZ0JBQ0Esd0RBRUEsMkNBQ0MsYUFDQSwrQkFJRixzQ0FDQyxjQUNBLDJCQUNBLFNBQ0EseUJBQ0Esb0JBQ0EsZUFDQSxpREFFQSxnR0FFQyxtQkNqREgsU0FDQyxlQUNBLG9CQUNBLHNCQUNBLG1CQUNBLFdBQ0EsdUJBQ0EsOEJBQ0EsNkJBR0EsVUFDQSxzQ0FDQSxXQUNDLDRGQUdELGlCQUNDLFVBQ0EsZW5Cd0pNLDBDbUIzS1IsU0F1QkUsV0FDQSxtQkFDQSxnQkFDQSx3QkFHRCx3QkFDQyw2QkFDQSxvQkFHRCx3QkFDQyxvQkFDQSwwQkFDQSwyQkFDQSxpREFFQSxvRUFFQyxtQkFJRiwyQkFDQyxhQUNBLGVBQ0EsbUJBQ0EsbUJBR0QsMEJBQ0MsVUFDQSxTQUNBLHlCQUNBLG9CQUNBLGVBQ0EsaURBRUEsd0VBRUMsbUJBSUYsK0JBQ0MsaUJBTUYsdUJBQ0MsVUFDQSxvQkFHRCx1Q0FDQyxTQUNDLGdCQUNBLGdCQ3pGRCw0QkFDQyw0QkFHRCxpQ0FDQywyQkNIRCxpREFDQyw0QkFHRCwwQ0FDQyxXQUNBLDBCQUNBLHlCQUNBLGdCQUlELDBDQUVDLFVBQ0Esb0JBQ0EsbUJBQ0EsZ0JBR0Qsd0JBRUMsYXJCMEpNLDBDcUI1SlAsd0JBS0UsNEJBR0QsMkJBQ0MsZ0NBQ0Esb0NBS0QsMkJBQ0MsY0FDQSwrQkFDQSxvQ3JCMElLLDBDcUI3SU4sMkJBTUUsbUJBSUYsMkJBQ0MsY3JCa0lLLDBDcUJuSU4sMkJBSUUsbUJBQ0EsZ0NBS0gsMkNBQ0Msb0JyQndITSwwQ3FCekhQLDJDQUlFLGdCQUNBLDhCckJvSEssMENxQmhIUCwwQ0FFRSxnQkFDQSw4QnJCNkdLLDBDc0JoTFAsK0NBRUUsMkJBSUYsa0RBQ0Msa0JBQ0EsaUJBQ0EsZ0JBQ0EsNkJBR0QsK0NBQ0Msa0JBQ0EsUUFDQSxVQUNBLG9EQUVBLHlEQUNDLFVBR0QsbURBQ0MsV0FDQSxZQUNBLGlCQUlGLGlEQUNDLDRCQUdELCtDQUNDLDBCdEI2SU0sMENzQjlJUCwrQ0FJRSxrQkFDQSxjQUNBLGFBQ0Esa0JBSUYsOENBQ0MsYUFDQSxpQkFDQSxnQkNuREYsZ0JBRUMsMEJBQ0EsZ0JBQ0EsNkJBRUEsdUNBQ0MsbUJDUEYsa0JBQ0MsYUFDQSxpQkFDQSx5QkFDQSxnQkNKRCxhQUNDLHlCQUVBLGtDQUNDLG1CQUdELGtDQUNDLDJCQ1BELDhCQUNDLFNDQ0QsbUNBQ0MsNkJBR0Qsa0NBQ0MsZ0JBQ0EsZ0IzQjBLTSwwQzJCNUtQLGtDQUtFLGlCQUlGLG1DQUNDLGtCQUNBLGlCQUNBLGdCQUNBLDZCQUVBLHVDQUNDLFdBQ0EsWUFDQSxpQkFJRixxQ0FDQyw0QkM3QkQsbURBQ0MsNEJDRkYsYUFDQyx5QkFFQSxpQ0FDQyxrQkFFQSxnQ0FDQSxnQkFDQSwrQkFHRCxpQ0FDQyxXQUNBLFlBQ0EsbUJBSUQsa0NBQ0Msa0JBQ0EsUUFFQSxzQ0FDQyxXQUNBLFlBQ0EsaUJBS0QseUNBQ0MsV0FDQSxrQkFDQSxRQUNBLCtCQUNBLFlBS0Ysa0NBQ0Msa0JBQ0EsUUFDQSxXQUNBLFlBQ0EsU0FHRCxnQ0FDQyxrQkFDQSxRQUNBLGFBQ0EsbUJBQ0EsdUJBQ0EsV0FDQSxVQUNBLFNBQ0EseUJBQ0EsdUJBQ0Esd0JBQ0EsOENBQ0EsZ0JBQ0EsNEJBQ0EsNEJBQ0Esa0NBQ0EseUJBQ0EsZUFDQSxpREFFQSxvRkFFQyxtQkFRRixpQ0FDQyxrQkFDQSxTQUNBLHdCQUNBLGlCQUNBLG1CQUNBLHNCQUdELGdDQUNDLGFBQ0EsbUJBQ0EsdUJBQ0EsZUFDQSxnQkFDQSw4QkFDQSxrQkFHQSx1Q0FDQyxXQUNBLFFBQ0EsU0FDQSxxQkFDQSxtQkFDQSx1Q0FDQSxvRUFJRixtQ0FDQyw0QkFHRCwyQ0FDQyxhQUdELDZDQUNDLFVDdEhGLG9CQUNDIiwiZmlsZSI6Im1haW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcImZvdW5kYXRpb24vdXRpbC91dGlsXCIgYXMgZnU7XG5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIERFU0lHTiBUT0tFTlNcbi8vIFNvdXJjZSBvZiB0cnV0aDogRmlnbWEgXCJIdXNzYWluICYgR3VuYXJhdG5lXCIsIGZyYW1lIDAwIERpcmVjdGlvbi5cbi8vIERlY2xhcmVkIG9uIDpyb290IGZvciB0aGUgc2l0ZSBhbmQgb24gdGhlIGVkaXRvciB3cmFwcGVyIHNvXG4vLyBibG9jayBwcmV2aWV3cyBpbmhlcml0IHRoZSBzYW1lIHZhbHVlcy5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLmVkaXRvci1zdHlsZXMtd3JhcHBlcixcbjpyb290IHtcblx0Ly8gQ09MT1VSXG5cdC0tcGFwZXI6ICNmMmYwZWE7IC8vIGdyb3VuZFxuXHQtLWluazogIzE2MTMwZjsgLy8gdGV4dFxuXHQtLWluay03MDogIzUxNGQ0ODsgLy8gc2Vjb25kYXJ5IHRleHRcblx0LS1pbmstNTU6ICM3ODc0NmU7IC8vIGNhcHRpb25zXG5cdC0taW5rLTM4OiAjOWU5YTk0OyAvLyBsYWJlbHNcblx0LS1ydWxlOiAjZDZkM2NiOyAvLyBoYWlybGluZXMsIGltYWdlIHBsYWNlaG9sZGVyc1xuXHQtLWJyaWNrOiAjOWMzYjIxOyAvLyBhY2NlbnQ6IGxpbmtzIGFuZCBob3ZlciBvbmx5XG5cdC0tc2NyZWVuOiAjMTAwZDBhOyAvLyB2aWRlbyBncm91bmRcblx0LS1vbi1zY3JlZW46IHJnYmEoMjQyLCAyNDAsIDIzNSwgMC44Mik7IC8vIHRleHQgb24gdmlkZW8gZ3JvdW5kXG5cdC0tdm9pZDogIzAwMDsgLy8gYmVoaW5kIHRoZSBwYWdlLCB2aXNpYmxlIGR1cmluZyB0cmFuc2l0aW9uc1xuXG5cdC8vIFRZUEVcblx0LS1zYW5zOiBcImluc3RydW1lbnQtc2Fucy12YXJpYWJsZVwiLCBcIkluc3RydW1lbnQgU2Fuc1wiLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG5cdC0tc2VyaWY6IG1pbmlvbi1wcm8sIFwiTWluaW9uIFByb1wiLCBHZW9yZ2lhLCBzZXJpZjtcblxuXHQtLXNpemUtc3RpbGw6IDAuNjI1cmVtOyAvLyAxMHB4XG5cdC0tc2l6ZS1sYWJlbDogMC42NTYyNXJlbTsgLy8gMTAuNXB4XG5cdC0tc2l6ZS1uYXY6IDAuNjg3NXJlbTsgLy8gMTFweFxuXHQtLXNpemUtY2FwdGlvbjogMC42ODc1cmVtOyAvLyAxMXB4XG5cdC0tc2l6ZS1ib2R5OiAwLjgxMjVyZW07IC8vIDEzcHhcblx0LS1zaXplLXN1YmhlYWQ6IDEuMDYyNXJlbTsgLy8gMTdweFxuXHQtLXNpemUtaGVhZGluZzogMS4zMTI1cmVtOyAvLyAyMXB4LCB0aGUgbGFyZ2VzdCB0eXBlIG9uIHRoZSBzaXRlXG5cblx0LS10cmFjay1uYXY6IDAuMTRlbTtcblx0LS10cmFjay1sYWJlbDogMC4xNmVtO1xuXHQtLXRyYWNrLWNhcHRpb246IDAuMDZlbTtcblx0LS10cmFjay1ib2R5OiAwLjAwMmVtO1xuXHQtLXRyYWNrLW5hbWU6IDAuMDFlbTtcblxuXHQtLWxoLWJvZHk6IDEuNTU7XG5cdC0tbGgtdGlnaHQ6IDEuNDU7XG5cdC0tbGgtc3ViaGVhZDogMS4yO1xuXG5cdC8vIFNQQUNFXG5cdC0tc3BhY2UtM3hzOiAwLjM3NXJlbTsgLy8gNlxuXHQtLXNwYWNlLTJ4czogMC41cmVtOyAvLyA4XG5cdC0tc3BhY2UteHM6IDAuNzVyZW07IC8vIDEyXG5cdC0tc3BhY2UtczogMS4xMjVyZW07IC8vIDE4XG5cdC0tc3BhY2UtbTogMS42MjVyZW07IC8vIDI2XG5cdC0tc3BhY2UtbDogMi41cmVtOyAvLyA0MFxuXHQtLXNwYWNlLXhsOiAzLjVyZW07IC8vIDU2XG5cdC0tc3BhY2UtMnhsOiA0LjVyZW07IC8vIDcyXG5cblx0Ly8gTEFZT1VUXG5cdC0tcGFnZS14OiAxLjEyNXJlbTsgLy8gMThweCBvbiBtb2JpbGVcblx0LS1wYWdlLXRvcDogMS4xMjVyZW07XG5cdC0tc2l0ZTogNzMuNzVyZW07IC8vIDExODBcblx0LS1pbm5lcjogNTYuMjVyZW07IC8vIDkwMFxuXHQtLW1lYXN1cmU6IDQwcmVtOyAvLyA2NDBcblx0LS1jYXJvdXNlbDogMzIuNXJlbTsgLy8gNTIwXG5cdC0tbGlzdDogMjAuNjI1cmVtOyAvLyAzMzBcblx0LS1uYXYtZ2FwOiAxLjc1cmVtOyAvLyAyOCwgYSB0b3VjaCB3aWRlciB0aGFuIHRoZSBGaWdtYSAxOFxuXHQtLWhlYWRlci1oZWlnaHQ6IDQuNzVyZW07IC8vIGZhbGxiYWNrOyBKUyBtZWFzdXJlcyB0aGUgZml4ZWQgaGVhZGVyXG5cblx0Ly8gTU9USU9OXG5cdC0tZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLjE5LCAxLCAwLjIyLCAxKTtcblx0LS1kdXJhdGlvbjogMC4zcztcblx0LS1kdXJhdGlvbi1mYWRlOiAxLjJzO1xuXG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0LS1wYWdlLXg6IGNsYW1wKDEuMTI1cmVtLCA5LjAzdncsIDguMTI1cmVtKTsgLy8gMTMwcHggYXQgMTQ0MFxuXHRcdC0tcGFnZS10b3A6IDEuMzc1cmVtO1xuXHRcdC0taGVhZGVyLWhlaWdodDogMy41cmVtO1xuXHR9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIFBhdGNoIHRvIGZpeCBpc3N1ZSAjMTIwODBcbiQtemYtc2l6ZTogbnVsbDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBcInNtYWxsXCI6IDAsXG4gIFwibWVkaXVtXCI6IDY0MHB4LFxuICBcImxhcmdlXCI6IDEwMjRweCxcbiAgXCJ4bGFyZ2VcIjogMTIwMHB4LFxuICBcInh4bGFyZ2VcIjogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBIaURQSSBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcyBmb3IgcmVzb2x1dGlvbnMuXG4vLy8gVmFsdWVzIG11c3QgcmVwcmVzZW50IHRoZSBkZXZpY2UgcGl4ZWxzIC8gd2ViIHBpeGVscyByYXRpb24gYW5kIGJlIHVuaXRsZXNzIG9yIGluIERQUFguXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHMtaGlkcGk6IChcbiAgXCJoaWRwaS0xXCI6IDEsXG4gIFwiaGlkcGktMS01XCI6IDEuNSxcbiAgXCJoaWRwaS0yXCI6IDIsXG4gIFwicmV0aW5hXCI6IDIsXG4gIFwiaGlkcGktM1wiOiAzXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1RoZSBmaXJzdCBrZXkgaW4gdGhlICRicmVha3BvaW50cyBtYXAgbXVzdCBoYXZlIGEgdmFsdWUgb2YgXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFdlYiBzdGFuZGFyZCBQaXhlbHMgcGVyIGluY2guICgxZGRweCAvICRzdGQtd2ViLWRwaSkgPSAxZHBpXG4gIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy0zLyNhYnNvbHV0ZS1sZW5ndGhzXG4gICRzdGQtd2ViLWRwaTogOTY7XG5cbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBvZiB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnRcbiAgJGJwLW5leHQ6IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWluOiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogbnVsbDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIElmIG5hbWVkLCBuYW1lIG9mIHRoZSBicmVha3BvaW50XG4gICRuYW1lOiBudWxsO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIEhpRFBJIGJyZWFrcG9pbnRcbiAgJGhpZHBpOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cblxuICAvLyBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBnaXZlbiwgZ2V0IGl0cyB2YWx1ZSBmcm9tIHRoZSAkYnJlYWtwb2ludHMvJGJyZWFrcG9pbnRzLWhpZHBpIG1hcC5cbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLWhpZHBpLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0LW51bWJlcigkYnJlYWtwb2ludHMtaGlkcGksICRicCk7XG4gICAgICAkaGlkcGk6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgYCRicmVha3BvaW50c2Agb3IgYCRicmVha3BvaW50cy1oaWRwaWAgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJG5hbWUgYW5kICRkaXIgPT0gJ29ubHknIHtcbiAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSAnb25seScgYW5kICd1cCcgaGF2ZSBhIG1pbiBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ3VwJyB7XG4gICAgJGJwLW1pbjogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgfVxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ2Rvd24nIGhhdmUgYSBtYXggbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSB2YWx1ZSwgdXNlIGl0IGFzIG1heCBsaW1pdC5cbiAgICBAaWYgbm90ICRuYW1lIHtcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIG5hbWVkLCB0aGUgbWF4IGxpbWl0IGlzIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCAtIDFweC5cbiAgICBAZWxzZSBpZiAkYnAtbmV4dCB7XG4gICAgICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gICAgICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCAkYnAtbmV4dCAtIGRpdmlkZSgxLCAkc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dC1udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHQtbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dC1udW1iZXIpIHtcbiAgICAgICRuZXh0LW51bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dC1udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmQta2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kLWtleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmQta2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4ZXNcblxuQG1peGluIGZvdW5kYXRpb24tbm9ybWFsaXplKCkge1xuICAvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbiAgLy8gRG9jdW1lbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuXG4gIGh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyXG4gIH1cblxuICAvLyBTZWN0aW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gIC8vIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvLyBHcm91cGluZyBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbiAgaHIge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAxXG4gICAgaGVpZ2h0OiAwOyAvLyAxXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cblxuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMWVtOyAvLyAyXG4gIH1cblxuICAvLyBUZXh0LWxldmVsIHNlbWFudGljc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cblxuICBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gIC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cbiAgYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IDA7IC8vIDFcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8vIDJcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cbiAgYixcbiAgc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGNvZGUsXG4gIGtiZCxcbiAgc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyAxXG4gICAgZm9udC1zaXplOiAxZW07IC8vIDJcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbiAgfVxuXG4gIC8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICAvLyBhbGwgYnJvd3NlcnMuXG5cbiAgc3ViLFxuICBzdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICBzdWIge1xuICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgfVxuXG4gIHN1cCB7XG4gICAgdG9wOiAtMC41ZW07XG4gIH1cblxuICAvLyBFbWJlZGRlZCBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cblxuICBpbWcge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgfVxuXG4gIC8vIEZvcm1zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblxuICBidXR0b24sXG4gIGlucHV0LFxuICBvcHRncm91cCxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8vIDFcbiAgICBmb250LXNpemU6IDEwMCU7IC8vIDFcbiAgICBsaW5lLWhlaWdodDogMS4xNTsgLy8gMVxuICAgIG1hcmdpbjogMDsgLy8gMlxuICB9XG5cbiAgLy8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gIC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cbiAgYnV0dG9uLFxuICBpbnB1dCB7IC8vIDFcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cbiAgYnV0dG9uLFxuICBzZWxlY3QgeyAvLyAxXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG5cbiAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXG4gIGJ1dHRvbjotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG4gIFt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG4gIFt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG5cbiAgZmllbGRzZXQge1xuICAgIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gIC8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAgLy8gMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICAvLyAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cblxuICBsZWdlbmQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDFcbiAgICBjb2xvcjogaW5oZXJpdDsgLy8gMlxuICAgIGRpc3BsYXk6IHRhYmxlOyAvLyAxXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gM1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG5cbiAgcHJvZ3Jlc3Mge1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuXG4gIHRleHRhcmVhIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG5cbiAgW3R5cGU9XCJjaGVja2JveFwiXSxcbiAgW3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIHBhZGRpbmc6IDA7IC8vIDJcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cblxuICBbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIDFcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMlxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICAvLyAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG5cbiAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDFcbiAgICBmb250OiBpbmhlcml0OyAvLyAyXG4gIH1cblxuICAvLyBJbnRlcmFjdGl2ZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG5cbiAgZGV0YWlscyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc3VtbWFyeSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICB9XG5cbiAgLy8gTWlzY1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cblxuICB0ZW1wbGF0ZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuXG4gIFtoaWRkZW5dIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gRGlzYWJsZSBvdXRsaW5lIHdoZW4gaW50ZW50IGlzIGNsZWFybHkgbW91c2UgYW5kIHRvdWNoXG4gIFtkYXRhLXdoYXRpbnRlbnQ9XCJtb3VzZVwiXSxcbiAgW2RhdGEtd2hhdGludGVudD1cInRvdWNoXCJdLFxuICBbZGF0YS13aGF0aW5wdXQ9XCJtb3VzZVwiXSxcbiAgW2RhdGEtd2hhdGlucHV0PVwidG91Y2hcIl0ge1xuICAgICosICo6Zm9jdXMge1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlIGlPUyBjYWxsb3V0cyB3aGVuIGRyYWdnYWJsZSBpcyBmYWxzZVxuICBbZHJhZ2dhYmxlPWZhbHNlXSB7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tY29sb3ItbGl0ZXJhbHMsIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcblxuLy8vL1xuLy8vIEBncm91cCBnbG9iYWxcbi8vLy9cblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8vIEZvbnQgc2l6ZSBhdHRyaWJ1dGUgYXBwbGllZCB0byBgPGh0bWw+YCBhbmQgYDxib2R5PmAuIFdlIHVzZSAxMDAlIGJ5IGRlZmF1bHQgc28gdGhlIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHdpZHRoIG9mIHlvdXIgc2l0ZS4gVXNlZCBieSB0aGUgZ3JpZCB0byBkZXRlcm1pbmUgcm93IHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTIwMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGxpbmUgaGVpZ2h0IGZvciBhbGwgdHlwZS4gYCRnbG9iYWwtbGluZWhlaWdodGAgaXMgMjRweCB3aGlsZSBgJGdsb2JhbC1mb250LXNpemVgIGlzIDE2cHhcbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbGluZWhlaWdodDogMS41ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JzIHVzZWQgZm9yIGJ1dHRvbnMsIGNhbGxvdXRzLCBsaW5rcywgZXRjLiBUaGVyZSBtdXN0IGFsd2F5cyBiZSBhIGNvbG9yIGNhbGxlZCBgcHJpbWFyeWAuXG4vLy8gQHR5cGUgTWFwXG4kZm91bmRhdGlvbi1wYWxldHRlOiAoXG4gIFwicHJpbWFyeVwiOiAjMTc3OWJhLFxuICBcInNlY29uZGFyeVwiOiAjNzY3Njc2LFxuICBcInN1Y2Nlc3NcIjogIzNhZGI3NixcbiAgXCJ3YXJuaW5nXCI6ICNmZmFlMDAsXG4gIFwiYWxlcnRcIjogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHNhZmUgcGFkZGluZyBvbiB0aGUgYm9keSBmb3Igbm9uLXJlY3Rhbmd1bGFyIGRldmljZXMgKGkuZS4gcGhvbmVzIHdpdGggbm90Y2hlcylcbi8vLyBAdHlwZSBCb29sZWFuXG4kYm9keS1zYWZlLXBhZGRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgYW50aWFsaWFzZWQgdHlwZSwgdXNpbmcgdGhlIGAtd2Via2l0LWZvbnQtc21vb3RoaW5nYCBhbmQgYC1tb3otb3N4LWZvbnQtc21vb3RoaW5nYCBDU1MgcHJvcGVydGllcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBtYXJnaW4gb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIHBhZGRpbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwb3NpdGlvbmluZyBvbiBjb21wb25lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1wb3NpdGlvbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCBmb250IHdlaWdodCB1c2VkIGZvciBub3JtYWwgdHlwZS5cbi8vLyBAdHlwZSBLZXl3b3JkIHwgTnVtYmVyXG4kZ2xvYmFsLXdlaWdodC1ub3JtYWw6IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCBmb250IHdlaWdodCB1c2VkIGZvciBib2xkIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGEgYm9yZGVyIHJhZGl1cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcmFkaXVzOiAwICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gQ2FuIGJlIG92ZXJ3cml0dGVuIGF0IGluZGl2aWR1YWwgbWVudSBjb21wb25lbnQgbGV2ZWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1lbnUtcGFkZGluZzogMC43cmVtIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIG1lbnUgc3R5bGVzLiBOZXN0ZWQgbWFyZ2luIGZvciBzdWJtZW51LlxuJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgQ1NTLiBDYW4gYmUgZWl0aGVyIGBsdHJgIG9yIGBydGxgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtdGV4dC1kaXJlY3Rpb246IGx0ciAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBmb3IgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgaXQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlZCByZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBwcm90b3R5cGVzIGlmIGFwcGxpY2FibGVcbi8vLyBAdHlwZSBCb29sZWFuXG4kZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50czogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBCdXR0b24gY3Vyc29yJ3MgdmFsdWUsIGBhdXRvYCBieSBkZWZhdWx0XG4vLy8gQHR5cGUgS2V5d29yZFxuJGdsb2JhbC1idXR0b24tY3Vyc29yOiBhdXRvICFkZWZhdWx0O1xuXG5AaWYgbm90IG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpIHtcbiAgQGVycm9yICdJbiAkZm91bmRhdGlvbi1wYWxldHRlLCB5b3UgbXVzdCBoYXZlIGEgY29sb3IgbmFtZWQgXCJwcmltYXJ5XCIuJztcbn1cblxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIHRleHQgZGlyZWN0aW9uXG4kZ2xvYmFsLWxlZnQ6IGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCByaWdodCwgbGVmdCk7XG4kZ2xvYmFsLXJpZ2h0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgbGVmdCwgcmlnaHQpO1xuXG4vLyBJbnRlcm5hbCB2YXJpYWJsZSB0aGF0IGNvbnRhaW5zIHRoZSBmbGV4IGp1c3RpZnlpbmcgb3B0aW9uc1xuJC16Zi1mbGV4LWp1c3RpZnk6IC16Zi1mbGV4LWp1c3RpZnkoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbik7XG5cbi8vLyBHbG9iYWwgdG9sZXJhbmNlIGZvciBjb2xvciBwaWNrIGNvbnRyYXN0LlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZTogMCAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGVzIHVzZWQgZm9yIGNvbG9yc1xuQGluY2x1ZGUgYWRkLWZvdW5kYXRpb24tY29sb3JzO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzIHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1ub3JtYWxpemU7XG5cbiAgLy8gVGhlc2Ugc3R5bGVzIGFyZSBhcHBsaWVkIHRvIGEgPG1ldGE+IHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0XG4gIC5mb3VuZGF0aW9uLW1xIHtcbiAgICBmb250LWZhbWlseTogJyN7LXpmLWJwLXNlcmlhbGl6ZSgkYnJlYWtwb2ludHMpfSc7XG4gIH1cblxuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBTZXQgYm94LXNpemluZyBnbG9iYWxseSB0byBoYW5kbGUgcGFkZGluZyBhbmQgYm9yZGVyIHdpZHRoc1xuICAqLFxuICAqOjpiZWZvcmUsXG4gICo6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gRGVmYXVsdCBib2R5IHN0eWxlc1xuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIEBpZiAoJGJvZHktc2FmZS1wYWRkaW5nKSB7XG4gICAgICAvLyB1c2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYWNjb3VudCBmb3Igbm9uLXJlY3Rhbmd1bGFyIGRpc3BsYXlzIGUuZy4gcGhvbmVzIHdpdGggbm90Y2hlc1xuICAgICAgcGFkZGluZy10b3A6IGVudihzYWZlLWFyZWEtaW5zZXQtdG9wKTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQpO1xuICAgICAgcGFkZGluZy1ib3R0b206IGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tKTtcbiAgICAgIHBhZGRpbmctbGVmdDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcblxuICAgIEBpZiAoJGJvZHktYW50aWFsaWFzZWQpIHtcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIC8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgdGFrZXMgb24gaGVpZ2h0IGF1dG9tYXRpY2FsbHlcbiAgdGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gTWFrZSBzZWxlY3QgZWxlbWVudHMgYXJlIDEwMCUgd2lkdGggYnkgZGVmYXVsdFxuICBzZWxlY3Qge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBTdHlsZXMgR29vZ2xlIE1hcHMgYW5kIE1hcFF1ZXN0IGVtYmVkcyBwcm9wZXJseVxuICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWlkc1xuICAubWFwX2NhbnZhcyxcbiAgLm1xYS1kaXNwbGF5IHtcbiAgICBpbWcsXG4gICAgZW1iZWQsXG4gICAgb2JqZWN0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcbiAgYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjdXJzb3I6ICRnbG9iYWwtYnV0dG9uLWN1cnNvcjtcbiAgfVxuXG4gIC8vIFByZXZlbnQgdGV4dCBvdmVyZmxvdyBvbiBwcmVcbiAgcHJlIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cblxuICAvLyBNYWtlIHJlc2V0IGluaGVyaXQgZm9udC1mYW1pbHkgaW5zdGVhZCBvZiBzZXR0aW5ncyBzYW5zLXNlcmlmXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIEludGVybmFsIGNsYXNzZXMgdG8gc2hvdy9oaWRlIGVsZW1lbnRzIGluIEphdmFTY3JpcHRcbiAgLmlzLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5cbiR1bml0LXdhcm5pbmdzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuIGRpdmlkZSgkbnVtLCAkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogZGl2aWRlKCRiYXNlLCAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEBpZiAkdW5pdC13YXJuaW5ncyB7XG4gICAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgfVxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogZGl2aWRlKHN0cmlwLXVuaXQoJHZhbHVlKSwgc3RyaXAtdW5pdCgkYmFzZSkpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiBkaXZpZGUoJGJhc2UsIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldCdzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBkaXZpZGUoc3RyaXAtdW5pdCgkdmFsdWUpLCBzdHJpcC11bml0KCRiYXNlKSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlciB0aGFuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuIGRpdmlkZSgkdmFsdWUsIHN0cmlwLXVuaXQoJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG4kLXpmLWJwLXZhbHVlOiBudWxsO1xuXG4vLy8gQ3JlYXRlcyBhbiBpbm5lciBib3gtc2hhZG93IGZvciBvbmx5IG9uZSBzaWRlXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0aGUgc2hhZG93IGlzIHN1cHBvc2VkIHRvIGFwcGVhci4gQ2FuIGJlIGB0b3BgLCBgbGVmdGAsIGByaWdodGAgb3IgYGJvdHRvbWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIC0gV2lkdGggZm9yIHRoZSB0YXJnZXQgc2lkZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgLSBDb2xvciBvZiB0aGUgc2hhZG93LlxuQG1peGluIGlubmVyLXNpZGUtc2hhZG93KFxuICAkc2lkZTogYm90dG9tLFxuICAkc2l6ZTogMjBweCxcbiAgJGNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSlcbikge1xuXG4gICRoZWxwZXI6IHJvdW5kKCRzaXplICogMC42NSk7XG5cbiAgQGlmICgkc2lkZSA9PSB0b3ApIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwICRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gbGVmdCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICRoZWxwZXIgMCAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSByaWdodCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0ICgtMSkqJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IGJvdHRvbSkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgKC0xKSokaGVscGVyICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBDU1MgdHJpYW5nbGUsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBkcm9wZG93biBhcnJvd3MsIGRyb3Bkb3duIHBpcHMsIGFuZCBtb3JlLiBVc2UgdGhpcyBtaXhpbiBpbnNpZGUgYSBgJjo6YmVmb3JlYCBvciBgJjo6YWZ0ZXJgIHNlbGVjdG9yLCB0byBhdHRhY2ggdGhlIHRyaWFuZ2xlIHRvIGFuIGV4aXN0aW5nIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRyaWFuZ2xlLXNpemUgLSBXaWR0aCBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJHRyaWFuZ2xlLWNvbG9yIC0gQ29sb3Igb2YgdGhlIHRyaWFuZ2xlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHRyaWFuZ2xlLWRpcmVjdGlvbiAtIERpcmVjdGlvbiB0aGUgdHJpYW5nbGUgcG9pbnRzLiBDYW4gYmUgYHVwYCwgYHJpZ2h0YCwgYGRvd25gLCBvciBgbGVmdGAuXG5AbWl4aW4gY3NzLXRyaWFuZ2xlKFxuICAkdHJpYW5nbGUtc2l6ZSxcbiAgJHRyaWFuZ2xlLWNvbG9yLFxuICAkdHJpYW5nbGUtZGlyZWN0aW9uXG4pIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAkdHJpYW5nbGUtc2l6ZTtcblxuICBjb250ZW50OiAnJztcblxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gZG93bikge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiAkdHJpYW5nbGUtY29sb3IgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IHVwKSB7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvcjtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIG1lbnUgaWNvbiB3aXRoIGEgc2V0IHdpZHRoLCBoZWlnaHQsIG51bWJlciBvZiBiYXJzLCBhbmQgY29sb3JzLiBUaGUgbWl4aW4gdXNlcyB0aGUgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIHRoZSBiYXJzIHRvIGRldGVybWluZSBzcGFjaW5nLiA8ZGl2IGNsYXNzPVwiZG9jcy1leGFtcGxlLWJ1cmdlclwiPjwvZGl2PlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3ItaG92ZXIgWyRkYXJrLWdyYXldIC0gQ29sb3IgdG8gdXNlIHdoZW4gdGhlIGljb24gaXMgaG92ZXJlZCBvdmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzIwcHhdIC0gV2lkdGggb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgWzE2cHhdIC0gSGVpZ2h0IG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFsycHhdIC0gSGVpZ2h0IG9mIGluZGl2aWR1YWwgYmFycyBpbiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhcnMgWzNdIC0gTnVtYmVyIG9mIGJhcnMgaW4gdGhlIGljb24uXG5AbWl4aW4gaGFtYnVyZ2VyKFxuICAkY29sb3I6ICRibGFjayxcbiAgJGNvbG9yLWhvdmVyOiAkZGFyay1ncmF5LFxuICAkd2lkdGg6IDIwcHgsXG4gICRoZWlnaHQ6IDE2cHgsXG4gICR3ZWlnaHQ6IDJweCxcbiAgJGJhcnM6IDNcbikge1xuICAvLyBib3gtc2hhZG93IENTUyBvdXRwdXRcbiAgJHNoYWRvdzogKCk7XG4gICRob3Zlci1zaGFkb3c6ICgpO1xuXG4gIC8vIFNwYWNpbmcgYmV0d2VlbiBiYXJzIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgaWNvbiBhbmQgdGhlIHdlaWdodCBvZiBlYWNoIGJhclxuICAkc3BhY2luZzogZGl2aWRlKCRoZWlnaHQgLSAoJHdlaWdodCAqICRiYXJzKSwgJGJhcnMgLSAxKTtcblxuICBAaWYgdW5pdCgkc3BhY2luZykgPT0gJ3B4JyB7XG4gICAgJHNwYWNpbmc6IGZsb29yKCRzcGFjaW5nKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICRvZmZzZXQ6ICgkd2VpZ2h0ICsgJHNwYWNpbmcpICogKCRpIC0gMSk7XG4gICAgJHNoYWRvdzogYXBwZW5kKCRzaGFkb3csIDAgJG9mZnNldCAwICRjb2xvciwgY29tbWEpO1xuICB9XG5cbiAgLy8gSWNvbiBjb250YWluZXJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIC8vIEljb24gYmFyc1xuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3c7XG5cbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIEhvdmVyIHN0YXRlXG4gIEBpZiAkY29sb3ItaG92ZXIge1xuICAgIC8vIEdlbmVyYXRlIENTU1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJhcnMge1xuICAgICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAgICRob3Zlci1zaGFkb3c6IGFwcGVuZCgkaG92ZXItc2hhZG93LCAwICRvZmZzZXQgMCAkY29sb3ItaG92ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAmOmhvdmVyOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaG92ZXI7XG4gICAgICBib3gtc2hhZG93OiAkaG92ZXItc2hhZG93O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRvd253YXJkLWZhY2luZyB0cmlhbmdsZSBhcyBhIGJhY2tncm91bmQgaW1hZ2UgdG8gYW4gZWxlbWVudC4gVGhlIGltYWdlIGlzIGZvcm1hdHRlZCBhcyBhbiBTVkcsIG1ha2luZyBpdCBlYXN5IHRvIGNoYW5nZSB0aGUgY29sb3IuIEJlY2F1c2UgSW50ZXJuZXQgRXhwbG9yZXIgZG9lc24ndCBzdXBwb3J0IGVuY29kZWQgU1ZHcyBhcyBiYWNrZ3JvdW5kIGltYWdlcywgYSBQTkcgZmFsbGJhY2sgaXMgYWxzbyBpbmNsdWRlZC5cbi8vLyBUaGVyZSBhcmUgdHdvIFBORyBmYWxsYmFja3M6IGEgYmxhY2sgdHJpYW5nbGUgYW5kIGEgd2hpdGUgdHJpYW5nbGUuIFRoZSBvbmUgdXNlZCBkZXBlbmRzIG9uIHRoZSBsaWdodG5lc3Mgb2YgdGhlIGlucHV0IGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYmxhY2tdIC0gQ29sb3IgdG8gdXNlIGZvciB0aGUgdHJpYW5nbGUuXG5AbWl4aW4gYmFja2dyb3VuZC10cmlhbmdsZSgkY29sb3I6ICRibGFjaykge1xuICAkcmdiOiAncmdiJTI4I3tyb3VuZChyZWQoJGNvbG9yKSl9LCAje3JvdW5kKGdyZWVuKCRjb2xvcikpfSwgI3tyb3VuZChibHVlKCRjb2xvcikpfSUyOSc7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2ZXJzaW9uPVwiMS4xXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAzMiAyNFwiPjxwb2x5Z29uIHBvaW50cz1cIjAsMCAzMiwwIDE2LDI0XCIgc3R5bGU9XCJmaWxsOiAjeyRyZ2J9XCI+PC9wb2x5Z29uPjwvc3ZnPicpO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDBcXDApIHtcbiAgICBAaWYgbGlnaHRuZXNzKCRjb2xvcikgPCA2MCUge1xuICAgICAgLy8gV2hpdGUgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFJcEpSRUZVZU5yRWtja05nREFNQkJmUmtFdDBPYlJCQmRzR1hVRGdtUWZLNFhoSDJtOGN6UUFBeTI3UjN0c3c0UWZlMng4dU9PNm9ZTGI2R2xPb3IzR0Yrc3dVUkFPbVVKK1J3dEVKczlXdlRHRVl4QlhxSTFNUUFaaENmVVFLUnpETVZqK1R3ckFJVjZqdlNVRWtZQXIxTFNrY3lUQmIvVitLWWZYN3hBZXVzcTNzTER0R0gza0VHQUNQV0lmbE5aZmhSUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBCbGFjayB0cmlhbmdsZVxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQVlDQVlBQUFDYlUvODBBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU1CSlJFRlVlTnJFbGxzT2hDQU1SVnN6QzlJbHpVN0tDbVZIVEpzb01XWU1VdHB5djlCZ2J1WFFCNVpTZGdCWVlZNHljZ0Jpdms4S1lGc1FNZk1pVFRCUDRvM25VekNLek9hYkxKYkx5Mi9nMzFldkdrQWdpblI0L1plZ0tINXFYM2JKQ3NjQTN0MHgza2dPNXRRRnloaEZmNTB4UnFGTGJ5TVVOSlF6Z3lqR1Mvd2dDcHZLcWtSQnB1V3JFNFY5ZCsxRTRkUFVYcUlnMTA3U1FPRS8yRFJReE13VER5Z0lJblZERVQ5VDNsQ29qLzZqL1ZDbUdqWk9sMmxLcFo4QUF3RFFQN3pJaW1ER0ZRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHRoZSBtaWNybyBjbGVhcmZpeCBoYWNrIHBvcHVsYXJpemVkIGJ5IE5pY29sYXMgR2FsbGFnaGVyLiBJbmNsdWRlIHRoaXMgbWl4aW4gb24gYSBjb250YWluZXIgaWYgaXRzIGNoaWxkcmVuIGFyZSBhbGwgZmxvYXRlZCwgdG8gZ2l2ZSB0aGUgY29udGFpbmVyIGEgcHJvcGVyIGhlaWdodC5cbi8vLyBUaGUgY2xlYXJmaXggaXMgYXVnbWVudGVkIHdpdGggc3BlY2lmaWMgc3R5bGVzIHRvIHByZXZlbnQgYm9yZGVycyBpbiBmbGV4Ym94IGVudmlyb25tZW50c1xuLy8vIEBsaW5rIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLyBNaWNybyBDbGVhcmZpeCBIYWNrXG4vLy8gQGxpbmsgaHR0cDovL2RhbmlzYWRlc2lnbmVyLmNvbS9ibG9nL2ZsZXhib3gtY2xlYXItZml4LXBzZXVkby1lbGVtZW50cy8gRmxleGJveCBmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmJlZm9yZSxcbiAgJjo6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNvbnRlbnQ6ICcgJztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC1iYXNpczogMDtcbiAgICAgIG9yZGVyOiAxO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG4vLy8gQWRkcyBDU1MgZm9yIGEgXCJxdWFudGl0eSBxdWVyeVwiIHNlbGVjdG9yIHRoYXQgYXV0b21hdGljYWxseSBzaXplcyBlbGVtZW50cyBiYXNlZCBvbiBob3cgbWFueSB0aGVyZSBhcmUgaW5zaWRlIGEgY29udGFpbmVyLlxuLy8vIEBsaW5rIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL3F1YW50aXR5LXF1ZXJpZXMtZm9yLWNzcyBRdWFudGl0eSBRdWVyaWVzIGZvciBDU1Ncbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IC0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gZGV0ZWN0LiBUaGUgaGlnaGVyIHRoaXMgbnVtYmVyIGlzLCB0aGUgbW9yZSBDU1MgdGhhdCdzIHJlcXVpcmVkIHRvIGNvdmVyIGVhY2ggbnVtYmVyIG9mIGl0ZW1zLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGVsZW0gW2xpXSAtIFRhZyB0byB1c2UgZm9yIHNpYmxpbmcgc2VsZWN0b3JzLlxuQG1peGluIGF1dG8td2lkdGgoJG1heCwgJGVsZW06IGxpKSB7XG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJG1heCB7XG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQsXG4gICAgJjpudGgtbGFzdC1jaGlsZCgjeyRpfSk6Zmlyc3QtY2hpbGQgfiAjeyRlbGVtfSB7XG4gICAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoMSwgJGkpKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFJlbW92ZXMgdGhlIGZvY3VzIHJpbmcgYXJvdW5kIGFuIGVsZW1lbnQgd2hlbiBhIG1vdXNlIGlucHV0IGlzIGRldGVjdGVkLlxuQG1peGluIGRpc2FibGUtbW91c2Utb3V0bGluZSB7XG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSAmIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi8vLyBNYWtlcyBhbiBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGFjY2Vzc2libGUgdG8ga2V5Ym9hcmRzIGFuZCBhc3Npc3RpdmUgZGV2aWNlcy5cbi8vLyBAbGluayBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5IEhpZGluZyBDb250ZW50IGZvciBBY2Nlc3NpYmlsaXR5XG4vLy8gQGxpbmsgaHR0cDovL2h1Z29naXJhdWRlbC5jb20vMjAxNi8xMC8xMy9jc3MtaGlkZS1hbmQtc2Vlay9cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGVuZm9yY2UgLSBJZiBgdHJ1ZWAsIHVzZSBgIWltcG9ydGFudGAgb24gYXBwbGllZCBwcm9wZXJ0aWVzXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUoXG4gICRlbmZvcmNlOiB0cnVlXG4pIHtcbiAgJGltcG9ydGFudDogaWYoJGVuZm9yY2UsICchaW1wb3J0YW50JywgbnVsbCk7XG5cbiAgcG9zaXRpb246IGFic29sdXRlICN7JGltcG9ydGFudH07XG4gIHdpZHRoOiAxcHggI3skaW1wb3J0YW50fTtcbiAgaGVpZ2h0OiAxcHggI3skaW1wb3J0YW50fTtcbiAgcGFkZGluZzogMCAjeyRpbXBvcnRhbnR9O1xuICBvdmVyZmxvdzogaGlkZGVuICN7JGltcG9ydGFudH07XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCkgI3skaW1wb3J0YW50fTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAjeyRpbXBvcnRhbnR9O1xuICBib3JkZXI6IDAgI3skaW1wb3J0YW50fTtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRlbmZvcmNlIC0gSWYgYHRydWVgLCB1c2UgYCFpbXBvcnRhbnRgIG9uIGFwcGxpZWQgcHJvcGVydGllc1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlLW9mZihcbiAgJGVuZm9yY2U6IHRydWVcbikge1xuICAkaW1wb3J0YW50OiBpZigkZW5mb3JjZSwgJyFpbXBvcnRhbnQnLCBudWxsKTtcblxuICBwb3NpdGlvbjogc3RhdGljICN7JGltcG9ydGFudH07XG4gIHdpZHRoOiBhdXRvICN7JGltcG9ydGFudH07XG4gIGhlaWdodDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICBvdmVyZmxvdzogdmlzaWJsZSAjeyRpbXBvcnRhbnR9O1xuICBjbGlwOiBhdXRvICN7JGltcG9ydGFudH07XG4gIHdoaXRlLXNwYWNlOiBub3JtYWwgI3skaW1wb3J0YW50fTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gdmVydGljYWwtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGhvcml6b250YWwtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuLy8vIEFic29sdXRlbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuLy8vIEl0ZXJhdGVzIHRocm91Z2ggYnJlYWtwb2ludHMgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnQtY2xhc3Nlc2AgYW5kIHByaW50cyB0aGUgQ1NTIGluc2lkZSB0aGUgbWl4aW4gYXQgZWFjaCBicmVha3BvaW50J3MgbWVkaWEgcXVlcnkuIFVzZSB0aGlzIHdpdGggdGhlIGdyaWQsIG9yIGFueSBvdGhlciBjb21wb25lbnQgdGhhdCBoYXMgcmVzcG9uc2l2ZSBjbGFzc2VzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkc21hbGwgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgc2tpcCB0aGUgYHNtYWxsYCBicmVha3BvaW50LiBVc2UgdGhpcyB3aXRoIGNvbXBvbmVudHMgdGhhdCBkb24ndCBwcmVmaXggY2xhc3NlcyB3aXRoIGBzbWFsbC1gLCBvbmx5IGBtZWRpdW0tYCBhbmQgdXAuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgaXRlcmF0ZSBvdmVyIGJyZWFrcG9pbnRzIHdpdGhvdXQgZG9pbmcgdGhlIG1lZGlhIHF1ZXJ5IGl0c2VsZi4gVXNlZnVsIGZvciBtb3JlIGNvbXBsZXggbWVkaWEgcXVlcnkgZ2VuZXJhdGlvbiBhcyBpbiB0aGUgbWFyZ2luIGdyaWQuXG5AbWl4aW4gLXpmLWVhY2gtYnJlYWtwb2ludChcbiAgJHNtYWxsOiB0cnVlLFxuICAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHM6IHRydWVcbikge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50LWluKGF1dG8sIC16Zi1ib29sKCRzbWFsbCksIC16Zi1ib29sKCRhdXRvLWluc2VydC1icmVha3BvaW50cykpIHtcbiAgICBAY29udGVudFxuICB9O1xufVxuXG4vLy8gSXRlcmF0ZXMgd2l0aCBgQGNvbnRlbnRgIHRocm91Z2ggdGhlIGdpdmVuIGxpc3Qgb2YgYnJlYWtwb2ludHMgYCRicmVha3BvaW50c2AuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYnJlYWtwb2ludHMgW2F1dG9dIC0gQnJlYWtwb2ludHMgdG8gaXRlcmF0ZXMgb24uIEl0IGNhbiBiZSBhIGJyZWFrcG9pbnQgbmFtZSwgbGlzdCBvZiBicmVha3BvaW50cyBvciBgYXV0b2AgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW58TnVsbH0gJHplcm8tYnJlYWtwb2ludCBbbnVsbF0gLSBXaGV0aGVyIHRoZSB6ZXJvLWJyZWFrcG9pbnQgKG9mdGVuIGBzbWFsbGApIG11c3QgYmUgaW5jbHVkZWQuIElmIGB0cnVlYCwgaXQgd2lsbCBhbHdheXMgYmUgYWRkZWQgdG8gdGhlIGxpc3QgaWYgbm90IGFscmVhZHkgdGhlcmUuIElmIGBmYWxzZWAsIGl0IHdpbGwgYWx3YXlzIGJlIHJlbW92ZWQuIERvZXMgbm90aGluZyBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbnxLZXl3b3JkfSAkbWVkaWEtcXVlcmllcyBbdHJ1ZV0gLSBXaGV0aGVyIG1lZGlhLXF1ZXJpZXMgbXVzdCBiZSBnZW5lcmF0ZWQuIElmIGBmb3ItbGlzdHNgLCBvbmx5IGdlbmVyYXRlIG1lZGlhLXF1ZXJpZXMgd2hlbiBgJGJyZWFrcG9pbnRzYCBpcyBhIGxpc3QuXG5AbWl4aW4gLXpmLWVhY2gtYnJlYWtwb2ludC1pbihcbiAgJGJyZWFrcG9pbnRzOiBhdXRvLFxuICAkemVyby1icmVha3BvaW50OiBudWxsLFxuICAkbWVkaWEtcXVlcmllczogdHJ1ZVxuKSB7XG4gICQtbGlzdDogKCk7XG4gICQtYnJlYWtwb2ludHMtaXMtYS1saXN0OiB0cnVlO1xuXG4gIC8vIFJldHJpZXZlIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnQocykgdG8gaXRlcmF0ZSBvbi5cbiAgQGlmICRicmVha3BvaW50cyA9PSBhdXRvIHtcbiAgICAkLWxpc3Q6ICRicmVha3BvaW50LWNsYXNzZXM7XG4gIH1cbiAgQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludHMpID09ICdsaXN0JyB7XG4gICAgJC1saXN0OiAkYnJlYWtwb2ludHM7XG4gIH1cbiAgQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludHMpID09ICdzdHJpbmcnIHtcbiAgICAkLWxpc3Q6ICgkYnJlYWtwb2ludHMpO1xuICAgICQtYnJlYWtwb2ludHMtaXMtYS1saXN0OiBmYWxzZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIFwiJGJyZWFrcG9pbnRzXCIgaW4gXCItemYtZWFjaC1icmVha3BvaW50LWluKClcIi4gR290IFwiI3skYnJlYWtwb2ludHN9XCIgKCN7dHlwZS1vZigkYnJlYWtwb2ludHMpfSkuIEV4cGVjdGVkIGEgYnJlYWtwb2ludCBuYW1lLCBhIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgXCJhdXRvXCInO1xuICB9XG5cbiAgLy8gQWRkIG9yIHJlbW92ZSB0aGUgemVybyBicmVha3BvaW50IGFjY29yZGluZyB0byBgJHplcm8tYnJlYWtwb2ludGBcbiAgQGlmICR6ZXJvLWJyZWFrcG9pbnQgPT0gdHJ1ZSB7XG4gICAgJC1saXN0OiBqb2luKCgkLXpmLXplcm8tYnJlYWtwb2ludCksIHNsLXJlbW92ZSgkLWxpc3QsICQtemYtemVyby1icmVha3BvaW50KSk7XG4gIH1cbiAgQGVsc2UgaWYgJHplcm8tYnJlYWtwb2ludCA9PSBmYWxzZSB7XG4gICAgJC1saXN0OiBzbC1yZW1vdmUoJC1saXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gIH1cblxuICAvLyBJdGVyYXRlIG9uIGJyZWFrcG9pbnQocylcbiAgQGVhY2ggJGJwIGluICQtbGlzdCB7XG4gICAgJG9sZC16Zi1zaXplOiBudWxsO1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgICAkb2xkLXpmLXNpemU6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgJC16Zi1zaXplOiAkYnAgIWdsb2JhbDtcblxuICAgIEBpZiAoJG1lZGlhLXF1ZXJpZXMgPT0gdHJ1ZSBvciAoJG1lZGlhLXF1ZXJpZXMgPT0gJ2Zvci1saXN0cycgYW5kICQtYnJlYWtwb2ludHMtaXMtYS1saXN0KSkge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnApIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHRoZSBgQGNvbnRlbnRgIHBhc3NlZCB0byB0aGUgbWl4aW4gd2l0aCBhIHZhbHVlIGAkLXpmLWJwLXZhbHVlYCByZWxhdGVkIHRvIGEgYnJlYWtwb2ludCwgZGVwZW5kaW5nIG9uIHRoZSBgJG5hbWVgIHBhcmFtZXRlcjpcbi8vLyAtIEZvciBhIHNpbmdsZSB2YWx1ZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoaXMgdmFsdWUuXG4vLy8gLSBGb3IgYSBicmVha3BvaW50IG5hbWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYC5cbi8vLyAtIEZvciBcImF1dG9cIiwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgIGFuZCBpcyBwYXNzZWQgdG8gYEBjb250ZW50YCwgd2hpY2ggaXMgbWFkZSByZXNwb25zaXZlIGZvciBlYWNoIGJyZWFrcG9pbnQgb2YgYCRtYXBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfEFycmF5fEtleXdvcmR9ICRuYW1lIFthdXRvXSAtIFNpbmdsZSB2YWx1ZSwgYnJlYWtwb2ludCBuYW1lLCBvciBsaXN0IG9mIGJyZWFrcG9pbnQgbmFtZXMgdG8gdXNlLiBcImF1dG9cIiBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIE1hcCBvZiBicmVha3BvaW50cyBhbmQgdmFsdWVzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuXG5AbWl4aW4gLXpmLWJyZWFrcG9pbnQtdmFsdWUoXG4gICRuYW1lOiBhdXRvLFxuICAkbWFwOiBudWxsXG4pIHtcbiAgQGlmICRuYW1lID09IGF1dG8gYW5kIHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcge1xuICAgIC8vIFwiYXV0b1wiXG4gICAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkaykge1xuICAgICAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkdiwgJG1hcCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBicmVha3BvaW50IG5hbWVcbiAgICBAaWYgdHlwZS1vZigkbmFtZSkgPT0gJ3N0cmluZycge1xuICAgICAgJGJwLXZhbHVlOiAtemYtZ2V0LWJwLXZhbCgkbWFwLCAkbmFtZSk7XG4gICAgICBAaWYgJGJwLXZhbHVlICE9IG51bGwge1xuICAgICAgICAkbmFtZTogJGJwLXZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJyZWFrcG9pbnQgdmFsdWVcbiAgICAkLXpmLWJwLXZhbHVlOiAkbmFtZSAhZ2xvYmFsO1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmFzZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEdyaWQgQ29udGFpbmVyXG4gIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XG5cbiAgICAmLmZsdWlkIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUpO1xuICAgIH1cblxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlLCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIC5ncmlkLXgge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQ7XG4gIH1cblxuICAuY2VsbCB7XG4gICAgQGluY2x1ZGUgeHktY2VsbChmdWxsLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuXG4gICAgJi5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcbiAgICB9XG5cbiAgICAmLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgfVxuICAuZ3JpZC14IHtcbiAgICA+IC5hdXRvIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF1dG8gd2lkdGhcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzICYgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzEwMjQ0XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgIC5ncmlkLXgge1xuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIjtcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2Uoc2hyaW5rKTtcbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tc2hyaW5rIHtcbiAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXG4gIC5ncmlkLW1hcmdpbi14Om5vdCguZ3JpZC14KSA+IC5jZWxsIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xuICA+IC4jeyRwcmVmaXh9YXV0byB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcblxuICAgID4gI3skY2xhc3NuYW1lfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xuKXtcbiAgI3skd3JhcHBpbmctc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgfVxuXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jZWxsIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsKCR2ZXJ0aWNhbDogJHZlcnRpY2FsLCAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgLy8gZm9yIGFsbCBwcmlvciBicmVha3BvaW50cy5cbiAgICAgIC8vIEFzIHRoZWlyIGd1dHRlciBpcyBkZWZpbmVkIHdpdGggdGhlaXIgd2lkdGgvaGVpZ2h0LCBldmVuIGJyZWFrcG9pbnQgd2l0aG91dCBhIG5ldyBtYXJnaW4gbXVzdCBiZVxuICAgICAgLy8gZ2VuZXJhdGVkIHRvIG5vdCBoYXZpbmcgdGhlaXIgd2lkdGgvaGVpZ2h0IG92ZXJyaWRlZCBieSByZS1hZGp1c3RlZCBzbWFsbGVyIGJyZWFrcG9pbnRzLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGJwLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIGdyaWRzIHdpdGhpbiBgZ3JpZC1jb250YWluZXIvZ3JpZC1jb250YWluZXIuZmx1aWRgXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRvdXRwdXQ6IChzaXplKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItdHlwZTogbWFyZ2luLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbGxhcHNlIGNsYXNzZXNcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE9mZnNldCBjbGFzc2VzXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBWZXJ0aWNhbCBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgLy8gQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgLy8gICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC5ncmlkLXkge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQodmVydGljYWwsIGZhbHNlKTtcblxuXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XG4gICAgfVxuXG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoYXV0bywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgfVxuXG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyBhbmQgUFJzIGZvciB0aGUgYmFja3N0b3J5OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDE2NFxuICAgICAgJHN0cjogXCI+IC4jeyQtemYtc2l6ZX0tc2hyaW5rLCA+IC4jeyQtemYtc2l6ZX0tZnVsbFwiO1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgJHN0cjogJHN0ciArIFwiLCA+IC4jeyQtemYtc2l6ZX0tI3skaX1cIjtcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICAvLyBSZXNwb25zaXZlIFwiYXV0b1wiIG1vZGlmaWVyXG4gICAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xuICAgICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcbiAgICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgICAgPiAuY2VsbCB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICB9XG5cbn1cblxuQG1peGluIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZDogdHJ1ZSwgJG1hcmdpbi1ncmlkOiB0cnVlKSB7XG4gIC8vIEZyYW1lZCBncmlkIHN0eWxlc1xuICAuZ3JpZC1mcmFtZSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcbiAgfVxuXG4gIC5jZWxsIC5ncmlkLWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgfVxuXG4gIC5jZWxsLWJsb2NrIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gIH1cblxuICAuY2VsbC1ibG9jay15IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICB9XG5cblxuICAuY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XG4gIH1cblxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcblxuICAgIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICAgIH1cblxuICAgIC5jZWxsIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2sge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2steSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdmVydGljYWwtZ3JpZCB7XG4gICAgLmdyaWQteSB7XG4gICAgICAmLmdyaWQtZnJhbWUge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAmLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgLmNlbGwge1xuICAgICAgLmdyaWQteS5ncmlkLWZyYW1lIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAuZ3JpZC15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKTtcbiAgICAuZ3JpZC1mcmFtZS5ncmlkLW1hcmdpbi15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkaW5jbHVkZS1iYXNlOiBmYWxzZSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgIC5ncmlkLW1hcmdpbi15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5hbCBjbGFzc2VzXG5AbWl4aW4gZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXMoXG4gICRiYXNlLWdyaWQ6IHRydWUsXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZSxcbiAgJGJsb2NrLWdyaWQ6IHRydWUsXG4gICRjb2xsYXBzZTogdHJ1ZSxcbiAgJG9mZnNldDogdHJ1ZSxcbiAgJHZlcnRpY2FsLWdyaWQ6IHRydWUsXG4gICRmcmFtZS1ncmlkOiB0cnVlXG4pIHtcblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIEBpZigkYmFzZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktYmFzZS1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIE1hcmdpbiBncmlkXG4gIEBpZigkbWFyZ2luLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBQYWRkaW5nIGdyaWRcbiAgQGlmKCRwYWRkaW5nLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZFxuICBAaWYoJGJsb2NrLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIC8vIENvbGxhcHNlIGd1dHRlcnNcbiAgQGlmKCRjb2xsYXBzZSkge1xuICAgIEBpbmNsdWRlIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gT2Zmc2V0IGd1dHRlcnNcbiAgQGlmKCRvZmZzZXQpIHtcbiAgICBAaW5jbHVkZSB4eS1vZmZzZXQtY2VsbC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBncmlkXG4gIEBpZigkdmVydGljYWwtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgQGlmICgkZnJhbWUtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZCwgJG1hcmdpbi1ncmlkKVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gQ3JlYXRlIGd1dHRlcnMgZm9yIGEgY2VsbC9jb250YWluZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGVpdGhlciBtYXJnaW4gb3IgcGFkZGluZy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJG5lZ2F0aXZlIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGFwcGx5IHRoZSBndXR0ZXIgYXMgYSBuZWdhdGl2ZSB2YWx1ZS4gQ29tbW9ubHkgdXNlZCBmb3IgbmVzdGVkIGdyaWRzLlxuQG1peGluIHh5LWd1dHRlcnMoXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRuZWdhdGl2ZTogZmFsc2Vcbikge1xuICAkb3BlcmF0b3I6IGlmKCRuZWdhdGl2ZSwgJy0nLCAnJyk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBkZWNsYXJlZCBuZWdhdGl2ZSBndXR0ZXJzLCBmb3JjZSB0eXBlIHRvIGBtYXJnaW4uXG4gICRndXR0ZXItdHlwZTogaWYoJG5lZ2F0aXZlLCAnbWFyZ2luJywgJGd1dHRlci10eXBlKTtcblxuICAvLyBPdXRwdXQgb3VyIG1hcmdpbiBndXR0ZXJzLlxuICBAaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdtYXAnKSB7XG4gICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoYXV0bywgJGd1dHRlcnMpIHtcbiAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpICogMC41O1xuXG4gICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogdW5xdW90ZShcIiN7JG9wZXJhdG9yfSN7JGd1dHRlcn1cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAqIDAuNTtcblxuICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxuICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06IHVucXVvdGUoXCIjeyRvcGVyYXRvcn0jeyRndXR0ZXJ9XCIpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBtYXggd2lkdGggY29udGFpbmVyLCBkZXNpZ25lZCB0byBob3VzZSB5b3VyIGdyaWQgY29udGVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRncmlkLWNvbnRhaW5lcl0gLSBhIHdpZHRoIHRvIGxpbWl0IHRoZSBjb250YWluZXIgdG8uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskZ3JpZC1jb250YWluZXItcGFkZGluZ10gLSBwYWRkaW5ncyBvZiB0aGUgY29udGFpbmVyLlxuQG1peGluIHh5LWdyaWQtY29udGFpbmVyKFxuICAkd2lkdGg6ICRncmlkLWNvbnRhaW5lcixcbiAgJHBhZGRpbmc6ICRncmlkLWNvbnRhaW5lci1wYWRkaW5nXG4pIHtcbiAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJHBhZGRpbmcsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG5cbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB5b3VyIGZsZXggY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW2hvcml6b250YWxdIC0gRWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uIG9mIGNlbGxzIHdpdGhpbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR3cmFwIFt0cnVlXSAtIElmIHRoZSBjZWxscyB3aXRoaW4gc2hvdWxkIHdyYXAgb3Igbm90LlxuQG1peGluIHh5LWdyaWQoXG4gICRkaXJlY3Rpb246IGhvcml6b250YWwsXG4gICR3cmFwOiB0cnVlXG4pIHtcbiAgJGRpcmVjdGlvbjogaWYoJGRpcmVjdGlvbiA9PSAnaG9yaXpvbnRhbCcsIHJvdywgY29sdW1uKTtcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogJGRpcmVjdGlvbiAkd3JhcDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgZmxleCB2YWx1ZSBmb3IgYSBjZWxsIGJhc2UuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQWNjZXB0cyBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2AsIGBncm93YCwgb3IgYW55IG90aGVyIHZhbHVlIHJlcHJlc2VudGluZyBhIGNlbGwgc2l6ZSAoaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGBzaHJpbmtgKS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBUaGUgY2VsbCBmbGV4IHByb3BlcnR5IHZhbHVlLlxuQGZ1bmN0aW9uIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xuICBAaWYgKCRzaXplID09ICdhdXRvJykge1xuICAgIEByZXR1cm4gMSAxIDA7XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdncm93Jykge1xuICAgIEByZXR1cm4gMSAwIGF1dG87XG4gIH1cbiAgQGVsc2UgaWYgKCRzaXplID09ICdzaHJpbmsnIG9yICRzaXplID09ICdmdWxsJyBvciB6Zi1pcy1mcmFjdGlvbigkc2l6ZSwgJGFsbG93LW5vLWRlbm9taW5hdG9yOiB0cnVlKSkge1xuICAgIEByZXR1cm4gMCAwIGF1dG87XG4gIH1cbiAgQHJldHVybiBudWxsO1xufVxuXG4vLy8gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgY2VsbCBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgZ3V0dGVycyBtYXAgYCRndXR0ZXJzYC4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxNYXB9IFRoZSBjZWxsIGd1dHRlciBzaXplIG9yIHRoZSByZXNwb25zaXZlIGd1dHRlcnMgbWFwLlxuQGZ1bmN0aW9uIHh5LWNlbGwtZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gIC8vIEZvciBgYXV0b2AsIHJldHVybnMgdGhlIHJlc3BvbnNpdmUgbWFwIGAkZ3V0dGVyc2AuXG4gIEBpZiAoJGJyZWFrcG9pbnQgPT0gJ2F1dG8nKSB7XG4gICAgQHJldHVybiAkZ3V0dGVycztcbiAgfVxuXG4gIC8vIFVzZSB0aGUgY29udGV4dHVhbCBicmVha3BvaW50IGJ5IGRlZmF1bHQuXG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50KTtcblxuICBAaWYgKCRicmVha3BvaW50KSB7XG4gICAgQHJldHVybiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXplcm8tYnJlYWtwb2ludCkgb3IgMDtcbiAgfVxufVxuXG4vLy8gUmV0dXJucyB0aGUgcGVyY2VudGFnZSBzaXplIG9mIGEgY2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRzaXplIFskZ3JpZC1jb2x1bW5zXSAtIFNpemUgdG8gbWFrZSB0aGUgY2VsbC4gWW91IGNhbiBwYXNzIGEgdmFsdWUgaW4gbXVsdGlwbGUgZm9ybWF0cywgc3VjaCBhcyBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8zYC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFNpemUgb2YgdGhlIGNlbGwgKGluIHBlcmNlbnQpLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZShcbiAgJHNpemU6ICRncmlkLWNvbHVtbnNcbikge1xuICBAcmV0dXJuIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoJHNpemUsICRkZW5vbWluYXRvcjogJGdyaWQtY29sdW1ucyk7XG59XG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgdmFsdWUgZm9yIGEgY2VsbCBzaXplLlxuLy8vXG4vLy8gR3V0dGVycy1yZWxhdGVkIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgZm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMgKGJ5IGRlZmF1bHQpIGFzIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgIG9yIGFueSBmcmFjdGlvbiBsaWtlIGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCByZXR1cm5zIGEgbWFwIG9mIHNpemVzIGFkYXB0ZWQgdG8gcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfFN0cmluZ3xNYXB9IFRoZSBjZWxsIHNpemluZyBwcm9wZXJ0eSB2YWx1ZSwgb3IgYSByZXNwb25zaXZlIG1hcCBvZiB0aGVtLlxuQGZ1bmN0aW9uIHh5LWNlbGwtc2l6ZS1jc3MoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gICRtYXJnaW4tZ3V0dGVyOiAwO1xuXG4gIEBpZiAoJHNpemUgPT0gJ2F1dG8nIG9yICRzaXplID09ICdzaHJpbmsnKSB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG5cbiAgLy8gRm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMsIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgICRtYXJnaW4tZ3V0dGVyOiB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KTtcbiAgICBAaWYgKCRtYXJnaW4tZ3V0dGVyID09IG51bGwpIHtcbiAgICAgIEBlcnJvciAneHktY2VsbC1zaXplOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBjZWxsIHNpemUgKG51bWJlcilcbiAgJHNpemUtcmF3OiBpZigkc2l6ZSA9PSAnZnVsbCcsIDEwMCUsIHh5LWNlbGwtc2l6ZSgkc2l6ZSkpO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgY2VsbCBDU1Mgc2l6ZSBpbmNsdWRpbmcgZ3V0dGVycyAoc3RyaW5nKVxuICAvLyBJZiB0aGUgY2VsbCBoYXMgcmVzcG9uc2l2ZSBtYXJnaW4gZ3V0dGVycywgcmV0dXJuIGEgcmVzcG9uc2l2ZSBtYXAgb2Ygc2l6ZXMuXG4gIEBpZiB0eXBlLW9mKCRtYXJnaW4tZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgJHJlc3BvbnNpdmUtY3NzLXNpemVzOiAoKTtcblxuICAgIEBlYWNoICRicCwgJG1nIGluICRtYXJnaW4tZ3V0dGVyIHtcbiAgICAgICRtZ2M6IHJlbS1jYWxjKCRtZyk7XG4gICAgICBAaWYgJG1nYyA9PSAwIHtcbiAgICAgICAgJG1nYzogMHJlbTtcbiAgICAgIH1cbiAgICAgICRzaXplLWNzczogaWYoJG1nID09IDAsICRzaXplLXJhdywgY2FsYygjeyRzaXplLXJhd30gLSAjeyRtZ30pKTtcbiAgICAgICRyZXNwb25zaXZlLWNzcy1zaXplczogbWFwLW1lcmdlKCRyZXNwb25zaXZlLWNzcy1zaXplcywgKCRicDogJHNpemUtY3NzKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYSBzaW5nbGUgQ1NTIHNpemUuXG4gIEBlbHNlIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhhdCAwIGlzIHRyYW5zbGF0ZWQgaW4gMHJlbSBmb3IgY2FsYygpXG4gICAgJG1nYzogcmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpO1xuICAgIEBpZiAkbWdjID09IDAge1xuICAgICAgJG1nYzogMHJlbTtcbiAgICB9XG4gICAgJGNzcy1zaXplOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAkc2l6ZS1yYXcsIGNhbGMoI3skc2l6ZS1yYXd9IC0gI3skbWdjfSkpO1xuICAgIEByZXR1cm4gJGNzcy1zaXplO1xuICB9XG59XG5cbi8vLyBTZXRzIGJhc2UgZmxleCBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCwgYGdyb3dgLCBvciBhbnkgb3RoZXIgdmFsdWUgcmVwcmVzZW50aW5nIGEgY2VsbCBzaXplIChpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYHNocmlua2ApLlxuQG1peGluIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xuICAkYmFzZTogeHktY2VsbC1iYXNlKCRzaXplKTtcblxuICBmbGV4OiAjeyRiYXNlfTtcblxuICAvLyBTZXQgYmFzZSBzdHlsZXMgZm9yIFwiZnVsbFwiIG9ubHlcbiAgQGlmKCRzaXplID09ICdmdWxsJykge1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG59XG5cbi8vLyBSZXNldHMgYSBjZWxscyB3aWR0aCAob3IgaGVpZ2h0IGlmIHZlcnRpY2FsIGlzIHRydWUpIGFzIHdlbGwgYXMgc3RyaXBzIGl0cyBndXR0ZXJzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtcmVzZXQoJHZlcnRpY2FsOiB0cnVlKSB7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcbiAgI3skZGlyZWN0aW9ufTogYXV0bztcbiAgbWF4LSN7JGRpcmVjdGlvbn06IG5vbmU7XG59XG5cbi8vLyBTZXRzIHNpemluZyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEd1dHRlcnMtcmVsYXRlZCBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIGZvciBjZWxscyB3aXRoIG1hcmdpbiBndXR0ZXJzIChieSBkZWZhdWx0KSBhcyB0aGUgZ3V0dGVyIGlzIGluY2x1ZGVkIGluIHRoZSB3aWR0aC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHNpemVzIGFkYXB0ZWQgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRzaXplczogeHktY2VsbC1zaXplLWNzcygkc2l6ZSwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG5cbiAgQGlmICh0eXBlLW9mKCRzaXplcykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkc2l6ZXMpIHtcbiAgICAgICN7JGRpcmVjdGlvbn06ICQtemYtYnAtdmFsdWU7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAjeyRkaXJlY3Rpb259OiAkc2l6ZXM7XG4gIH1cbn1cblxuLy8vIFNldHMgZ3V0dGVycyBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIERpcmVjdGlvbiBvZiB0aGUgZ3V0dGVycyB0byBvdXRwdXQuIFNlZSBgJGd1dHRlci1wb3NpdGlvbmAuXG5AbWl4aW4geHktY2VsbC1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIC8vIEdldCB0aGUgZGVmYXVsdCBndXR0ZXIgcG9zaXRpb24gYWNjb3JkaW5nIHRvIGNlbGwgZGlyZWN0aW9uXG4gIEBpZigkZ3V0dGVyLXBvc2l0aW9uID09IG51bGwpIHtcbiAgICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG4gIH1cblxuICAvLyBHZXQgdGhlIGd1dHRlciB3aWR0aCBmb3IgdGhpcyBicmVha3BvaW50XG4gICRndXR0ZXItd2lkdGg6IHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICBAaWYgKCRndXR0ZXItd2lkdGggPT0gbnVsbCkge1xuICAgIEBlcnJvciAneHktY2VsbC1ndXR0ZXJzOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIic7XG4gIH1cblxuICBAaWYgKCRndXR0ZXItdHlwZSBhbmQgJGd1dHRlci10eXBlICE9IG5vbmUpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXItd2lkdGgsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBjZWxsIGZvciB5b3VyIGdyaWQuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKDEwMCUgd2lkdGgpLCBgYXV0b2AgKHVzZSBhbGwgYXZhaWxhYmxlIHNwYWNlKSwgYHNocmlua2AgKHVzZSBvbmx5IHRoZSByZXF1aXJlZCBzcGFjZSkgb3IgYW55IGZyYWN0aW9uIChgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8yYC4uLikuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbbnVsbF0gLSBbREVQUkVDQVRFRF0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkb3V0cHV0IFsoYmFzZSBzaXplIGd1dHRlcnMpXSAtIENlbGwgcGFydHMgdG8gb3V0cHV0LiBZb3Ugd2lsbCBuZWVkIHRvIGdlbmVyYXRlIG90aGVycyBwYXJ0cyBvZiB0aGUgY2VsbCBzZXBlcmF0ZWx5LCBpdCBtYXkgbm90IHdvcmsgcHJvcGVybHkgb3RoZXJ3aXNlLlxuQG1peGluIHh5LWNlbGwoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogbnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRvdXRwdXQ6IChiYXNlIHNpemUgZ3V0dGVycylcbikge1xuICAvLyBEZWZhdWx0IGZvciAkZ3V0dGVyLW91dHB1dFxuICBAaWYgKCRndXR0ZXItb3V0cHV0ICE9IG51bGwpIHtcbiAgICBAd2FybiAneHktY2VsbDogJGd1dHRlci1vdXRwdXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTAnO1xuICAgIEBpZiAoJGd1dHRlci1vdXRwdXQgPT0gZmFsc2UpIHtcbiAgICAgICRvdXRwdXQ6IHNsLXJlbW92ZSgkb3V0cHV0LCBndXR0ZXJzKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGJhc2UpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCRzaXplKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIHNpemUpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRzaXplLCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxuICBAaWYgKGluZGV4KCRvdXRwdXQsIGd1dHRlcnMpKSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24sICRicmVha3BvaW50LCAkdmVydGljYWwpO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQgc2l6ZWQgZ3JpZC4gVXNlZCB0byBnZW5lcmF0ZSBvdXIgZ3JpZCBjbGFzc2VzLlxuLy8vXG4vLy8gYHh5LWNlbGwtc3RhdGljKClgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC5cbi8vLyBVc2UgYHh5LWNlbGwoKWAgaW5zdGVhZCB3aXRoIGAkb3V0cHV0OiAoc2l6ZSBndXR0ZXJzKWAgdG8gbm90IGdlbmVyYXRlIHRoZSBjZWxsIGJhc2UuXG4vLy8gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wXG4vLy9cbi8vLyBAZGVwcmVjYXRlZCB2Ni42LjBcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFt0cnVlXSAtIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLiBBbHdheXMgYHRydWVgIGZvciBtYXJnaW4gZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtc3RhdGljKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gIEB3YXJuICd4eS1jZWxsLXN0YXRpYygpIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gVXNlIFwieHktY2VsbCgpXCIgaW5zdGVhZC4gU2VlIG1pZ3JhdGlvbiBub3RlcyBhdCBodHRwczovL2dpdC5pby9mb3VuZGF0aW9uLTYtNi0wJztcblxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG5cbiAgJC1ndXR0ZXItb3V0cHV0OiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsIHRydWUsICRndXR0ZXItb3V0cHV0KTtcbiAgJC1ndXR0ZXItbWFyZ2luOiBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicsICRndXR0ZXIsIDApO1xuXG4gIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICQtZ3V0dGVyLW1hcmdpbiwgJHZlcnRpY2FsKTtcbiAgQGlmICgkLWd1dHRlci1vdXRwdXQpIHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXIsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbik7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jZWxsJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW251bGxdIC0gW0RFUFJFQ0FURURdIFdoZXRoZXIgb3Igbm90IHRvIG91dHB1dCBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtudWxsXSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi4gQnkgZGVmYXVsdCBgcmlnaHQgbGVmdGAgZm9yIGhvcml6b250YWwgY2VsbHMgYW5kIGB0b3AgYm90dG9tYCBmb3IgdmVydGljYWwgY2VsbHMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBicmVha3BvaW50IHRvIHVzZSBmb3IgdGhlIGNlbGwgZ2VuZXJhdGlvbi4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRvdXRwdXQgWyhiYXNlIHNpemUgZ3V0dGVycyldIC0gQ2VsbCBwYXJ0cyB0byBvdXRwdXQuIFlvdSB3aWxsIG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXJzIHBhcnRzIG9mIHRoZSBjZWxsIHNlcGVyYXRlbHksIGl0IG1heSBub3Qgd29yayBjb3JyZWN0bHkgb3RoZXJ3aXNlLlxuQG1peGluIHh5LWdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxuICAkZ3V0dGVyLW91dHB1dDogbnVsbCxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogbnVsbCxcbiAgJGJyZWFrcG9pbnQ6IG51bGwsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICRvdXRwdXQ6IChiYXNlIHNpemUgZ3V0dGVycylcbikge1xuICAkc2l6ZTogcGVyY2VudGFnZShkaXZpZGUoMSwgJG4pKTtcblxuICAmID4gI3skc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsKCRzaXplLCAkZ3V0dGVyLW91dHB1dCwgJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbiwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCwgJG91dHB1dCk7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDb2xsYXBzZXMgdGhlIGdyaWQgYSBjZWxscyB3aXRoaW4gaXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsuY2VsbF0gLSBUaGUgY2hpbGQgZWxlbWVudCB0byByZW1vdmUgdGhlIGd1dHRlciBmcm9tLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVGhlIHR5cGUgb2YgZ3V0dGVyIHRvIHJlbW92ZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW3JpZ2h0IGxlZnRdIC0gVGhlIHBvc2l0aW9ucyB0byByZW1vdmUgZ3V0dGVycyBmcm9tLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtaW4tYnJlYWtwb2ludCBbJC16Zi16ZXJvLWJyZWFrcG9pbnRdIC0gTWluaW11bSBicmVha3BvaW50IGluIGAkYnJlYWtwb2ludC1jbGFzc2VzYCBmb3Igd2hpY2ggdG8gY29sbGFwc2UgdGhlIGd1dHRlci5cbkBtaXhpbiB4eS1ncmlkLWNvbGxhcHNlKFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbWluLWJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50XG4pIHtcbiAgLy8gRmlyc3QsIGxldHMgbmVnYXRlIGFueSBtYXJnaW5zIG9uIHRoZSB0b3AgbGV2ZWxcbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1pbi1icmVha3BvaW50KSB7XG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICB9XG5cbiAgICAgID4gI3skc2VsZWN0b3J9IHtcbiAgICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAgIG1hcmdpbi0jeyR2YWx1ZX06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkZXhjbHVkZWQtYnBzOiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRtaW4tYnJlYWtwb2ludCk7XG5cbiAgICAvLyBPdXRwdXQgbmV3IHdpZHRocyB0byBub3QgaW5jbHVkZSBndXR0ZXJzXG4gICAgQGVhY2ggJGJwIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGlmKHNsLWNvbnRhaW4oJGV4Y2x1ZGVkLWJwcywgJGJwKSkge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJGksICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnApIHtcbiAgICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICAgICAgPiAuI3skYnB9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyB2YWx1ZSB0byBvZmZzZXQgYSBjZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcnxTdHJpbmd9IFRoZSBjZWxsIG9mZnNldCBwcm9wZXJ0eSB2YWx1ZS5cbkBmdW5jdGlvbiB4eS1jZWxsLW9mZnNldChcbiAgJG4sXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQsICRkZWZhdWx0OiAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gICRzaXplOiB4eS1jZWxsLXNpemUoJG4pO1xuXG4gICRvZmZzZXQ6ICRzaXplO1xuICBAaWYgKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGF0IDAgaXMgdHJhbnNsYXRlZCBpbiAwcmVtIGZvciBjYWxjKClcbiAgICAkZ3V0dGVyOiByZW0tY2FsYyh4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KSk7XG4gICAgQGlmICRndXR0ZXIgPT0gMCB7XG4gICAgICAkZ3V0dGVyOiAwcmVtO1xuICAgIH1cbiAgICAkb2Zmc2V0OiBpZigkZ3V0dGVyID09IDAsICRzaXplLCBjYWxjKCN7JHNpemV9ICsgI3skZ3V0dGVyfSAvIDIpKTtcbiAgfVxuICBAcmV0dXJuICRvZmZzZXQ7XG59XG5cbi8vLyBPZmZzZXRzIGEgY29sdW1uIHRvIHRoZSByaWdodC9ib3R0b20gYnkgYCRuYCBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJG4gLSBTaXplIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYHh5LWNlbGwoKWAgbWl4aW4sIHN1Y2ggYXMgYDZgLCBgNTAlYCwgb3IgYDEgb2YgMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIE1hcCBvZiBndXR0ZXJzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSBUaGUgdHlwZSBvZiBndXR0ZXIgdG8gdXNlLiBDYW4gYmUgYG1hcmdpbmAgb3IgYHBhZGRpbmdgXG4vLy8gQHBhcmFtIHtOdW1iZXJ8QXJyYXl8S2V5d29yZH0gJGJyZWFrcG9pbnQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgZm9yIGAkZ3V0dGVyc2AuIEl0IGNhbiBiZSBhIGJyZWFrcG9pbnQgbmFtZSwgbGlzdCBvZiBicmVha3BvaW50cyBvciBgYXV0b2AgZm9yIGFsbCBicmVha3BvaW50cy4gSWYgYSBsaXN0IGlzIGdpdmVuLCBtZWRpYS1xdWVyaWVzIHdpbGwgYmUgZ2VuZXJhdGVkLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG9mZnNldC4gSWYgc2V0IHRvIHRydWUgd2lsbCBhcHBseSBtYXJnaW4tdG9wIGluc3RlYWQuXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXG4gICRuLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50LCAkZGVmYXVsdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwsICd0b3AnLCAkZ2xvYmFsLWxlZnQpO1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQtaW4oJGJyZWFrcG9pbnQsICRtZWRpYS1xdWVyaWVzOiAnZm9yLWxpc3RzJykge1xuICAgICRvZmZzZXQ6IHh5LWNlbGwtb2Zmc2V0KCRuLCAkZ3V0dGVycywgJGd1dHRlci10eXBlKTtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skb2Zmc2V0fTtcbiAgfVxufVxuIiwiLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeGVzXG5cbi8vLyBNb2RpZmllcyBhIGdyaWQgdG8gZ2l2ZSBpdCBcImZyYW1lXCIgYmVoYXZpb3IgKG5vIG92ZXJmbG93LCBubyB3cmFwLCBzdHJldGNoIGJlaGF2aW9yKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVzdGVkIFtmYWxzZV0gLSBJcyBncmlkIG5lc3RlZCBvciBub3QuIElmIG5lc3RlZCBpcyB0cnVlIHRoaXMgc2V0cyB0aGUgZnJhbWUgdG8gMTAwJSBoZWlnaHQsIG90aGVyd2lzZSB3aWxsIGJlIDEwMHZoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgW251bGxdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGluY2x1ZGUtYmFzZSBbdHJ1ZV0gLSBJbmNsdWRlIHRoZSBiYXNlIHN0eWxlcyB0aGF0IGRvbid0IHZhcnkgcGVyIGJyZWFrcG9pbnQuXG5AbWl4aW4geHktZ3JpZC1mcmFtZShcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG5lc3RlZDogZmFsc2UsXG4gICRndXR0ZXJzOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJGluY2x1ZGUtYmFzZTogdHJ1ZVxuKSB7XG5cbiAgQGlmICRpbmNsdWRlLWJhc2Uge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICB9XG5cbiAgQGlmICRicmVha3BvaW50ID09IG51bGwgYW5kIHR5cGUtb2YoJGd1dHRlcnMpID09ICdtYXAnIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSgkdmVydGljYWwsICRuZXN0ZWQsICRndXR0ZXJzLCAkLXpmLXNpemUsIGZhbHNlKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIC8vIEdldCBvdXIgZ3V0dGVycyBpZiBhcHBsaWNhYmxlXG4gICAgJGd1dHRlcjogLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICRicmVha3BvaW50KTtcblxuICAgIC8vIElmIHdlIGhhdmUgYSBndXR0ZXIsIGFkZCBpdCB0byB0aGUgd2lkdGgvaGVpZ2h0XG4gICAgQGlmICRndXR0ZXIge1xuICAgICAgQGlmICR2ZXJ0aWNhbCA9PSB0cnVlIHtcbiAgICAgICAgJHVuaXQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVyKTtcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgMCBpcyB0cmFuc2xhdGVkIGluIDByZW0gZm9yIGNhbGMoKVxuICAgICAgICBAaWYgJGd1dHRlciA9PSAwIHtcbiAgICAgICAgICAkZ3V0dGVyOiAwcmVtO1xuICAgICAgICB9XG4gICAgICAgIGhlaWdodDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR1bml0OiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcik7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IDAgaXMgdHJhbnNsYXRlZCBpbiAwcmVtIGZvciBjYWxjKClcbiAgICAgICAgQGlmICRndXR0ZXIgPT0gMCB7XG4gICAgICAgICAgJGd1dHRlcjogMHJlbTtcbiAgICAgICAgfVxuICAgICAgICB3aWR0aDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHdpZHRoOiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG5AbWl4aW4geHktY2VsbC1ibG9jayhcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcblxuICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9IEBlbHNlIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7XG59XG5cbi8vLyBDb250YWluZXIgZm9yIGluc2lkZSBhIGdyaWQgZnJhbWUgY29udGFpbmluZyBtdWx0aXBsZSBibG9ja3MuIFR5cGljYWxseSB1c2VkXG4vLy8gYXMgYSBtb2RpZmllciBmb3IgYSBgLmNlbGxgIHRvIGFsbG93IHRoZSBjZWxsIHRvIHBhc3MgYWxvbmcgZmxleCBzaXppbmdcbi8vLyBjb25zdHJhaW50cyAvIGZyb20gcGFyZW50cyB0byBjaGlsZHJlbi5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcblxuICA+IC5ncmlkLXgge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBGbGV4Ym94IFV0aWxpdGllc1xuLy8vL1xuLy9cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciB0aGUgY291bnQgb2Ygc291cmNlIG9yZGVyaW5nYFxuLy8vIEB0eXBlIE51bWJlclxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2ICFkZWZhdWx0O1xuXG4vLy8gUXVpY2tseSBkaXNhYmxlL2VuYWJsZSBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBWYW5pbGxhIEZsZXggSGVscGVycy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzOiB0cnVlICFkZWZhdWx0O1xuXG5AbWl4aW4gZmxleC1oZWxwZXJzIHtcbiAgLmZsZXgtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBmbGV4O1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtYXV0byB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAuZmxleC1jaGlsZC1ncm93IHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLXNocmluayB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBAZWFjaCAkZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtZGlyZWN0aW9uIHtcbiAgICAuZmxleC1kaXItI3skZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkZmxleGJveC1yZXNwb25zaXZlLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1hdXRvIHtcbiAgICAgICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWdyb3cge1xuICAgICAgICAgICAgZmxleDogMSAwIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgICAgICAgICAgLiN7JHNpemV9LWZsZXgtZGlyLSN7JGRpcn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbigkcHJvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlcyB7XG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IHVzaW5nIGp1c3RpZnktY29udGVudFxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWp1c3RpZnkge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgfVxuICB9XG4gIFxuICAvLyBIb3Jpem9udGFsIGFsaWdubWVudCBTcGVjaWZpY2FsbHkgZm9yIFZlcnRpY2FsIE1lbnVcbiAgQGVhY2ggJGhkaXIsICRwcm9wIGluIG1hcC1yZW1vdmUoJC16Zi1mbGV4LWp1c3RpZnksICdqdXN0aWZ5JywgJ3NwYWNlZCcpIHtcbiAgICAuYWxpZ24tI3skaGRpcn0ge1xuICAgICAgJi52ZXJ0aWNhbCB7XG4gICAgICAgICYubWVudSA+IGxpID4gYSB7XG4gICAgICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogJGhkaXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmVydGljYWwgYWxpZ25tZW50IHVzaW5nIGFsaWduLWl0ZW1zIGFuZCBhbGlnbi1zZWxmXG4gIEBlYWNoICR2ZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtYWxpZ24ge1xuICAgIC5hbGlnbi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR5OiAkdmRpcik7XG4gICAgfVxuXG4gICAgLmFsaWduLXNlbGYtI3skdmRpcn0ge1xuICAgICAgQGluY2x1ZGUgZmxleC1hbGlnbi1zZWxmKCR5OiAkdmRpcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2VudHJhbCBhbGlnbm1lbnQgb2YgY29udGVudFxuICAuYWxpZ24tY2VudGVyLW1pZGRsZSB7XG4gICAgQGluY2x1ZGUgZmxleC1hbGlnbigkeDogY2VudGVyLCAkeTogbWlkZGxlKTtcbiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQge1xuICAgICAgLiN7JC16Zi1zaXplfS1vcmRlci0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtb3JkZXIoJGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZhbmlsbGEgRmxleGJveCBIZWxwZXJzXG4gIEBpbmNsdWRlIGZsZXgtaGVscGVycztcbn1cbiIsIkBmdW5jdGlvbiAtemYtZmxleC1qdXN0aWZ5KCR0ZXh0LWRpcmVjdGlvbikge1xuICAkLXpmLWZsZXgtanVzdGlmeTogKFxuICAgICdsZWZ0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1lbmQsIGZsZXgtc3RhcnQpLFxuICAgICdyaWdodCc6IGlmKCR0ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGZsZXgtc3RhcnQsIGZsZXgtZW5kKSxcbiAgICAnY2VudGVyJzogY2VudGVyLFxuICAgICdqdXN0aWZ5Jzogc3BhY2UtYmV0d2VlbixcbiAgICAnc3BhY2VkJzogc3BhY2UtYXJvdW5kLFxuICApO1xuXG4gIEByZXR1cm4gJC16Zi1mbGV4LWp1c3RpZnk7XG59XG5cblxuJC16Zi1mbGV4LWFsaWduOiAoXG4gICd0b3AnOiBmbGV4LXN0YXJ0LFxuICAnYm90dG9tJzogZmxleC1lbmQsXG4gICdtaWRkbGUnOiBjZW50ZXIsXG4gICdzdHJldGNoJzogc3RyZXRjaCxcbik7XG5cbiQtemYtZmxleC1kaXJlY3Rpb246IChcbiAgJ3Jvdyc6IHJvdyxcbiAgJ3Jvdy1yZXZlcnNlJzogcm93LXJldmVyc2UsXG4gICdjb2x1bW4nOiBjb2x1bW4sXG4gICdjb2x1bW4tcmV2ZXJzZSc6IGNvbHVtbi1yZXZlcnNlLFxuKTtcblxuLy8vIEVuYWJsZXMgZmxleGJveCBieSBhZGRpbmcgYGRpc3BsYXk6IGZsZXhgIHRvIHRoZSBlbGVtZW50LlxuQG1peGluIGZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgYWxpZ25zIHRoZSBpdGVtcyB3aXRoaW4gYSBmbGV4IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHggW251bGxdIC0gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYGxlZnRgLCBgcmlnaHRgLCBgY2VudGVyYCwgYGp1c3RpZnlgLCBvciBgc3BhY2VkYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IGhvcml6b250YWwgYWxpZ25tZW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduKCR4OiBudWxsLCAkeTogbnVsbCkge1xuICBAaWYgJHgge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtanVzdGlmeSwgJHgpIHtcbiAgICAgICR4OiBtYXAtZ2V0KCQtemYtZmxleC1qdXN0aWZ5LCAkeCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHh9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBob3Jpem9udGFsIGFsaWdubWVudC4gVXNlIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnksIG9yIHNwYWNlZC4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdmVydGljYWwgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGp1c3RpZnktY29udGVudDogJHg7XG4gIGFsaWduLWl0ZW1zOiAkeTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgYWxpZ24gYSBzaW5nbGUgY29sdW1uIHdpdGhpbiBhIGZsZXggcm93LiBBcHBseSB0aGlzIG1peGluIHRvIGEgZmxleCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbi1zZWxmKCR5OiBudWxsKSB7XG4gIEBpZiAkeSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1hbGlnbiwgJHkpIHtcbiAgICAgICR5OiBtYXAtZ2V0KCQtemYtZmxleC1hbGlnbiwgJHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLWNvbHVtbi1hbGlnbigpOiAjeyR5fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgYWxpZ25tZW50LiBVc2UgdG9wLCBib3R0b20sIG1pZGRsZSwgb3Igc3RyZXRjaC4nO1xuICAgIH1cbiAgfVxuXG4gIGFsaWduLXNlbGY6ICR5O1xufVxuXG4vLy8gQ2hhbmdlcyB0aGUgc291cmNlIG9yZGVyIG9mIGEgZmxleCBjaGlsZC4gQ2hpbGRyZW4gd2l0aCBsb3dlciBudW1iZXJzIGFwcGVhciBmaXJzdCBpbiB0aGUgbGF5b3V0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3JkZXIgWzBdIC0gT3JkZXIgbnVtYmVyIHRvIGFwcGx5LlxuQG1peGluIGZsZXgtb3JkZXIoJG9yZGVyOiAwKSB7XG4gIG9yZGVyOiAkb3JkZXI7XG59XG5cbi8vLyBDaGFuZ2UgZmxleC1kaXJlY3Rpb25cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW3Jvd10gLSBGbGV4IGRpcmVjdGlvbiB0byB1c2UuIENhbiBiZVxuLy8vICAgLSByb3cgKGRlZmF1bHQpOiBzYW1lIGFzIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIHJvdy1yZXZlcnNlOiBvcHBvc2l0ZSB0byB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSBjb2x1bW46IHNhbWUgYXMgcm93IGJ1dCB0b3AgdG8gYm90dG9tXG4vLy8gICAtIGNvbHVtbi1yZXZlcnNlOiBzYW1lIGFzIHJvdy1yZXZlcnNlIHRvcCB0byBib3R0b21cbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uOiByb3cpIHtcbiAgZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XG4gICRzaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAwLjAwMTI1O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCB3aXRoaW4gYSBjZXJ0YWluIGJyZWFrcG9pbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XG4gICRsb3dlci1ib3VuZC1zaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAkdXBwZXItYm91bmQtc2l6ZTogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJHNpemUpO1xuXG4gIC8vIG1vcmUgb2Z0ZW4gdGhhbiBub3QgdGhpcyB3aWxsIGJlIGNvcnJlY3QsIGp1c3Qgb25lIHRpbWUgcm91bmQgdGhlIGxvb3AgaXQgd29uJ3Qgc28gc2V0IGluIHNjb3BlIGhlcmVcbiAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpIC0gMC4wMDEyNTtcbiAgLy8gdGVzdCBhY3R1YWwgbG93ZXItYm91bmQtc2l6ZSwgaWYgMCBzZXQgaXQgdG8gMGVtXG4gIEBpZiBzdHJpcC11bml0KCRsb3dlci1ib3VuZC1zaXplKSA9PSAwIHtcbiAgICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSk7XG4gIH1cblxuICBAaWYgJHVwcGVyLWJvdW5kLXNpemUgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdXBwZXItYm91bmQ6IC16Zi1icC10by1lbSgkdXBwZXItYm91bmQtc2l6ZSk7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpLCBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR1cHBlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3IoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yLW9ubHkoJHNpemUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBvbmx5KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcyB7XG4gIC8vIEJhc2ljIGhpZGluZyBjbGFzc2VzXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbiAgLnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAvLyBSZXNwb25zaXZlIHZpc2liaWxpdHkgY2xhc3Nlc1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLmhpZGUtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgaGlkZS1mb3IoJHNpemUpO1xuICAgICAgfVxuXG4gICAgICAuc2hvdy1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBzaG93LWZvcigkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmhpZGUtZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgaGlkZS1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLSN7JHNpemV9LW9ubHkge1xuICAgICAgQGluY2x1ZGUgc2hvdy1mb3Itb25seSgkc2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2NyZWVuIHJlYWRlciB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgLy8gTmVlZCBhIFwiaGlkZS1mb3Itc3JcIiBjbGFzcz8gQWRkIGFyaWEtaGlkZGVuPSd0cnVlJyB0byB0aGUgZWxlbWVudFxuICAuc2hvdy1mb3Itc3IsXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxuXG4gIC8vIE9ubHkgZGlzcGxheSB0aGUgZWxlbWVudCB3aGVuIGl0J3MgZm9jdXNlZFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZS1vZmY7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFuZHNjYXBlIGFuZCBwb3J0cmFpdCB2aXNpYmlsaXR5XG4gIC5zaG93LWZvci1sYW5kc2NhcGUsXG4gIC5oaWRlLWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAuaGlkZS1mb3ItbGFuZHNjYXBlLFxuICAuc2hvdy1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFuZHNjYXBlKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBEYXJrIE1vZGUgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItZGFyay1tb2RlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5oaWRlLWZvci1kYXJrLW1vZGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICAgIC5zaG93LWZvci1kYXJrLW1vZGUge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmhpZGUtZm9yLWRhcmstbW9kZSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gSUUxMCsgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItaWUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgQG1lZGlhIGFsbCBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAuc2hvdy1mb3ItaWUge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmhpZGUtZm9yLWllIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAvLyBTdGlja3kgVmlzaWJpbGl0eVxuICAuc2hvdy1mb3Itc3RpY2t5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5pcy1zdHVjayAuc2hvdy1mb3Itc3RpY2t5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAuaXMtc3R1Y2sgLmhpZGUtZm9yLXN0aWNreSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuLy8gVFlQT0dSQVBIWVxuLy8gVGV4dCBzdHlsZXMgZnJvbSB0aGUgRmlnbWEgZmlsZS4gU2hhcmVkIGJ5IHRoZSBzaXRlIGFuZFxuLy8gdGhlIGJsb2NrIGVkaXRvciwgc28gbWFya3VwIGNhbiB1c2UgdGhlIHNhbWUgdC0qIGNsYXNzZXMuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiVzYW5zIHtcblx0Zm9udC1mYW1pbHk6IHZhcigtLXNhbnMpO1xuXHRmb250LXZhcmlhdGlvbi1zZXR0aW5nczogXCJ3Z2h0XCIgNDAwLCBcIndkdGhcIiAxMDA7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi8vIExhYmVsLzEwLjUgU2FucyBDYXBzXG4udC1sYWJlbCB7XG5cdEBleHRlbmQgJXNhbnM7XG5cdGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBcIndnaHRcIiA2MDAsIFwid2R0aFwiIDEwMDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0Zm9udC1zaXplOiB2YXIoLS1zaXplLWxhYmVsKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxoLXRpZ2h0KTtcblx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLWxhYmVsKTtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0Y29sb3I6IHZhcigtLWluay0zOCk7XG59XG5cbi8vIFN0aWxsIGNhcHRpb25zOiAxMHB4IFNhbnMgQ2Fwc1xuLnQtc3RpbGwge1xuXHRAZXh0ZW5kICVzYW5zO1xuXHRmb250LXZhcmlhdGlvbi1zZXR0aW5nczogXCJ3Z2h0XCIgNjAwLCBcIndkdGhcIiAxMDA7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1zdGlsbCk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saC10aWdodCk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1sYWJlbCk7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGNvbG9yOiB2YXIoLS1pbmstMzgpO1xufVxuXG4vLyBDYXB0aW9uLzExIFNhbnNcbi50LWNhcHRpb24ge1xuXHRAZXh0ZW5kICVzYW5zO1xuXHRmb250LXNpemU6IHZhcigtLXNpemUtY2FwdGlvbik7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saC10aWdodCk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1jYXB0aW9uKTtcblx0Y29sb3I6IHZhcigtLWluay01NSk7XG59XG5cbi8vIEJvZHkvMTMgU2Fuc1xuLnQtYm9keSB7XG5cdEBleHRlbmQgJXNhbnM7XG5cdGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1ib2R5KTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxoLWJvZHkpO1xuXHRsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2stYm9keSk7XG5cdGNvbG9yOiB2YXIoLS1pbmspO1xufVxuXG4vLyBTZWNvbmRhcnkgYm9keSwgdXNlZCBmb3Igd29yayBkZXRhaWxzIGFuZCBpbnRyb3Ncbi50LW1ldGEge1xuXHRAZXh0ZW5kICVzYW5zO1xuXHRmb250LXNpemU6IHZhcigtLXNpemUtYm9keSk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saC1ib2R5KTtcblx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLWJvZHkpO1xuXHRjb2xvcjogdmFyKC0taW5rLTcwKTtcbn1cblxuLy8gU3ViaGVhZC8xNyBTZXJpZlxuLnQtc3ViaGVhZCB7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1zZXJpZik7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1zdWJoZWFkKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxoLXN1YmhlYWQpO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRjb2xvcjogdmFyKC0taW5rKTtcbn1cblxuLy8gUHJvbnVuY2lhdGlvbi8xNyBTZXJpZlxuLnQtbmFtZSB7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1zZXJpZik7XG5cdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1zdWJoZWFkKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxoLXRpZ2h0KTtcblx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLW5hbWUpO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRjb2xvcjogdmFyKC0taW5rKTtcbn1cblxuLy8gSGVhZGluZy8yMSBTZXJpZiwgcmVzZXJ2ZWQgZm9yIHRoZSBwdWxsIHF1b3RlXG4udC1oZWFkaW5nIHtcblx0Zm9udC1mYW1pbHk6IHZhcigtLXNlcmlmKTtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0Zm9udC1zaXplOiB2YXIoLS1zaXplLWhlYWRpbmcpO1xuXHRsaW5lLWhlaWdodDogMS4zO1xuXHRjb2xvcjogdmFyKC0taW5rKTtcbn1cblxuLy8gUnVubmluZyBjb3B5IGZyb20gV1lTSVdZRyBmaWVsZHNcbi50LXByb3NlIHtcblx0bWF4LXdpZHRoOiB2YXIoLS1tZWFzdXJlKTtcblxuXHRwLFxuXHR1bCxcblx0b2wge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6IGluaGVyaXQ7XG5cdFx0bGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cblx0XHQmICsgKiB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwLjg3NXJlbTtcblx0XHR9XG5cdH1cbn1cbiIsIkB1c2UgXCJmb3VuZGF0aW9uL3V0aWwvdXRpbFwiIGFzIGZ1O1xuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4vLyBCQVNFXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbmh0bWwge1xuXHQvLyBCbGFjayBiZWhpbmQgdGhlIHBhZ2UuIFRoZSBCYXJiYSBtb3JwaCBzaHJpbmtzIHRoZSBwYWdlXG5cdC8vIGludG8gYSBjYXJkLCBzbyB0aGlzIGlzIHdoYXQgc2hvd3MgYXJvdW5kIGl0cyBlZGdlcy5cblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdm9pZCk7XG5cdGZvbnQtc2l6ZTogMTAwJTtcbn1cblxuYm9keSB7XG5cdG1hcmdpbjogMDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdm9pZCk7XG5cdGNvbG9yOiB2YXIoLS1pbmspO1xuXHRmb250LWZhbWlseTogdmFyKC0tc2Fucyk7XG5cdGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBcIndnaHRcIiA0MDAsIFwid2R0aFwiIDEwMDtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0Zm9udC1zaXplOiB2YXIoLS1zaXplLWJvZHkpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGgtYm9keSk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1ib2R5KTtcblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cdHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG5cdG92ZXJzY3JvbGwtYmVoYXZpb3I6IG5vbmU7XG59XG5cbiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbnAsXG51bCxcbm9sLFxuZmlndXJlLFxuYmxvY2txdW90ZSxcbmgxLFxuaDIsXG5oMyxcbmg0IHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG5pbWcsXG52aWRlbyxcbnN2ZyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXgtd2lkdGg6IDEwMCU7XG59XG5cbmVtLFxuaSB7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuYSB7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogZnJvbS1mb250O1xuXHR0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogZnJvbS1mb250O1xuXHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0fVxufVxuXG46Zm9jdXMtdmlzaWJsZSB7XG5cdG91dGxpbmU6IDFweCBzb2xpZCB2YXIoLS1icmljayk7XG5cdG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbjo6c2VsZWN0aW9uIHtcblx0YmFja2dyb3VuZDogdmFyKC0taW5rKTtcblx0Y29sb3I6IHZhcigtLXBhcGVyKTtcbn1cblxuLnZpc3VhbGx5LWhpZGRlbixcbi5zY3JlZW4tcmVhZGVyLXRleHQge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcblx0d2lkdGg6IDFweDtcblx0aGVpZ2h0OiAxcHg7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGNsaXA6IHJlY3QoMCAwIDAgMCk7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5za2lwLWxpbms6Zm9jdXMge1xuXHRwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcblx0dG9wOiB2YXIoLS1zcGFjZS0yeHMpO1xuXHRsZWZ0OiB2YXIoLS1zcGFjZS0yeHMpO1xuXHR6LWluZGV4OiAyMDA7XG5cdHdpZHRoOiBhdXRvO1xuXHRoZWlnaHQ6IGF1dG87XG5cdGNsaXA6IGF1dG87XG5cdHBhZGRpbmc6IHZhcigtLXNwYWNlLTJ4cykgdmFyKC0tc3BhY2UteHMpO1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlcik7XG5cdGNvbG9yOiB2YXIoLS1pbmspO1xufVxuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4vLyBQQUdFIEZSQU1FXG4vLyBFdmVyeSBCYXJiYSBjb250YWluZXIgcGFpbnRzIGl0cyBvd24gcGFwZXIgZ3JvdW5kIHNvIGFcbi8vIGNsaXAtcmV2ZWFsaW5nIHBhZ2UgbmV2ZXIgc2hvd3MgdGhlIG9uZSBiZW5lYXRoIGl0LlxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4uYmFyYmEtY29udGFpbmVyIHtcblx0bWluLWhlaWdodDogMTAwdmg7XG5cdG1pbi1oZWlnaHQ6IDEwMHN2aDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXIpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xufVxuXG4uc2l0ZS1mcmFtZSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdC8vIEZ1bGwgdmlld3BvcnQsIG5vdCB2aWV3cG9ydCBtaW51cyB0aGUgaGVhZGVyLiBUaGUgZnJhbWUgaXMgYm9yZGVyLWJveCBhbmRcblx0Ly8gcmVzZXJ2ZXMgcm9vbSBmb3IgdGhlIGZpeGVkIGhlYWRlciB3aXRoIGl0cyBvd24gcGFkZGluZy10b3AsIHNvXG5cdC8vIHN1YnRyYWN0aW5nIHRoZSBoZWFkZXIgaGVpZ2h0IGFnYWluIGxlZnQgYSBkZWFkIGJhbmQgYmVsb3cgdGhlIGZvb3Rlci5cblx0bWluLWhlaWdodDogMTAwdmg7XG5cdG1pbi1oZWlnaHQ6IDEwMHN2aDtcblx0bWF4LXdpZHRoOiBjYWxjKHZhcigtLXNpdGUpICsgKDIgKiB2YXIoLS1wYWdlLXgpKSk7XG5cdG1hcmdpbi1pbmxpbmU6IGF1dG87XG5cdC8vIFRoZSBib3R0b20gZ3V0dGVyIG1pcnJvcnMgdGhlIGd1dHRlciBhYm92ZSB0aGUgbWVudSwgc28gdGhlIGZvb3RlciBzaXRzXG5cdC8vIG9mZiB0aGUgZm9vdCBvZiB0aGUgdmlld3BvcnQgYnkgdGhlIG1lYXN1cmUgdGhlIGNocm9tZSBzaXRzIG9mZiB0aGUgdG9wLlxuXHQvLyBBaXIgYWJvdmUgdGhlIGZvb3RlciBjb21lcyBmcm9tIC5zaXRlLWZvb3RlcidzIHBhZGRpbmctdG9wLlxuXHRwYWRkaW5nOiB2YXIoLS1oZWFkZXItaGVpZ2h0KSB2YXIoLS1wYWdlLXgpIGNhbGModmFyKC0tcGFnZS10b3ApICogMik7XG59XG5cbi8vIFBhZGRpbmcgaGVyZSBpcyBtZWFzdXJlZCBmcm9tIHRoZSBmb290IG9mIHRoZSBmaXhlZCBoZWFkZXIsIHNvIHRoZSBmaXJzdFxuLy8gbGluZSBvZiBjb250ZW50IGxhbmRzIHdoZXJlIHRoZSBGaWdtYSBmcmFtZXMgcHV0IGl0LlxuLnNpdGUtbWFpbiB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXg6IDEgMCBhdXRvO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLXRvcDogMnJlbTtcblxuXHRAaW5jbHVkZSBmdS5icmVha3BvaW50KG1lZGl1bSkge1xuXHRcdHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNlLXhsKSArIDAuODc1cmVtKTtcblx0fVxufVxuXG4uc2l0ZS1tYWluLS1ob21lIHtcblx0cGFkZGluZy10b3A6IDFyZW07XG5cblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRwYWRkaW5nLXRvcDogdmFyKC0tcGFnZS10b3ApO1xuXHR9XG59XG5cbi5zaXRlLW1haW4tLWlubmVyID4gKiB7XG5cdG1heC13aWR0aDogdmFyKC0taW5uZXIpO1xufVxuXG4vLyBWZXJ0aWNhbCByaHl0aG0gYmV0d2VlbiBibG9ja3MsIHRha2VuIGZyb20gdGhlIEZpZ21hIHNwYWNlcnMuXG4vLyAud29yayB3cmFwcyBlYWNoIGZlYXR1cmVkIHdvcmsgb24gdGhlIFdvcmtzIGFyY2hpdmUuXG4uc2l0ZS1tYWluID4gKiArICosXG4ud29yayA+ICogKyAqIHtcblx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtbSk7XG59XG5cbi5zaXRlLW1haW4gPiAuYmxvY2stc2VjdGlvbi1sYWJlbCxcbi53b3JrID4gLmJsb2NrLXNlY3Rpb24tbGFiZWwsXG4uc2l0ZS1tYWluID4gLndvcmsgKyAqIHtcblx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtbCk7XG59XG5cbi5zaXRlLW1haW4gPiAuYmxvY2stc2VjdGlvbi1sYWJlbCArICosXG4ud29yayA+IC5ibG9jay1zZWN0aW9uLWxhYmVsICsgKiB7XG5cdG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzKTtcbn1cblxuLnNpdGUtbWFpbiA+IC5ibG9jay1zdGlsbHMsXG4ud29yayA+IC5ibG9jay1zdGlsbHMge1xuXHRtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS1sKTtcbn1cblxuLnNpdGUtbWFpbiA+IDpmaXJzdC1jaGlsZCxcbi5zaXRlLW1haW4gPiAudmlzdWFsbHktaGlkZGVuICsgKixcbi53b3JrID4gOmZpcnN0LWNoaWxkIHtcblx0bWFyZ2luLXRvcDogMDtcbn1cblxuLnNpdGUtbWFpbi0taW5uZXIgPiAud29yayA+ICoge1xuXHRtYXgtd2lkdGg6IHZhcigtLWlubmVyKTtcbn1cblxuLy8gQWxzbyBhbmQgRm9ydGhjb21pbmcgd29ya3Mgb24gdGhlIFdvcmtzIGFyY2hpdmVcbi53b3Jrcy1saXN0IHtcblx0ZGlzcGxheTogZ3JpZDtcblx0cm93LWdhcDogMC41NjI1cmVtO1xuXHRtYXgtd2lkdGg6IHZhcigtLW1lYXN1cmUpO1xuXHRsaXN0LXN0eWxlOiBub25lO1xufVxuXG4vLyBFZGl0b3IgcHJvbXB0IGZvciBlbXB0eSBibG9ja3MsIG5ldmVyIHNob3duIG9uIHRoZSBzaXRlXG4uYmxvY2stcGxhY2Vob2xkZXIge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjZS1zKTtcblx0Ym9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXJ1bGUpO1xuXHRjb2xvcjogdmFyKC0taW5rLTU1KTtcbn1cblxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuLy8gSEVBREVSXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbi8vIEZpeGVkIGNocm9tZTogcmVuZGVyZWQgb25jZSwgb3V0c2lkZSB0aGUgQmFyYmEgd3JhcHBlci4gSXQgc2l0cyBhYm92ZSB0aGVcbi8vIG1vcnBoaW5nIGNvbnRhaW5lcnMsIHNvIHRoZSBwYWdlIGNoYW5nZXMgYmVuZWF0aCBhIGhlYWRlciB0aGF0IG5ldmVyIG1vdmVzLlxuLnNpdGUtaGVhZGVyIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdHJpZ2h0OiAwO1xuXHRsZWZ0OiAwO1xuXHR6LWluZGV4OiA1MDtcblx0Ly8gRG91YmxlIHRoZSBGaWdtYSBndXR0ZXJzIGFib3ZlIGFuZCBiZWxvdywgc28gdGhlIGNocm9tZSBzaXRzIGluIGFpclxuXHRwYWRkaW5nOiBjYWxjKHZhcigtLXBhZ2UtdG9wKSAqIDIpIHZhcigtLXBhZ2UteCkgY2FsYyh2YXIoLS1zcGFjZS14cykgKiAyKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXIpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGgtdGlnaHQpO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uc2l0ZS1oZWFkZXJfX2lubmVyIHtcblx0cm93LWdhcDogdmFyKC0tc3BhY2UteHMpO1xuXHRtYXgtd2lkdGg6IHZhcigtLXNpdGUpO1xuXHRtYXJnaW4taW5saW5lOiBhdXRvO1xuXG5cdC8vIFdvcmRtYXJrIGFuZCBtZW51IGFyZSBzZXQgYXQgZGlmZmVyZW50IHNpemVzLCBzbyBzaXQgdGhlbSBvbiBvbmUgYmFzZWxpbmVcblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdH1cbn1cblxuLy8gTWlkLW1vcnBoIHRoZSBncm91bmQgYmVoaW5kIHRoZSBwYWdlIGlzIGJsYWNrLiBEaWZmZXJlbmNlIGJsZW5kaW5nIGtlZXBzXG4vLyB0aGUgY2hyb21lIGxlZ2libGUgb3ZlciBib3RoIHRoZSBibGFjayBzdXJyb3VuZCBhbmQgdGhlIHBhcGVyIGNhcmQuXG4uaXMtbW9ycGhpbmcgLnNpdGUtaGVhZGVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1peC1ibGVuZC1tb2RlOiBkaWZmZXJlbmNlO1xuXG5cdC5zaXRlLWxvZ28sXG5cdC5zaXRlLWJ1cmdlcixcblx0LnNpdGUtbmF2X19saW5rIHtcblx0XHRjb2xvcjogdmFyKC0tcGFwZXIpO1xuXHR9XG59XG5cbi8vIFNldCB0byBtYXRjaCB0aGUgaWRlbnRpdHkgbmFtZSBvbiB0aGUgaG9tZSBwYWdlLCBzbyB0aGUgd29yZG1hcmsgcmVhZHMgYXRcbi8vIHRoZSBzYW1lIHNpemUgaW4gdGhlIGNocm9tZSBhcyBpdCBkb2VzIGluIHRoZSBwYWdlLlxuLnNpdGUtbG9nbyB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Zm9udC1mYW1pbHk6IHZhcigtLXNlcmlmKTtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0Zm9udC1zaXplOiAwLjkzNzVyZW07IC8vIDE1XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1uYW1lKTtcblxuXHRAaW5jbHVkZSBmdS5icmVha3BvaW50KG1lZGl1bSkge1xuXHRcdGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1zdWJoZWFkKTsgLy8gMTcsIGFzIC50LW5hbWVcblx0fVxuXHRjb2xvcjogdmFyKC0taW5rKTtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0fVxufVxuXG4vLyBUaGUgcGFuZWwgaXMgYSBjaGlsZCBvZiB0aGUgaGVhZGVyIGFuZCBjb3ZlcnMgdGhlIHZpZXdwb3J0LCBzbyB0aGUgd29yZG1hcmtcbi8vIGFuZCB0aGUgYnVyZ2VyIGFyZSBsaWZ0ZWQgb3ZlciBpdC4gVGhlIHdvcmRtYXJrIHN0YXlzIHB1dCBhcyB0aGUgcGFuZWwgY29tZXNcbi8vIHVwIGFuZCB0aGUgYnVyZ2VyIGhhcyB0byBiZSByZWFjaGFibGUgdG8gY2xvc2UgaXQgYWdhaW4uXG4uc2l0ZS1oZWFkZXJfX2JyYW5kLFxuLnNpdGUtaGVhZGVyX190b2dnbGUge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDI7XG59XG5cbi8vIEJlbG93IG1lZGl1bSB0aGUgbWVudSBpcyBhIHBhbmVsIGFuZCB0aGlzIG9wZW5zIGl0LiBTZXQgdG8gdGhlIHdvcmRtYXJrJ3Ncbi8vIG93biBzaXplIHNvIHRoZSB0d28gcmVhZCBhcyBhIHBhaXIgcmF0aGVyIHRoYW4gYSBjb250cm9sIGJvbHRlZCBvbi4gVGhlXG4vLyBwYWRkaW5nIGlzIHRvdWNoIGFyZWEgb25seSwgcHVsbGVkIGJhY2sgb3V0IGJ5IHRoZSBuZWdhdGl2ZSBtYXJnaW4gc28gdGhlXG4vLyBiYXJzIHN0aWxsIGxpbmUgdXAgd2l0aCB0aGUgZWRnZSBvZiB0aGUgcGFnZS5cbi5zaXRlLWJ1cmdlciB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjZS0yeHMpO1xuXHRtYXJnaW46IGNhbGModmFyKC0tc3BhY2UtMnhzKSAqIC0xKTtcblx0YmFja2dyb3VuZDogbm9uZTtcblx0Ym9yZGVyOiAwO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdGNvbG9yOiB2YXIoLS1pbmspO1xuXHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0fVxuXG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4uc2l0ZS1idXJnZXJfX2JveCB7XG5cdC0tYmFyLXdpZHRoOiAxLjEyNXJlbTsgLy8gMTgsIHRoZSB3b3JkbWFyaydzIGNhcCBoZWlnaHRcblx0LS1iYXItaGVpZ2h0OiAwLjYyNXJlbTsgLy8gMTBcblx0Ly8gSGFsZiB0aGUgYm94LCBsZXNzIGhhbGYgYSBoYWlybGluZSwgc28gYSBjcm9zc2VkIGJhciBsYW5kcyBkZWFkIGNlbnRyZS5cblx0LS1iYXItc2hpZnQ6IGNhbGModmFyKC0tYmFyLWhlaWdodCkgLyAyIC0gMC41cHgpO1xuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiB2YXIoLS1iYXItd2lkdGgpO1xuXHRoZWlnaHQ6IHZhcigtLWJhci1oZWlnaHQpO1xufVxuXG4uc2l0ZS1idXJnZXJfX2JhciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cmlnaHQ6IDA7XG5cdGxlZnQ6IDA7XG5cdGhlaWdodDogMXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdHRyYW5zaXRpb246XG5cdFx0dHJhbnNmb3JtIDAuNDJzIHZhcigtLWVhc2Utb3V0KSxcblx0XHRvcGFjaXR5IDAuMThzIGxpbmVhcjtcblxuXHQmOm50aC1jaGlsZCgxKSB7XG5cdFx0dG9wOiAwO1xuXHR9XG5cblx0JjpudGgtY2hpbGQoMikge1xuXHRcdHRvcDogdmFyKC0tYmFyLXNoaWZ0KTtcblx0fVxuXG5cdCY6bnRoLWNoaWxkKDMpIHtcblx0XHRib3R0b206IDA7XG5cdH1cbn1cblxuLy8gT3BlbjogdGhlIG91dGVyIHR3byBtZWV0IGluIHRoZSBtaWRkbGUgYW5kIGNyb3NzLCB0aGUgbWlkZGxlIG9uZSBnb2VzLlxuLmlzLW1lbnUtb3BlbiAuc2l0ZS1idXJnZXJfX2JhciB7XG5cdCY6bnRoLWNoaWxkKDEpIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tYmFyLXNoaWZ0KSkgcm90YXRlKDQ1ZGVnKTtcblx0fVxuXG5cdCY6bnRoLWNoaWxkKDIpIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG5cblx0JjpudGgtY2hpbGQoMykge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKHZhcigtLWJhci1zaGlmdCkgKiAtMSkpIHJvdGF0ZSgtNDVkZWcpO1xuXHR9XG59XG5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIE1FTlVcbi8vIE9uZSBsaXN0LCB0d28gc2hhcGVzOiBhIHJvdyBpbiB0aGUgaGVhZGVyIGF0IG1lZGl1bSBhbmRcbi8vIGFib3ZlLCBhIGZ1bGwtc2NyZWVuIHBhbmVsIGJlbG93IGl0LiBFdmVyeXRoaW5nIHNjb3BlZCB0b1xuLy8gYHNtYWxsIG9ubHlgIGlzIHBhbmVsIGJlaGF2aW91ciBhbmQgbmV2ZXIgcmVhY2hlcyBkZXNrdG9wLlxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4uc2l0ZS1tZW51IHtcblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdGluc2V0OiAwO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRwYWRkaW5nOiBjYWxjKHZhcigtLWhlYWRlci1oZWlnaHQpICsgdmFyKC0tc3BhY2UteGwpKSB2YXIoLS1wYWdlLXgpIHZhcigtLXNwYWNlLTJ4bCk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXIpO1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRcdC8vIFZpc2liaWxpdHkgaXMgaGVsZCBiYWNrIHVudGlsIHRoZSBmYWRlIGlzIG91dCwgc28gdGhlIHBhbmVsIGlzIG5vdFxuXHRcdC8vIGluIHRoZSB0YWIgb3JkZXIgd2hpbGUgaXQgaXMgc3RpbGwgb24gc2NyZWVuLlxuXHRcdHRyYW5zaXRpb246XG5cdFx0XHRvcGFjaXR5IDAuMzRzIHZhcigtLWVhc2Utb3V0KSxcblx0XHRcdHZpc2liaWxpdHkgMHMgbGluZWFyIDAuMzRzO1xuXHR9XG59XG5cbi5pcy1tZW51LW9wZW4gLnNpdGUtbWVudSB7XG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0XHR0cmFuc2l0aW9uOlxuXHRcdFx0b3BhY2l0eSAwLjM0cyB2YXIoLS1lYXNlLW91dCksXG5cdFx0XHR2aXNpYmlsaXR5IDBzIGxpbmVhcjtcblx0fVxufVxuXG4uc2l0ZS1uYXZfX2xpc3Qge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IHZhcigtLXNwYWNlLXMpO1xuXHR9XG5cblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRnYXA6IHZhcigtLW5hdi1nYXApO1xuXHR9XG59XG5cbi8vIFRoZSBzZXF1ZW5jZS4gRWFjaCBpdGVtIGNhcnJpZXMgaXRzIHBsYWNlIGFzIC0taSwgc28gdGhlIGRlbGF5IGlzIGFyaXRobWV0aWNcbi8vIHJhdGhlciB0aGFuIGEgcnVsZSBwZXIgaXRlbS4gQ2xvc2luZyBkcm9wcyBldmVyeSBkZWxheSwgc28gdGhlIHBhbmVsIGdvZXMgYXRcbi8vIG9uY2UgaW5zdGVhZCBvZiB1bndpbmRpbmcgaXRlbSBieSBpdGVtLlxuLnNpdGUtbmF2X19pdGVtLFxuLnNpdGUtbWVudV9fY29udGFjdCB7XG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAuODc1cmVtKTtcblx0XHR0cmFuc2l0aW9uOlxuXHRcdFx0b3BhY2l0eSAwLjVzIHZhcigtLWVhc2Utb3V0KSxcblx0XHRcdHRyYW5zZm9ybSAwLjVzIHZhcigtLWVhc2Utb3V0KTtcblx0fVxufVxuXG4uaXMtbWVudS1vcGVuIC5zaXRlLW5hdl9faXRlbSxcbi5pcy1tZW51LW9wZW4gLnNpdGUtbWVudV9fY29udGFjdCB7XG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdHRyYW5zaXRpb24tZGVsYXk6IGNhbGModmFyKC0taSwgMCkgKiAwLjA2cyArIDAuMTJzKTtcblx0fVxufVxuXG4uc2l0ZS1tZW51X19jb250YWN0IHtcblx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi5zaXRlLW1lbnVfX2xhYmVsIHtcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtM3hzKTtcblx0Zm9udC1zaXplOiB2YXIoLS1zaXplLWxhYmVsKTtcblx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLWxhYmVsKTtcblx0Y29sb3I6IHZhcigtLWluay0zOCk7XG59XG5cbi8vIEFuIGFkZHJlc3MgaXMgbm90IGEgaGVhZGluZywgc28gdGhlIHVwcGVyY2FzZSBvZiB0aGUgY2hyb21lIGlzIGxpZnRlZCBoZXJlLlxuLnNpdGUtbWVudV9fZW1haWwge1xuXHRmb250LXNpemU6IHZhcigtLXNpemUtYm9keSk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1ib2R5KTtcblx0Y29sb3I6IHZhcigtLWluayk7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ydWxlKTtcblx0dHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2Utb3V0KTtcblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzLXZpc2libGUge1xuXHRcdGNvbG9yOiB2YXIoLS1icmljayk7XG5cdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogY3VycmVudENvbG9yO1xuXHR9XG59XG5cbi5zaXRlLW5hdl9faXRlbSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vLyBUaGUgbGFiZWwgaXMgYSBzZXBhcmF0ZSBzcGFuIHNvIHRoZSBydWxlIGNhbiBzaXQgdW5kZXIgdGhlIHRleHQgYWxvbmUsXG4vLyBhbmQgc28gdGhlIGxpZnQgb24gaG92ZXIgZG9lcyBub3QgZHJhZyB0aGUgcnVsZSB3aXRoIGl0LlxuLnNpdGUtbmF2X19saW5rIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBcIndnaHRcIiA1MDAsIFwid2R0aFwiIDEwMDtcblx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0Ly8gSW4gdGhlIHBhbmVsIHRoZSBpdGVtcyBhcmUgdGhlIHBhZ2UsIHNvIHRoZXkgY2FycnkgdGhlIHdlaWdodCB0aGUgcm93XG5cdC8vIGluIHRoZSBoZWFkZXIgY2Fubm90LlxuXHRmb250LXNpemU6IHZhcigtLXNpemUtc3ViaGVhZCk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFjay1uYXYpO1xuXHRjb2xvcjogdmFyKC0taW5rLTcwKTtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1zaXplLW5hdik7XG5cdH1cblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzLXZpc2libGUge1xuXHRcdGNvbG9yOiB2YXIoLS1icmljayk7XG5cdH1cblxuXHQmLmlzLWFjdGl2ZSB7XG5cdFx0Y29sb3I6IHZhcigtLWluayk7XG5cdH1cbn1cblxuLnNpdGUtbmF2X19sYWJlbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlLW91dCk7XG5cblx0Ly8gVGhlIHJ1bGUgd2lwZXMgaW4gZnJvbSB0aGUgbGVmdCBvbiBob3ZlciBhbmQgcmV0cmVhdHMgdG8gdGhlIHJpZ2h0IG9uXG5cdC8vIGxlYXZpbmcsIHNvIHRoZSBtb3ZlbWVudCByZWFkcyBhcyBvbmUgY29udGludW91cyBzdHJva2UuXG5cdCY6OmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRyaWdodDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0bGVmdDogMDtcblx0XHRoZWlnaHQ6IDFweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdFx0dHJhbnNmb3JtOiBzY2FsZVgoMCk7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyO1xuXHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjQycyB2YXIoLS1lYXNlLW91dCk7XG5cdH1cbn1cblxuLnNpdGUtbmF2X19saW5rOmhvdmVyIC5zaXRlLW5hdl9fbGFiZWwsXG4uc2l0ZS1uYXZfX2xpbms6Zm9jdXMtdmlzaWJsZSAuc2l0ZS1uYXZfX2xhYmVsIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuXG5cdCY6OmFmdGVyIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcblx0fVxufVxuXG4uc2l0ZS1uYXZfX2xpbmsuaXMtYWN0aXZlIC5zaXRlLW5hdl9fbGFiZWw6OmFmdGVyIHtcblx0dHJhbnNmb3JtOiBzY2FsZVgoMSk7XG5cdHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1xufVxuXG5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIFBSRUxPQURFUlxuLy8gRmlyc3QgdmlzaXQgb25seS4gVGhlIGhlYWQgc2NyaXB0IGFkZHMgLmhhcy1pbnRybywgc29cbi8vIHJlcGVhdCB2aXNpdHMgbmV2ZXIgcGFpbnQgaXQuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbi5wcmVsb2FkIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLmhhcy1pbnRybyAucHJlbG9hZCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0aW5zZXQ6IDA7XG5cdHotaW5kZXg6IDEwMDtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyKTtcbn1cblxuLnByZWxvYWRfX21hcmsge1xuXHR3aWR0aDogMTMuMTI1cmVtOyAvLyAyMTBweCwgYXMgdGhlIHNwbGFzaCBmcmFtZVxuXHRtYXgtd2lkdGg6IDU0dnc7XG5cdGNvbG9yOiB2YXIoLS1pbmspO1xufVxuXG4ud29yZG1hcmstc3ZnIHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogYXV0bztcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdGZpbGw6IGN1cnJlbnRDb2xvcjtcblxuXHQud20tcnVsZSB7XG5cdFx0c3Ryb2tlOiBjdXJyZW50Q29sb3I7XG5cdFx0c3Ryb2tlLXdpZHRoOiAxO1xuXHRcdHZlY3Rvci1lZmZlY3Q6IG5vbi1zY2FsaW5nLXN0cm9rZTtcblx0fVxufVxuXG4uaGFzLWludHJvIC53bS1wYXJ0IHtcblx0b3BhY2l0eTogMDtcbn1cblxuLmhhcy1pbnRybyAud20tcnVsZSB7XG5cdG9wYWNpdHk6IDA7XG59XG5cbi8vIEhvbGQgdGhlIGNocm9tZSBhbmQgcGFnZSBiYWNrIHVudGlsIHRoZSBlbnRyYW5jZSBydW5zXG4uaXMtbG9hZGluZyAuc2l0ZS1sb2dvLFxuLmlzLWxvYWRpbmcgLnNpdGUtYnVyZ2VyLFxuLmlzLWxvYWRpbmcgLnNpdGUtbmF2X19pdGVtLFxuLmlzLWxvYWRpbmcgLnNpdGUtbWFpbiA+ICoge1xuXHRvcGFjaXR5OiAwO1xufVxuXG4vLyBUaGUgcGFuZWwgY292ZXJzIHRoZSB2aWV3cG9ydCwgc28gdGhlIHBhZ2UgYmVoaW5kIGl0IG11c3Qgbm90IHNjcm9sbC5cbi5pcy1tZW51LW9wZW4sXG4uaXMtbWVudS1vcGVuIGJvZHkge1xuXHRAaW5jbHVkZSBmdS5icmVha3BvaW50KHNtYWxsIG9ubHkpIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG59XG5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIFBBR0UgVFJBTlNJVElPTiAoQmFyYmEgc3luYyBtb3JwaClcbi8vIFdoaWxlIGEgbW9ycGggcnVucyBib3RoIGNvbnRhaW5lcnMgYXJlIHN0YWNrZWQsIGZ1bGxcbi8vIGJsZWVkLiBUaGUgaWRlbnRpdHkgdHJhbnNmb3JtIGtlZXBzIGZpeGVkIGNoaWxkcmVuIGluc2lkZVxuLy8gdGhlIGNsaXAgaW4gU2FmYXJpLlxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4uaXMtbW9ycGhpbmcge1xuXHQuYmFyYmEtY29udGFpbmVyIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0aW5zZXQ6IDA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG5cdFx0d2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgY2xpcC1wYXRoO1xuXHRcdGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblx0fVxuXG5cdC5iYXJiYS1jb250YWluZXIuaXMtbGVhdmluZyB7XG5cdFx0ei1pbmRleDogMTtcblx0fVxuXG5cdC5iYXJiYS1jb250YWluZXIuaXMtZW50ZXJpbmcge1xuXHRcdHotaW5kZXg6IDI7XG5cdH1cbn1cblxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuLy8gU0lURSBGT09URVJcbi8vIERlbGliZXJhdGVseSBxdWlldDogdGhlIHNhbWUgZ3V0dGVycywgc2l6ZSBhbmQgY2FzaW5nIGFzIHRoZSBmaXhlZCBoZWFkZXIsXG4vLyBoZWxkIHdlbGwgYmFjayBzbyBpdCByZWFkcyBhcyBhIG1hcmdpbiBub3RlIHJhdGhlciB0aGFuIGEgc2Vjb25kIHBpZWNlIG9mXG4vLyBjaHJvbWUuIC5zaXRlLWZyYW1lIGlzIGEgZmxleCBjb2x1bW4gYW5kIC5zaXRlLW1haW4gZmxleGVzLCBzb1xuLy8gdGhpcyBmYWxscyB0byB0aGUgZm9vdCBvZiB0aGUgY29udGVudCBvbiBhIGxvbmcgcGFnZSBhbmQgdG8gdGhlIGZvb3Qgb2Zcbi8vIHRoZSB2aWV3cG9ydCBvbiBhIHNob3J0IG9uZS5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLnNpdGUtZm9vdGVyIHtcblx0bWFyZ2luLXRvcDogYXV0bztcblx0cGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTJ4bCk7XG5cdG9wYWNpdHk6IDAuMjU7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saC10aWdodCk7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5zaXRlLWZvb3Rlcl9faW5uZXIge1xuXHRyb3ctZ2FwOiB2YXIoLS1zcGFjZS0zeHMpO1xuXHRtYXgtd2lkdGg6IHZhcigtLXNpdGUpO1xuXHRtYXJnaW4taW5saW5lOiBhdXRvO1xufVxuXG4uc2l0ZS1mb290ZXJfX2NyZWRpdCxcbi5zaXRlLWZvb3Rlcl9fbGluayB7XG5cdGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBcIndnaHRcIiA1MDAsIFwid2R0aFwiIDEwMDtcblx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0Zm9udC1zaXplOiB2YXIoLS1zaXplLXN0aWxsKTtcblx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLW5hdik7XG5cdGNvbG9yOiB2YXIoLS1pbmstNzApO1xuXG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1zaXplLW5hdik7XG5cdH1cbn1cblxuLnNpdGUtZm9vdGVyX19jcmVkaXQge1xuXHRtYXJnaW46IDA7XG59XG5cbi5zaXRlLWZvb3Rlcl9fbGlua3Mge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRnYXA6IHZhcigtLXNwYWNlLXMpO1xuXHRtYXJnaW46IDA7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5zaXRlLWZvb3Rlcl9fbGluayB7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0dHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2Utb3V0KTtcblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzLXZpc2libGUge1xuXHRcdGNvbG9yOiB2YXIoLS1icmljayk7XG5cdH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0Kixcblx0Kjo6YmVmb3JlLFxuXHQqOjphZnRlciB7XG5cdFx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7XG5cdFx0YW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcblx0fVxuXG5cdC8vIER1cmF0aW9ucyBhbG9uZSBhcmUgbm90IGVub3VnaCBmb3IgdGhlIG1lbnU6IHRoZSBkZWxheXMgd291bGQgb3V0bGl2ZVxuXHQvLyB0aGVtIGFuZCB0aGUgaXRlbXMgd291bGQgc3RpbGwgYXJyaXZlIG9uZSBhdCBhIHRpbWUuIFRoZSBwYW5lbCBzaG91bGRcblx0Ly8gc2ltcGx5IGJlIHRoZXJlLlxuXHQuc2l0ZS1uYXZfX2l0ZW0sXG5cdC5zaXRlLW1lbnVfX2NvbnRhY3Qge1xuXHRcdHRyYW5zaXRpb24tZGVsYXk6IDBzICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuLy8gTk9UIEZPVU5ELCBBTkQgVEhJTiBXT1JLU1xuLy8gVHdvIHNtYWxsIHBhZ2VzIHRoYXQgcmVuZGVyIG91dHNpZGUgdGhlIGJsb2NrIHN5c3RlbTogNDA0LnBocCwgYW5kIHRoZVxuLy8gc3R1YiBzaW5nbGUtd29yay5waHAgc2hvd3MgZm9yIGEgd29yayB0aGF0IGlzIG9ubHkgYSBsaW5lIG9uIHRoZSBhcmNoaXZlLlxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4ubm90LWZvdW5kLFxuLndvcmstc3R1YiB7XG5cdG1heC13aWR0aDogdmFyKC0tbWVhc3VyZSk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS0yeGwpO1xuXG5cdC5ub3QtZm91bmRfX3RpdGxlLFxuXHQud29yay1zdHViX190aXRsZSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2Utcyk7XG5cdH1cblxuXHQubm90LWZvdW5kX19ib2R5LFxuXHQud29yay1zdHViX19zdW1tYXJ5IHtcblx0XHRtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS1tKTtcblx0XHRjb2xvcjogdmFyKC0taW5rLTcwKTtcblx0fVxufVxuXG4ubm90LWZvdW5kX19saW5rcyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGdhcDogdmFyKC0tc3BhY2UtbSk7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5ub3QtZm91bmRfX2xpbmssXG4ud29yay1zdHViX19saW5rIHtcblx0Y29sb3I6IHZhcigtLWluay03MCk7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDAuMmVtO1xuXHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdCY6aG92ZXIsXG5cdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0fVxufVxuIiwiLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuLy8gUEFTU1dPUkQgR0FURVxuLy8gUmVwbGFjZXMgV29yZFByZXNzJ3MgZGVmYXVsdCBwYXNzd29yZCBmb3JtLCB3aGljaCBhcnJpdmVzIHVuc3R5bGVkLlxuLy8gTWFya3VwIGNvbWVzIGZyb20gc3RpcnRpbmdhbGVfcGFzc3dvcmRfZm9ybSgpIGluIGluY2x1ZGVzL3RqaG9sZS1wcml2YWN5LnBocC5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLnBhc3N3b3JkLWdhdGUge1xuXHRtYXgtd2lkdGg6IHZhcigtLW1lYXN1cmUpO1xuXG5cdC5wYXNzd29yZC1nYXRlX19pbnRybyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtbSk7XG5cdFx0Y29sb3I6IHZhcigtLWluay03MCk7XG5cdH1cblxuXHQucGFzc3dvcmQtZ2F0ZV9fbGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTJ4cyk7XG5cdFx0Y29sb3I6IHZhcigtLWluay0zOCk7XG5cdH1cblxuXHQucGFzc3dvcmQtZ2F0ZV9fcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXHRcdGdhcDogdmFyKC0tc3BhY2UteHMpO1xuXHRcdG1heC13aWR0aDogMjJyZW07XG5cdH1cblxuXHQucGFzc3dvcmQtZ2F0ZV9faW5wdXQge1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogdmFyKC0tc3BhY2UtMnhzKSAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnVsZSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0XHRjb2xvcjogdmFyKC0taW5rKTtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0taW5rKTtcblx0XHR9XG5cdH1cblxuXHQucGFzc3dvcmQtZ2F0ZV9fc3VibWl0IHtcblx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRwYWRkaW5nOiB2YXIoLS1zcGFjZS0yeHMpIDA7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiB2YXIoLS1pbmstNzApO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0XHR9XG5cdH1cbn1cbiIsIkB1c2UgXCJmb3VuZGF0aW9uL3V0aWwvdXRpbFwiIGFzIGZ1O1xuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4vLyBBTkFMWVRJQ1MgQ09OU0VOVFxuLy8gTWFya3VwIGNvbWVzIGZyb20gcGFydHMvc2hhcmVkL2NvbnNlbnQucGhwLiBJdCBzaXRzIG91dHNpZGUgdGhlIEJhcmJhXG4vLyB3cmFwcGVyLCBzbyBpdCBob2xkcyBzdGlsbCB3aGlsZSB0aGUgcGFnZSBtb3JwaHMgYmVuZWF0aCBpdC5cbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuLmNvbnNlbnQge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHJpZ2h0OiB2YXIoLS1wYWdlLXgpO1xuXHRib3R0b206IHZhcigtLXNwYWNlLXMpO1xuXHRsZWZ0OiB2YXIoLS1wYWdlLXgpO1xuXHR6LWluZGV4OiA0MDtcblx0cGFkZGluZzogdmFyKC0tc3BhY2Utcyk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyKTtcblx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tcnVsZSk7XG5cdC8vIEhlbGQgYmFjayB1bnRpbCB0aGUgc2NyaXB0IGhhcyByZWFkIHRoZSBzdG9yZWQgYW5zd2VyLCBzbyBhIHZpc2l0b3Igd2hvXG5cdC8vIGhhcyBhbHJlYWR5IGFuc3dlcmVkIG5ldmVyIHNlZXMgaXQgZmxhc2guXG5cdG9wYWNpdHk6IDA7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zcGFjZS14cykpO1xuXHR0cmFuc2l0aW9uOlxuXHRcdG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tZmFkZSkgdmFyKC0tZWFzZS1vdXQpLFxuXHRcdHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbi1mYWRlKSB2YXIoLS1lYXNlLW91dCk7XG5cblx0Ji5pcy1vcGVuIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zZm9ybTogbm9uZTtcblx0fVxuXG5cdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0cmlnaHQ6IGF1dG87XG5cdFx0bGVmdDogdmFyKC0tcGFnZS14KTtcblx0XHRtYXgtd2lkdGg6IDI4cmVtO1xuXHRcdHBhZGRpbmc6IHZhcigtLXNwYWNlLW0pO1xuXHR9XG5cblx0LmNvbnNlbnRfX3RleHQge1xuXHRcdG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLXMpO1xuXHRcdGNvbG9yOiB2YXIoLS1pbmstNzApO1xuXHR9XG5cblx0LmNvbnNlbnRfX21vcmUge1xuXHRcdGNvbG9yOiB2YXIoLS1pbmstNzApO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdHRleHQtdW5kZXJsaW5lLW9mZnNldDogMC4yZW07XG5cdFx0dHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2Utb3V0KTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGNvbG9yOiB2YXIoLS1icmljayk7XG5cdFx0fVxuXHR9XG5cblx0LmNvbnNlbnRfX2FjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogdmFyKC0tc3BhY2UtbSk7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdC5jb25zZW50X19idXR0b24ge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiB2YXIoLS1pbmstMzgpO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6IHZhcigtLWJyaWNrKTtcblx0XHR9XG5cdH1cblxuXHQuY29uc2VudF9fYnV0dG9uLS15ZXMge1xuXHRcdGNvbG9yOiB2YXIoLS1pbmspO1xuXHR9XG59XG5cbi8vIFRoZSBwYW5lbCBjb3ZlcnMgdGhlIHBhZ2UgYmVsb3cgbWVkaXVtLCBzbyB0aGUgcXVlc3Rpb24gd291bGQgc2l0IG9uIHRvcFxuLy8gb2YgdGhlIG1lbnUuIEl0IHdhaXRzLlxuLmlzLW1lbnUtb3BlbiAuY29uc2VudCB7XG5cdG9wYWNpdHk6IDA7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHQuY29uc2VudCB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdH1cbn1cbiIsIi5ibG9jay1iaW8ge1xuXHQuYmxvY2stYmlvX19ib3JuIHtcblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zeHMpO1xuXHR9XG5cblx0LmJsb2NrLWJpb19fYmlvZ3JhcGh5IHtcblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS14cyk7XG5cdH1cbn1cbiIsIkB1c2UgXCIuLi8uLi9hc3NldHMvc2Nzcy9mb3VuZGF0aW9uL3V0aWwvdXRpbFwiIGFzIGZ1O1xuXG4uYmxvY2stZXhoaWJpdGlvbiB7XG5cdC5ibG9jay1leGhpYml0aW9uX19kZXNjcmlwdGlvbiB7XG5cdFx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMnhzKTtcblx0fVxuXG5cdC5ibG9jay1leGhpYml0aW9uX190b3VyIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS1zKTtcblx0XHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0fVxuXG5cdHRoLFxuXHR0ZCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdH1cblxuXHR0aGVhZCB7XG5cdFx0Ly8gVGFibGVzIHN0YWNrIG9uIHNtYWxsIHNjcmVlbnMsIHNvIHRoZSBoZWFkIG9ubHkgc2hvd3MgZnJvbSBtZWRpdW1cblx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDtcblx0XHR9XG5cblx0XHR0aCB7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMnhzKTtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ydWxlKTtcblx0XHR9XG5cdH1cblxuXHR0Ym9keSB7XG5cdFx0dHIge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nLWJsb2NrOiB2YXIoLS1zcGFjZS0yeHMpO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJ1bGUpO1xuXG5cdFx0XHRAaW5jbHVkZSBmdS5icmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0XHRkaXNwbGF5OiB0YWJsZS1yb3c7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGQge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHRcdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0XHRcdGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cdFx0XHRcdHBhZGRpbmctYmxvY2s6IHZhcigtLXNwYWNlLTJ4cyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmJsb2NrLWV4aGliaXRpb25fX2RhdGVzIHtcblx0XHRjb2xvcjogdmFyKC0taW5rLTU1KTtcblxuXHRcdEBpbmNsdWRlIGZ1LmJyZWFrcG9pbnQobWVkaXVtKSB7XG5cdFx0XHR3aWR0aDogMTMuMTI1cmVtOyAvLyAyMTAgY29sdW1uIHBsdXMgMTggZ2FwXG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjZS1zKTtcblx0XHR9XG5cdH1cblxuXHQuYmxvY2stZXhoaWJpdGlvbl9fY2l0eSB7XG5cdFx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdHdpZHRoOiAxMS4xMjVyZW07IC8vIDE2MCBjb2x1bW4gcGx1cyAxOCBnYXBcblx0XHRcdHBhZGRpbmctcmlnaHQ6IHZhcigtLXNwYWNlLXMpO1xuXHRcdH1cblx0fVxufVxuIiwiQHVzZSBcIi4uLy4uL2Fzc2V0cy9zY3NzL2ZvdW5kYXRpb24vdXRpbC91dGlsXCIgYXMgZnU7XG5cbi5ibG9jay1ob21lLWZlYXR1cmUge1xuXHQuYmxvY2staG9tZS1mZWF0dXJlX19tZWRpYSB7XG5cdFx0QGluY2x1ZGUgZnUuYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdG1heC13aWR0aDogdmFyKC0tY2Fyb3VzZWwpO1xuXHRcdH1cblx0fVxuXG5cdC5ibG9jay1ob21lLWZlYXR1cmVfX2Nhcm91c2VsIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0YXNwZWN0LXJhdGlvOiA0IC8gMztcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJ1bGUpO1xuXHR9XG5cblx0LmJsb2NrLWhvbWUtZmVhdHVyZV9fc2xpZGUge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRpbnNldDogMDtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tZmFkZSkgZWFzZS1pbi1vdXQ7XG5cblx0XHQmLmlzLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdH1cblxuXHRcdGltZyB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xuXHRcdH1cblx0fVxuXG5cdC5ibG9jay1ob21lLWZlYXR1cmVfX2NhcHRpb24ge1xuXHRcdG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTJ4cyk7XG5cdH1cblxuXHQuYmxvY2staG9tZS1mZWF0dXJlX19hc2lkZSB7XG5cdFx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtbCk7XG5cblx0XHRAaW5jbHVkZSBmdS5icmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0d2lkdGg6IHZhcigtLWxpc3QpO1xuXHRcdFx0bWF4LXdpZHRoOiA0MCU7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LmJsb2NrLWhvbWUtZmVhdHVyZV9fbGlzdCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRyb3ctZ2FwOiAwLjU2MjVyZW07XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0fVxufVxuIiwiLmJsb2NrLWlkZW50aXR5IHtcblx0Ly8gQW5jaG9yZWQgdG8gdGhlIGZvb3Qgb2YgdGhlIGhvbWUgcGFnZSwgd2l0aCB0aGUgRmlnbWEgZ2FwIGFzIGEgbWluaW11bVxuXHRtYXgtd2lkdGg6IHZhcigtLWNhcm91c2VsKTtcblx0bWFyZ2luLXRvcDogYXV0bztcblx0cGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTJ4bCk7XG5cblx0LmJsb2NrLWlkZW50aXR5X19pbnRybyB7XG5cdFx0bWFyZ2luLXRvcDogMC42MjVyZW07XG5cdH1cbn1cbiIsIi5ibG9jay1wcmVzcy1saXN0IHtcblx0ZGlzcGxheTogZ3JpZDtcblx0cm93LWdhcDogMC41NjI1cmVtO1xuXHRtYXgtd2lkdGg6IHZhcigtLW1lYXN1cmUpO1xuXHRsaXN0LXN0eWxlOiBub25lO1xufVxuIiwiLmJsb2NrLXF1b3RlIHtcblx0bWF4LXdpZHRoOiB2YXIoLS1tZWFzdXJlKTtcblxuXHQuYmxvY2stcXVvdGVfX3RleHQgcCB7XG5cdFx0dGV4dC1pbmRlbnQ6IC0wLjRlbTsgLy8gaGFuZyB0aGUgb3BlbmluZyBxdW90YXRpb24gbWFya1xuXHR9XG5cblx0LmJsb2NrLXF1b3RlX19zb3VyY2Uge1xuXHRcdG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLXhzKTtcblx0fVxufVxuIiwiLmJsb2NrLXNlY3Rpb24tbGFiZWwge1xuXHQudC1sYWJlbCB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG59XG4iLCJAdXNlIFwiLi4vLi4vYXNzZXRzL3Njc3MvZm91bmRhdGlvbi91dGlsL3V0aWxcIiBhcyBmdTtcblxuLmJsb2NrLXN0aWxscyB7XG5cdC5ibG9jay1zdGlsbHNfX2xhYmVsIHtcblx0XHRtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS1zKTtcblx0fVxuXG5cdC5ibG9jay1zdGlsbHNfX2dyaWQge1xuXHRcdHJvdy1nYXA6IDAuNjI1cmVtO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHRAaW5jbHVkZSBmdS5icmVha3BvaW50KG1lZGl1bSkge1xuXHRcdFx0cm93LWdhcDogMC44NzVyZW07XG5cdFx0fVxuXHR9XG5cblx0LmJsb2NrLXN0aWxsc19fZnJhbWUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRhc3BlY3QtcmF0aW86IDQgLyAzO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnVsZSk7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHR9XG5cdH1cblxuXHQuYmxvY2stc3RpbGxzX19jYXB0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zeHMpO1xuXHR9XG59XG4iLCIuYmxvY2stdGV4dCB7XG5cdC5ibG9jay10ZXh0X19oZWFkaW5nICsgLmJsb2NrLXRleHRfX2JvZHkge1xuXHRcdG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTJ4cyk7XG5cdH1cbn1cbiIsIi5ibG9jay12aWRlbyB7XG5cdG1heC13aWR0aDogdmFyKC0tbWVhc3VyZSk7XG5cblx0LmJsb2NrLXZpZGVvX19mcmFtZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdC8vIFNldCBvbiB0aGUgd3JhcHBlciBieSB0aGUgcmVuZGVyIHRlbXBsYXRlLCBhbHdheXMgYSB1c2FibGUgdmFsdWUuXG5cdFx0YXNwZWN0LXJhdGlvOiB2YXIoLS1yYXRpbywgMTYgLyA5KTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNjcmVlbik7XG5cdH1cblxuXHQuYmxvY2stdmlkZW9fX21lZGlhIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0b2JqZWN0LWZpdDogY29udGFpbjtcblx0fVxuXG5cdC8vIFRoZSBwb3N0ZXIgc2l0cyB1bmRlciB0aGUgcGxheSBjb250cm9sIHVudGlsIHRoZSBwbGF5ZXIgaXMgaW5qZWN0ZWQuXG5cdC5ibG9jay12aWRlb19fcG9zdGVyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0aW5zZXQ6IDA7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHR9XG5cblx0XHQvLyBBIHF1aWV0IHNjcmltLiBBIHRpdGxlIGNhcmQgaXMgYnJpZ2h0IGFuZCBjYXJyaWVzIGl0cyBvd24gdHlwZSwgc29cblx0XHQvLyB3aXRob3V0IHRoaXMgdGhlIHBsYXkgY29udHJvbCBoYXMgdG8gY29tcGV0ZSB3aXRoIGl0LlxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRpbnNldDogMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNjcmVlbik7XG5cdFx0XHRvcGFjaXR5OiAwLjM4O1xuXHRcdH1cblx0fVxuXG5cdC8vIFZpbWVvJ3Mgb3duIGlmcmFtZSwgaW5qZWN0ZWQgb24gcGxheS5cblx0LmJsb2NrLXZpZGVvX19wbGF5ZXIge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRpbnNldDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0Ym9yZGVyOiAwO1xuXHR9XG5cblx0LmJsb2NrLXZpZGVvX19wbGF5IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0aW5zZXQ6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiB2YXIoLS1vbi1zY3JlZW4pO1xuXHRcdGZvbnQtZmFtaWx5OiB2YXIoLS1zYW5zKTtcblx0XHRmb250LXZhcmlhdGlvbi1zZXR0aW5nczogXCJ3Z2h0XCIgNjAwLCBcIndkdGhcIiAxMDA7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRmb250LXNpemU6IHZhcigtLXNpemUtbGFiZWwpO1xuXHRcdGxpbmUtaGVpZ2h0OiB2YXIoLS1saC10aWdodCk7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNrLWxhYmVsKTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6IHZhcigtLXBhcGVyKTtcblx0XHR9XG5cdH1cblxuXHQvLyBUaGUgY2lyY2xlIHN0YXlzIHB1dCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBmcmFtZS4gT25seSB0aGUgbGFiZWwgbW92ZXMsXG5cdC8vIHNvIGl0IGlzIHRha2VuIG91dCBvZiB0aGUgZmxvdyBhbmQgc2l0cyB1bmRlciB0aGUgY2lyY2xlIGF0IHJlc3QuIFRoZVxuXHQvLyBzY3JpcHQgdGhlbiB0cmFpbHMgaXQgYWZ0ZXIgdGhlIHBvaW50ZXIgZnJvbSB0aGVyZSwgdXNpbmcgdHJhbnNmb3JtLFxuXHQvLyB3aGljaCBjb21wb3NlcyB3aXRoIHRoZSB0cmFuc2xhdGUgYmVsb3cgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgaXQuXG5cdC5ibG9jay12aWRlb19fbGFiZWwge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0dG9wOiBjYWxjKDUwJSArIDEuNzVyZW0pO1xuXHRcdHRyYW5zbGF0ZTogLTUwJSAwO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0d2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcblx0fVxuXG5cdC5ibG9jay12aWRlb19faWNvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiAyLjM3NXJlbTtcblx0XHRoZWlnaHQ6IDIuMzc1cmVtO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cblx0XHQvLyBQbGF5IHRyaWFuZ2xlLCBudWRnZWQgcmlnaHQgc28gaXQgc2l0cyBvcHRpY2FsbHkgY2VudHJlZC5cblx0XHQmOjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0d2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDA7XG5cdFx0XHRtYXJnaW4tbGVmdDogMC4xODc1cmVtO1xuXHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdGJvcmRlci13aWR0aDogMC4zMTI1cmVtIDAgMC4zMTI1cmVtIDAuNXJlbTtcblx0XHRcdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgY3VycmVudENvbG9yO1xuXHRcdH1cblx0fVxuXG5cdC5ibG9jay12aWRlb19fY2FwdGlvbiB7XG5cdFx0bWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMnhzKTtcblx0fVxuXG5cdCYuaXMtcGxheWluZyAuYmxvY2stdmlkZW9fX3BsYXkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHQmLmlzLXBsYXlpbmcgLmJsb2NrLXZpZGVvX19wb3N0ZXIge1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cbn1cbiIsIi5ibG9jay13b3JrLWRldGFpbHMge1xuXHRtYXgtd2lkdGg6IHZhcigtLWlubmVyKTtcbn1cbiJdfQ== */