@charset "UTF-8";
/**
 * Foundation for Sites by ZURB
 * Version 6.5.2
 * foundation.zurb.com
 * Licensed under MIT Open Source
 */
@media print, screen and (min-width: 40em) {
  .reveal, .reveal.tiny, .reveal.small, .reveal.large {
    right: auto;
    left: auto;
    margin: 0 auto;
  }
}

/*! 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: 0.67em 0;
}

hr {
  box-sizing: content-box;
  height: 0;
  overflow: visible;
}

pre {
  font-family: monospace, monospace;
  font-size: 1em;
}

a {
  background-color: transparent;
}

abbr[title] {
  border-bottom: none;
  text-decoration: underline;
  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: 0.35em 0.75em 0.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;
}

.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: "Verdana", Helvetica, 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;
}

button {
  padding: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: 0;
  border-radius: 0;
  background: transparent;
  line-height: 1;
  cursor: auto;
}

[data-whatinput='mouse'] button {
  outline: 0;
}

pre {
  overflow: auto;
}

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
}

.is-visible {
  display: block !important;
}

.is-hidden {
  display: none !important;
}

[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  line-height: 1.5;
  color: #0a0a0a;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}

[type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus,
textarea:focus {
  outline: none;
  border: 1px solid #8a8a8a;
  background-color: #fefefe;
  box-shadow: 0 0 5px #cacaca;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
}

textarea {
  max-width: 100%;
}

textarea[rows] {
  height: auto;
}

input:disabled, input[readonly],
textarea:disabled,
textarea[readonly] {
  background-color: #e6e6e6;
  cursor: not-allowed;
}

[type='submit'],
[type='button'] {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border-radius: 0;
}

input[type='search'] {
  box-sizing: border-box;
}

:-ms-input-placeholder {
  color: #cacaca;
}

::placeholder {
  color: #cacaca;
}

[type='file'],
[type='checkbox'],
[type='radio'] {
  margin: 0 0 1rem;
}

[type='checkbox'] + label,
[type='radio'] + label {
  display: inline-block;
  vertical-align: baseline;
  margin-left: 0.5rem;
  margin-right: 1rem;
  margin-bottom: 0;
}

[type='checkbox'] + label[for],
[type='radio'] + label[for] {
  cursor: pointer;
}

label > [type='checkbox'],
label > [type='radio'] {
  margin-right: 0.5rem;
}

[type='file'] {
  width: 100%;
}

label {
  display: block;
  margin: 0;
  font-size: 0.875rem;
  font-weight: normal;
  line-height: 1.8;
  color: #0a0a0a;
}

label.middle {
  margin: 0 0 1rem;
  padding: 0.5625rem 0;
}

.help-text {
  margin-top: -0.5rem;
  font-size: 0.8125rem;
  font-style: italic;
  color: #0a0a0a;
}

.input-group {
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  margin-bottom: 1rem;
  -ms-flex-align: stretch;
      align-items: stretch;
}

.input-group > :first-child, .input-group > :first-child.input-group-button > * {
  border-radius: 0 0 0 0;
}

.input-group > :last-child, .input-group > :last-child.input-group-button > * {
  border-radius: 0 0 0 0;
}

.input-group-label, .input-group-field, .input-group-button, .input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  margin: 0;
  white-space: nowrap;
}

.input-group-label {
  padding: 0 1rem;
  border: 1px solid #cacaca;
  background: #e6e6e6;
  color: #0a0a0a;
  text-align: center;
  white-space: nowrap;
  display: -ms-flexbox;
  display: flex;
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
  -ms-flex-align: center;
      align-items: center;
}

.input-group-label:first-child {
  border-right: 0;
}

.input-group-label:last-child {
  border-left: 0;
}

.input-group-field {
  border-radius: 0;
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
  min-width: 0;
}

.input-group-button {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
  display: -ms-flexbox;
  display: flex;
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.input-group-button a,
.input-group-button input,
.input-group-button button,
.input-group-button label {
  -ms-flex-item-align: stretch;
      -ms-grid-row-align: stretch;
      align-self: stretch;
  height: auto;
  padding-top: 0;
  padding-bottom: 0;
  font-size: 1rem;
}

fieldset {
  margin: 0;
  padding: 0;
  border: 0;
}

legend {
  max-width: 100%;
  margin-bottom: 0.5rem;
}

.fieldset {
  margin: 1.125rem 0;
  padding: 1.25rem;
  border: 1px solid #cacaca;
}

.fieldset legend {
  margin: 0;
  margin-left: -0.1875rem;
  padding: 0 0.1875rem;
}

select {
  height: 2.4375rem;
  margin: 0 0 1rem;
  padding: 0.5rem;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  line-height: 1.5;
  color: #0a0a0a;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");
  background-origin: content-box;
  background-position: right -1rem center;
  background-repeat: no-repeat;
  background-size: 9px 6px;
  padding-right: 1.5rem;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
}

@media screen and (min-width: 0\0) {
  select {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==");
  }
}

select:focus {
  outline: none;
  border: 1px solid #8a8a8a;
  background-color: #fefefe;
  box-shadow: 0 0 5px #cacaca;
  transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
}

select:disabled {
  background-color: #e6e6e6;
  cursor: not-allowed;
}

select::-ms-expand {
  display: none;
}

select[multiple] {
  height: auto;
  background-image: none;
}

.is-invalid-input:not(:focus) {
  border-color: #cc4b37;
  background-color: #f9ecea;
}

.is-invalid-input:not(:focus):-ms-input-placeholder {
  color: #cc4b37;
}

.is-invalid-input:not(:focus)::placeholder {
  color: #cc4b37;
}

.is-invalid-label {
  color: #cc4b37;
}

.form-error {
  display: none;
  margin-top: -0.5rem;
  margin-bottom: 1rem;
  font-size: 0.75rem;
  font-weight: bold;
  color: #cc4b37;
}

.form-error.is-visible {
  display: block;
}

div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
  margin: 0;
  padding: 0;
}

p {
  margin-bottom: 1rem;
  font-size: inherit;
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}

em,
i {
  font-style: italic;
  line-height: inherit;
}

strong,
b {
  font-weight: bold;
  line-height: inherit;
}

small {
  font-size: 80%;
  line-height: inherit;
}

h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
  font-family: "Verdana", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  color: inherit;
  text-rendering: optimizeLegibility;
}

h1 small, .h1 small,
h2 small, .h2 small,
h3 small, .h3 small,
h4 small, .h4 small,
h5 small, .h5 small,
h6 small, .h6 small {
  line-height: 0;
  color: #cacaca;
}

h1, .h1 {
  font-size: 1.5rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

h2, .h2 {
  font-size: 1.25rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

h3, .h3 {
  font-size: 1.1875rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

h4, .h4 {
  font-size: 1.125rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

h5, .h5 {
  font-size: 1.0625rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

h6, .h6 {
  font-size: 1rem;
  line-height: 1.4;
  margin-top: 0;
  margin-bottom: 0.5rem;
}

@media print, screen and (min-width: 40em) {
  h1, .h1 {
    font-size: 3rem;
  }
  h2, .h2 {
    font-size: 2.5rem;
  }
  h3, .h3 {
    font-size: 1.9375rem;
  }
  h4, .h4 {
    font-size: 1.5625rem;
  }
  h5, .h5 {
    font-size: 1.25rem;
  }
  h6, .h6 {
    font-size: 1rem;
  }
}

a {
  line-height: inherit;
  color: #1779ba;
  text-decoration: none;
  cursor: pointer;
}

a:hover, a:focus {
  color: #1468a0;
}

a img {
  border: 0;
}

hr {
  clear: both;
  max-width: 75rem;
  height: 0;
  margin: 1.25rem auto;
  border-top: 0;
  border-right: 0;
  border-bottom: 1px solid #cacaca;
  border-left: 0;
}

ul,
ol,
dl {
  margin-bottom: 1rem;
  list-style-position: outside;
  line-height: 1.6;
}

li {
  font-size: inherit;
}

ul {
  margin-left: 1.25rem;
  list-style-type: disc;
}

ol {
  margin-left: 1.25rem;
}

ul ul, ol ul, ul ol, ol ol {
  margin-left: 1.25rem;
  margin-bottom: 0;
}

dl {
  margin-bottom: 1rem;
}

dl dt {
  margin-bottom: 0.3rem;
  font-weight: bold;
}

blockquote {
  margin: 0 0 1rem;
  padding: 0.5625rem 1.25rem 0 1.1875rem;
  border-left: 1px solid #cacaca;
}

blockquote, blockquote p {
  line-height: 1.6;
  color: #8a8a8a;
}

cite {
  display: block;
  font-size: 0.8125rem;
  color: #8a8a8a;
}

cite:before {
  content: "— ";
}

abbr, abbr[title] {
  border-bottom: 1px dotted #0a0a0a;
  cursor: help;
  text-decoration: none;
}

figure {
  margin: 0;
}

code {
  padding: 0.125rem 0.3125rem 0.0625rem;
  border: 1px solid #cacaca;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  font-weight: normal;
  color: #0a0a0a;
}

kbd {
  margin: 0;
  padding: 0.125rem 0.25rem 0;
  background-color: #e6e6e6;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
  color: #0a0a0a;
}

.subheader {
  margin-top: 0.2rem;
  margin-bottom: 0.5rem;
  font-weight: normal;
  line-height: 1.4;
  color: #8a8a8a;
}

.lead {
  font-size: 125%;
  line-height: 1.6;
}

.stat {
  font-size: 2.5rem;
  line-height: 1;
}

p + .stat {
  margin-top: -1rem;
}

ul.no-bullet, ol.no-bullet {
  margin-left: 0;
  list-style: none;
}

.text-left {
  text-align: left;
}

.text-right {
  text-align: right;
}

.text-center {
  text-align: center;
}

.text-justify {
  text-align: justify;
}

@media print, screen and (min-width: 40em) {
  .medium-text-left {
    text-align: left;
  }
  .medium-text-right {
    text-align: right;
  }
  .medium-text-center {
    text-align: center;
  }
  .medium-text-justify {
    text-align: justify;
  }
}

@media print, screen and (min-width: 64em) {
  .large-text-left {
    text-align: left;
  }
  .large-text-right {
    text-align: right;
  }
  .large-text-center {
    text-align: center;
  }
  .large-text-justify {
    text-align: justify;
  }
}

.show-for-print {
  display: none !important;
}

@media print {
  * {
    background: transparent !important;
    box-shadow: none !important;
    color: black !important;
    text-shadow: none !important;
  }
  .show-for-print {
    display: block !important;
  }
  .hide-for-print {
    display: none !important;
  }
  table.show-for-print {
    display: table !important;
  }
  thead.show-for-print {
    display: table-header-group !important;
  }
  tbody.show-for-print {
    display: table-row-group !important;
  }
  tr.show-for-print {
    display: table-row !important;
  }
  td.show-for-print {
    display: table-cell !important;
  }
  th.show-for-print {
    display: table-cell !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  .ir a:after,
  a[href^='javascript:']:after,
  a[href^='#']:after {
    content: '';
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  pre,
  blockquote {
    border: 1px solid #8a8a8a;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  @page {
    margin: 0.5cm;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .print-break-inside {
    page-break-inside: auto;
  }
}

.grid-container {
  padding-right: 0.625rem;
  padding-left: 0.625rem;
  max-width: 75rem;
  margin-left: auto;
  margin-right: auto;
}

@media print, screen and (min-width: 40em) {
  .grid-container {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem;
  }
}

.grid-container.fluid {
  padding-right: 0.625rem;
  padding-left: 0.625rem;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

@media print, screen and (min-width: 40em) {
  .grid-container.fluid {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem;
  }
}

.grid-container.full {
  padding-right: 0;
  padding-left: 0;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.grid-x {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row wrap;
      flex-flow: row wrap;
}

.cell {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
  min-height: 0px;
  min-width: 0px;
  width: 100%;
}

.cell.auto {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

.cell.shrink {
  -ms-flex: 0 0 auto;
      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 {
  -ms-flex-preferred-size: auto;
      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 {
    -ms-flex-preferred-size: auto;
        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 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto;
  }
}

.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 {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.grid-x > .small-1 {
  width: 8.33333%;
}

.grid-x > .small-2 {
  width: 16.66667%;
}

.grid-x > .small-3 {
  width: 25%;
}

.grid-x > .small-4 {
  width: 33.33333%;
}

.grid-x > .small-5 {
  width: 41.66667%;
}

.grid-x > .small-6 {
  width: 50%;
}

.grid-x > .small-7 {
  width: 58.33333%;
}

.grid-x > .small-8 {
  width: 66.66667%;
}

.grid-x > .small-9 {
  width: 75%;
}

.grid-x > .small-10 {
  width: 83.33333%;
}

.grid-x > .small-11 {
  width: 91.66667%;
}

.grid-x > .small-12 {
  width: 100%;
}

@media print, screen and (min-width: 40em) {
  .grid-x > .medium-auto {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
    width: auto;
  }
  .grid-x > .medium-shrink, .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 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
  }
  .grid-x > .medium-shrink {
    width: auto;
  }
  .grid-x > .medium-1 {
    width: 8.33333%;
  }
  .grid-x > .medium-2 {
    width: 16.66667%;
  }
  .grid-x > .medium-3 {
    width: 25%;
  }
  .grid-x > .medium-4 {
    width: 33.33333%;
  }
  .grid-x > .medium-5 {
    width: 41.66667%;
  }
  .grid-x > .medium-6 {
    width: 50%;
  }
  .grid-x > .medium-7 {
    width: 58.33333%;
  }
  .grid-x > .medium-8 {
    width: 66.66667%;
  }
  .grid-x > .medium-9 {
    width: 75%;
  }
  .grid-x > .medium-10 {
    width: 83.33333%;
  }
  .grid-x > .medium-11 {
    width: 91.66667%;
  }
  .grid-x > .medium-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .grid-x > .large-auto {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
    width: auto;
  }
  .grid-x > .large-shrink, .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 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
  }
  .grid-x > .large-shrink {
    width: auto;
  }
  .grid-x > .large-1 {
    width: 8.33333%;
  }
  .grid-x > .large-2 {
    width: 16.66667%;
  }
  .grid-x > .large-3 {
    width: 25%;
  }
  .grid-x > .large-4 {
    width: 33.33333%;
  }
  .grid-x > .large-5 {
    width: 41.66667%;
  }
  .grid-x > .large-6 {
    width: 50%;
  }
  .grid-x > .large-7 {
    width: 58.33333%;
  }
  .grid-x > .large-8 {
    width: 66.66667%;
  }
  .grid-x > .large-9 {
    width: 75%;
  }
  .grid-x > .large-10 {
    width: 83.33333%;
  }
  .grid-x > .large-11 {
    width: 91.66667%;
  }
  .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.625rem;
  margin-right: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-x {
    margin-left: -0.9375rem;
    margin-right: -0.9375rem;
  }
}

.grid-margin-x > .cell {
  width: calc(100% - 1.25rem);
  margin-left: 0.625rem;
  margin-right: 0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-x > .cell {
    width: calc(100% - 1.875rem);
    margin-left: 0.9375rem;
    margin-right: 0.9375rem;
  }
}

.grid-margin-x > .auto {
  width: auto;
}

.grid-margin-x > .shrink {
  width: auto;
}

.grid-margin-x > .small-1 {
  width: calc(8.33333% - 1.25rem);
}

.grid-margin-x > .small-2 {
  width: calc(16.66667% - 1.25rem);
}

.grid-margin-x > .small-3 {
  width: calc(25% - 1.25rem);
}

.grid-margin-x > .small-4 {
  width: calc(33.33333% - 1.25rem);
}

.grid-margin-x > .small-5 {
  width: calc(41.66667% - 1.25rem);
}

.grid-margin-x > .small-6 {
  width: calc(50% - 1.25rem);
}

.grid-margin-x > .small-7 {
  width: calc(58.33333% - 1.25rem);
}

.grid-margin-x > .small-8 {
  width: calc(66.66667% - 1.25rem);
}

.grid-margin-x > .small-9 {
  width: calc(75% - 1.25rem);
}

.grid-margin-x > .small-10 {
  width: calc(83.33333% - 1.25rem);
}

.grid-margin-x > .small-11 {
  width: calc(91.66667% - 1.25rem);
}

.grid-margin-x > .small-12 {
  width: calc(100% - 1.25rem);
}

@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.33333% - 1.875rem);
  }
  .grid-margin-x > .small-2 {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x > .small-3 {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x > .small-4 {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x > .small-5 {
    width: calc(41.66667% - 1.875rem);
  }
  .grid-margin-x > .small-6 {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x > .small-7 {
    width: calc(58.33333% - 1.875rem);
  }
  .grid-margin-x > .small-8 {
    width: calc(66.66667% - 1.875rem);
  }
  .grid-margin-x > .small-9 {
    width: calc(75% - 1.875rem);
  }
  .grid-margin-x > .small-10 {
    width: calc(83.33333% - 1.875rem);
  }
  .grid-margin-x > .small-11 {
    width: calc(91.66667% - 1.875rem);
  }
  .grid-margin-x > .small-12 {
    width: calc(100% - 1.875rem);
  }
  .grid-margin-x > .medium-auto {
    width: auto;
  }
  .grid-margin-x > .medium-shrink {
    width: auto;
  }
  .grid-margin-x > .medium-1 {
    width: calc(8.33333% - 1.875rem);
  }
  .grid-margin-x > .medium-2 {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x > .medium-3 {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x > .medium-4 {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x > .medium-5 {
    width: calc(41.66667% - 1.875rem);
  }
  .grid-margin-x > .medium-6 {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x > .medium-7 {
    width: calc(58.33333% - 1.875rem);
  }
  .grid-margin-x > .medium-8 {
    width: calc(66.66667% - 1.875rem);
  }
  .grid-margin-x > .medium-9 {
    width: calc(75% - 1.875rem);
  }
  .grid-margin-x > .medium-10 {
    width: calc(83.33333% - 1.875rem);
  }
  .grid-margin-x > .medium-11 {
    width: calc(91.66667% - 1.875rem);
  }
  .grid-margin-x > .medium-12 {
    width: calc(100% - 1.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.33333% - 1.875rem);
  }
  .grid-margin-x > .large-2 {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x > .large-3 {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x > .large-4 {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x > .large-5 {
    width: calc(41.66667% - 1.875rem);
  }
  .grid-margin-x > .large-6 {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x > .large-7 {
    width: calc(58.33333% - 1.875rem);
  }
  .grid-margin-x > .large-8 {
    width: calc(66.66667% - 1.875rem);
  }
  .grid-margin-x > .large-9 {
    width: calc(75% - 1.875rem);
  }
  .grid-margin-x > .large-10 {
    width: calc(83.33333% - 1.875rem);
  }
  .grid-margin-x > .large-11 {
    width: calc(91.66667% - 1.875rem);
  }
  .grid-margin-x > .large-12 {
    width: calc(100% - 1.875rem);
  }
}

.grid-padding-x .grid-padding-x {
  margin-right: -0.625rem;
  margin-left: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-padding-x .grid-padding-x {
    margin-right: -0.9375rem;
    margin-left: -0.9375rem;
  }
}

.grid-container:not(.full) > .grid-padding-x {
  margin-right: -0.625rem;
  margin-left: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-container:not(.full) > .grid-padding-x {
    margin-right: -0.9375rem;
    margin-left: -0.9375rem;
  }
}

.grid-padding-x > .cell {
  padding-right: 0.625rem;
  padding-left: 0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-padding-x > .cell {
    padding-right: 0.9375rem;
    padding-left: 0.9375rem;
  }
}

.small-up-1 > .cell {
  width: 100%;
}

.small-up-2 > .cell {
  width: 50%;
}

.small-up-3 > .cell {
  width: 33.33333%;
}

.small-up-4 > .cell {
  width: 25%;
}

.small-up-5 > .cell {
  width: 20%;
}

.small-up-6 > .cell {
  width: 16.66667%;
}

.small-up-7 > .cell {
  width: 14.28571%;
}

.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.33333%;
  }
  .medium-up-4 > .cell {
    width: 25%;
  }
  .medium-up-5 > .cell {
    width: 20%;
  }
  .medium-up-6 > .cell {
    width: 16.66667%;
  }
  .medium-up-7 > .cell {
    width: 14.28571%;
  }
  .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.33333%;
  }
  .large-up-4 > .cell {
    width: 25%;
  }
  .large-up-5 > .cell {
    width: 20%;
  }
  .large-up-6 > .cell {
    width: 16.66667%;
  }
  .large-up-7 > .cell {
    width: 14.28571%;
  }
  .large-up-8 > .cell {
    width: 12.5%;
  }
}

.grid-margin-x.small-up-1 > .cell {
  width: calc(100% - 1.25rem);
}

.grid-margin-x.small-up-2 > .cell {
  width: calc(50% - 1.25rem);
}

.grid-margin-x.small-up-3 > .cell {
  width: calc(33.33333% - 1.25rem);
}

.grid-margin-x.small-up-4 > .cell {
  width: calc(25% - 1.25rem);
}

.grid-margin-x.small-up-5 > .cell {
  width: calc(20% - 1.25rem);
}

.grid-margin-x.small-up-6 > .cell {
  width: calc(16.66667% - 1.25rem);
}

.grid-margin-x.small-up-7 > .cell {
  width: calc(14.28571% - 1.25rem);
}

.grid-margin-x.small-up-8 > .cell {
  width: calc(12.5% - 1.25rem);
}

@media print, screen and (min-width: 40em) {
  .grid-margin-x.small-up-1 > .cell {
    width: calc(100% - 1.875rem);
  }
  .grid-margin-x.small-up-2 > .cell {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x.small-up-3 > .cell {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x.small-up-4 > .cell {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x.small-up-5 > .cell {
    width: calc(20% - 1.875rem);
  }
  .grid-margin-x.small-up-6 > .cell {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x.small-up-7 > .cell {
    width: calc(14.28571% - 1.875rem);
  }
  .grid-margin-x.small-up-8 > .cell {
    width: calc(12.5% - 1.875rem);
  }
  .grid-margin-x.medium-up-1 > .cell {
    width: calc(100% - 1.875rem);
  }
  .grid-margin-x.medium-up-2 > .cell {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x.medium-up-3 > .cell {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x.medium-up-4 > .cell {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x.medium-up-5 > .cell {
    width: calc(20% - 1.875rem);
  }
  .grid-margin-x.medium-up-6 > .cell {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x.medium-up-7 > .cell {
    width: calc(14.28571% - 1.875rem);
  }
  .grid-margin-x.medium-up-8 > .cell {
    width: calc(12.5% - 1.875rem);
  }
}

@media print, screen and (min-width: 64em) {
  .grid-margin-x.large-up-1 > .cell {
    width: calc(100% - 1.875rem);
  }
  .grid-margin-x.large-up-2 > .cell {
    width: calc(50% - 1.875rem);
  }
  .grid-margin-x.large-up-3 > .cell {
    width: calc(33.33333% - 1.875rem);
  }
  .grid-margin-x.large-up-4 > .cell {
    width: calc(25% - 1.875rem);
  }
  .grid-margin-x.large-up-5 > .cell {
    width: calc(20% - 1.875rem);
  }
  .grid-margin-x.large-up-6 > .cell {
    width: calc(16.66667% - 1.875rem);
  }
  .grid-margin-x.large-up-7 > .cell {
    width: calc(14.28571% - 1.875rem);
  }
  .grid-margin-x.large-up-8 > .cell {
    width: calc(12.5% - 1.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.33333%;
}

.small-margin-collapse > .small-2 {
  width: 16.66667%;
}

.small-margin-collapse > .small-3 {
  width: 25%;
}

.small-margin-collapse > .small-4 {
  width: 33.33333%;
}

.small-margin-collapse > .small-5 {
  width: 41.66667%;
}

.small-margin-collapse > .small-6 {
  width: 50%;
}

.small-margin-collapse > .small-7 {
  width: 58.33333%;
}

.small-margin-collapse > .small-8 {
  width: 66.66667%;
}

.small-margin-collapse > .small-9 {
  width: 75%;
}

.small-margin-collapse > .small-10 {
  width: 83.33333%;
}

.small-margin-collapse > .small-11 {
  width: 91.66667%;
}

.small-margin-collapse > .small-12 {
  width: 100%;
}

@media print, screen and (min-width: 40em) {
  .small-margin-collapse > .medium-1 {
    width: 8.33333%;
  }
  .small-margin-collapse > .medium-2 {
    width: 16.66667%;
  }
  .small-margin-collapse > .medium-3 {
    width: 25%;
  }
  .small-margin-collapse > .medium-4 {
    width: 33.33333%;
  }
  .small-margin-collapse > .medium-5 {
    width: 41.66667%;
  }
  .small-margin-collapse > .medium-6 {
    width: 50%;
  }
  .small-margin-collapse > .medium-7 {
    width: 58.33333%;
  }
  .small-margin-collapse > .medium-8 {
    width: 66.66667%;
  }
  .small-margin-collapse > .medium-9 {
    width: 75%;
  }
  .small-margin-collapse > .medium-10 {
    width: 83.33333%;
  }
  .small-margin-collapse > .medium-11 {
    width: 91.66667%;
  }
  .small-margin-collapse > .medium-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .small-margin-collapse > .large-1 {
    width: 8.33333%;
  }
  .small-margin-collapse > .large-2 {
    width: 16.66667%;
  }
  .small-margin-collapse > .large-3 {
    width: 25%;
  }
  .small-margin-collapse > .large-4 {
    width: 33.33333%;
  }
  .small-margin-collapse > .large-5 {
    width: 41.66667%;
  }
  .small-margin-collapse > .large-6 {
    width: 50%;
  }
  .small-margin-collapse > .large-7 {
    width: 58.33333%;
  }
  .small-margin-collapse > .large-8 {
    width: 66.66667%;
  }
  .small-margin-collapse > .large-9 {
    width: 75%;
  }
  .small-margin-collapse > .large-10 {
    width: 83.33333%;
  }
  .small-margin-collapse > .large-11 {
    width: 91.66667%;
  }
  .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.33333%;
  }
  .medium-margin-collapse > .small-2 {
    width: 16.66667%;
  }
  .medium-margin-collapse > .small-3 {
    width: 25%;
  }
  .medium-margin-collapse > .small-4 {
    width: 33.33333%;
  }
  .medium-margin-collapse > .small-5 {
    width: 41.66667%;
  }
  .medium-margin-collapse > .small-6 {
    width: 50%;
  }
  .medium-margin-collapse > .small-7 {
    width: 58.33333%;
  }
  .medium-margin-collapse > .small-8 {
    width: 66.66667%;
  }
  .medium-margin-collapse > .small-9 {
    width: 75%;
  }
  .medium-margin-collapse > .small-10 {
    width: 83.33333%;
  }
  .medium-margin-collapse > .small-11 {
    width: 91.66667%;
  }
  .medium-margin-collapse > .small-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 40em) {
  .medium-margin-collapse > .medium-1 {
    width: 8.33333%;
  }
  .medium-margin-collapse > .medium-2 {
    width: 16.66667%;
  }
  .medium-margin-collapse > .medium-3 {
    width: 25%;
  }
  .medium-margin-collapse > .medium-4 {
    width: 33.33333%;
  }
  .medium-margin-collapse > .medium-5 {
    width: 41.66667%;
  }
  .medium-margin-collapse > .medium-6 {
    width: 50%;
  }
  .medium-margin-collapse > .medium-7 {
    width: 58.33333%;
  }
  .medium-margin-collapse > .medium-8 {
    width: 66.66667%;
  }
  .medium-margin-collapse > .medium-9 {
    width: 75%;
  }
  .medium-margin-collapse > .medium-10 {
    width: 83.33333%;
  }
  .medium-margin-collapse > .medium-11 {
    width: 91.66667%;
  }
  .medium-margin-collapse > .medium-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .medium-margin-collapse > .large-1 {
    width: 8.33333%;
  }
  .medium-margin-collapse > .large-2 {
    width: 16.66667%;
  }
  .medium-margin-collapse > .large-3 {
    width: 25%;
  }
  .medium-margin-collapse > .large-4 {
    width: 33.33333%;
  }
  .medium-margin-collapse > .large-5 {
    width: 41.66667%;
  }
  .medium-margin-collapse > .large-6 {
    width: 50%;
  }
  .medium-margin-collapse > .large-7 {
    width: 58.33333%;
  }
  .medium-margin-collapse > .large-8 {
    width: 66.66667%;
  }
  .medium-margin-collapse > .large-9 {
    width: 75%;
  }
  .medium-margin-collapse > .large-10 {
    width: 83.33333%;
  }
  .medium-margin-collapse > .large-11 {
    width: 91.66667%;
  }
  .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.33333%;
  }
  .large-margin-collapse > .small-2 {
    width: 16.66667%;
  }
  .large-margin-collapse > .small-3 {
    width: 25%;
  }
  .large-margin-collapse > .small-4 {
    width: 33.33333%;
  }
  .large-margin-collapse > .small-5 {
    width: 41.66667%;
  }
  .large-margin-collapse > .small-6 {
    width: 50%;
  }
  .large-margin-collapse > .small-7 {
    width: 58.33333%;
  }
  .large-margin-collapse > .small-8 {
    width: 66.66667%;
  }
  .large-margin-collapse > .small-9 {
    width: 75%;
  }
  .large-margin-collapse > .small-10 {
    width: 83.33333%;
  }
  .large-margin-collapse > .small-11 {
    width: 91.66667%;
  }
  .large-margin-collapse > .small-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .large-margin-collapse > .medium-1 {
    width: 8.33333%;
  }
  .large-margin-collapse > .medium-2 {
    width: 16.66667%;
  }
  .large-margin-collapse > .medium-3 {
    width: 25%;
  }
  .large-margin-collapse > .medium-4 {
    width: 33.33333%;
  }
  .large-margin-collapse > .medium-5 {
    width: 41.66667%;
  }
  .large-margin-collapse > .medium-6 {
    width: 50%;
  }
  .large-margin-collapse > .medium-7 {
    width: 58.33333%;
  }
  .large-margin-collapse > .medium-8 {
    width: 66.66667%;
  }
  .large-margin-collapse > .medium-9 {
    width: 75%;
  }
  .large-margin-collapse > .medium-10 {
    width: 83.33333%;
  }
  .large-margin-collapse > .medium-11 {
    width: 91.66667%;
  }
  .large-margin-collapse > .medium-12 {
    width: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .large-margin-collapse > .large-1 {
    width: 8.33333%;
  }
  .large-margin-collapse > .large-2 {
    width: 16.66667%;
  }
  .large-margin-collapse > .large-3 {
    width: 25%;
  }
  .large-margin-collapse > .large-4 {
    width: 33.33333%;
  }
  .large-margin-collapse > .large-5 {
    width: 41.66667%;
  }
  .large-margin-collapse > .large-6 {
    width: 50%;
  }
  .large-margin-collapse > .large-7 {
    width: 58.33333%;
  }
  .large-margin-collapse > .large-8 {
    width: 66.66667%;
  }
  .large-margin-collapse > .large-9 {
    width: 75%;
  }
  .large-margin-collapse > .large-10 {
    width: 83.33333%;
  }
  .large-margin-collapse > .large-11 {
    width: 91.66667%;
  }
  .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);
}

.small-offset-1 {
  margin-left: 8.33333%;
}

.grid-margin-x > .small-offset-1 {
  margin-left: calc(8.33333% + 0.625rem);
}

.small-offset-2 {
  margin-left: 16.66667%;
}

.grid-margin-x > .small-offset-2 {
  margin-left: calc(16.66667% + 0.625rem);
}

.small-offset-3 {
  margin-left: 25%;
}

.grid-margin-x > .small-offset-3 {
  margin-left: calc(25% + 0.625rem);
}

.small-offset-4 {
  margin-left: 33.33333%;
}

.grid-margin-x > .small-offset-4 {
  margin-left: calc(33.33333% + 0.625rem);
}

.small-offset-5 {
  margin-left: 41.66667%;
}

.grid-margin-x > .small-offset-5 {
  margin-left: calc(41.66667% + 0.625rem);
}

.small-offset-6 {
  margin-left: 50%;
}

.grid-margin-x > .small-offset-6 {
  margin-left: calc(50% + 0.625rem);
}

.small-offset-7 {
  margin-left: 58.33333%;
}

.grid-margin-x > .small-offset-7 {
  margin-left: calc(58.33333% + 0.625rem);
}

.small-offset-8 {
  margin-left: 66.66667%;
}

.grid-margin-x > .small-offset-8 {
  margin-left: calc(66.66667% + 0.625rem);
}

.small-offset-9 {
  margin-left: 75%;
}

.grid-margin-x > .small-offset-9 {
  margin-left: calc(75% + 0.625rem);
}

.small-offset-10 {
  margin-left: 83.33333%;
}

.grid-margin-x > .small-offset-10 {
  margin-left: calc(83.33333% + 0.625rem);
}

.small-offset-11 {
  margin-left: 91.66667%;
}

.grid-margin-x > .small-offset-11 {
  margin-left: calc(91.66667% + 0.625rem);
}

@media print, screen and (min-width: 40em) {
  .medium-offset-0 {
    margin-left: 0%;
  }
  .grid-margin-x > .medium-offset-0 {
    margin-left: calc(0% + 0.9375rem);
  }
  .medium-offset-1 {
    margin-left: 8.33333%;
  }
  .grid-margin-x > .medium-offset-1 {
    margin-left: calc(8.33333% + 0.9375rem);
  }
  .medium-offset-2 {
    margin-left: 16.66667%;
  }
  .grid-margin-x > .medium-offset-2 {
    margin-left: calc(16.66667% + 0.9375rem);
  }
  .medium-offset-3 {
    margin-left: 25%;
  }
  .grid-margin-x > .medium-offset-3 {
    margin-left: calc(25% + 0.9375rem);
  }
  .medium-offset-4 {
    margin-left: 33.33333%;
  }
  .grid-margin-x > .medium-offset-4 {
    margin-left: calc(33.33333% + 0.9375rem);
  }
  .medium-offset-5 {
    margin-left: 41.66667%;
  }
  .grid-margin-x > .medium-offset-5 {
    margin-left: calc(41.66667% + 0.9375rem);
  }
  .medium-offset-6 {
    margin-left: 50%;
  }
  .grid-margin-x > .medium-offset-6 {
    margin-left: calc(50% + 0.9375rem);
  }
  .medium-offset-7 {
    margin-left: 58.33333%;
  }
  .grid-margin-x > .medium-offset-7 {
    margin-left: calc(58.33333% + 0.9375rem);
  }
  .medium-offset-8 {
    margin-left: 66.66667%;
  }
  .grid-margin-x > .medium-offset-8 {
    margin-left: calc(66.66667% + 0.9375rem);
  }
  .medium-offset-9 {
    margin-left: 75%;
  }
  .grid-margin-x > .medium-offset-9 {
    margin-left: calc(75% + 0.9375rem);
  }
  .medium-offset-10 {
    margin-left: 83.33333%;
  }
  .grid-margin-x > .medium-offset-10 {
    margin-left: calc(83.33333% + 0.9375rem);
  }
  .medium-offset-11 {
    margin-left: 91.66667%;
  }
  .grid-margin-x > .medium-offset-11 {
    margin-left: calc(91.66667% + 0.9375rem);
  }
}

@media print, screen and (min-width: 64em) {
  .large-offset-0 {
    margin-left: 0%;
  }
  .grid-margin-x > .large-offset-0 {
    margin-left: calc(0% + 0.9375rem);
  }
  .large-offset-1 {
    margin-left: 8.33333%;
  }
  .grid-margin-x > .large-offset-1 {
    margin-left: calc(8.33333% + 0.9375rem);
  }
  .large-offset-2 {
    margin-left: 16.66667%;
  }
  .grid-margin-x > .large-offset-2 {
    margin-left: calc(16.66667% + 0.9375rem);
  }
  .large-offset-3 {
    margin-left: 25%;
  }
  .grid-margin-x > .large-offset-3 {
    margin-left: calc(25% + 0.9375rem);
  }
  .large-offset-4 {
    margin-left: 33.33333%;
  }
  .grid-margin-x > .large-offset-4 {
    margin-left: calc(33.33333% + 0.9375rem);
  }
  .large-offset-5 {
    margin-left: 41.66667%;
  }
  .grid-margin-x > .large-offset-5 {
    margin-left: calc(41.66667% + 0.9375rem);
  }
  .large-offset-6 {
    margin-left: 50%;
  }
  .grid-margin-x > .large-offset-6 {
    margin-left: calc(50% + 0.9375rem);
  }
  .large-offset-7 {
    margin-left: 58.33333%;
  }
  .grid-margin-x > .large-offset-7 {
    margin-left: calc(58.33333% + 0.9375rem);
  }
  .large-offset-8 {
    margin-left: 66.66667%;
  }
  .grid-margin-x > .large-offset-8 {
    margin-left: calc(66.66667% + 0.9375rem);
  }
  .large-offset-9 {
    margin-left: 75%;
  }
  .grid-margin-x > .large-offset-9 {
    margin-left: calc(75% + 0.9375rem);
  }
  .large-offset-10 {
    margin-left: 83.33333%;
  }
  .grid-margin-x > .large-offset-10 {
    margin-left: calc(83.33333% + 0.9375rem);
  }
  .large-offset-11 {
    margin-left: 91.66667%;
  }
  .grid-margin-x > .large-offset-11 {
    margin-left: calc(91.66667% + 0.9375rem);
  }
}

.grid-y {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: column nowrap;
      flex-flow: column nowrap;
}

.grid-y > .cell {
  width: auto;
  max-width: 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 {
  -ms-flex-preferred-size: auto;
      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 {
    -ms-flex-preferred-size: auto;
        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 {
    -ms-flex-preferred-size: auto;
        flex-basis: auto;
  }
}

.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 {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.grid-y > .small-1 {
  height: 8.33333%;
}

.grid-y > .small-2 {
  height: 16.66667%;
}

.grid-y > .small-3 {
  height: 25%;
}

.grid-y > .small-4 {
  height: 33.33333%;
}

.grid-y > .small-5 {
  height: 41.66667%;
}

.grid-y > .small-6 {
  height: 50%;
}

.grid-y > .small-7 {
  height: 58.33333%;
}

.grid-y > .small-8 {
  height: 66.66667%;
}

.grid-y > .small-9 {
  height: 75%;
}

.grid-y > .small-10 {
  height: 83.33333%;
}

.grid-y > .small-11 {
  height: 91.66667%;
}

.grid-y > .small-12 {
  height: 100%;
}

@media print, screen and (min-width: 40em) {
  .grid-y > .medium-auto {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
    height: auto;
  }
  .grid-y > .medium-shrink, .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 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
  }
  .grid-y > .medium-shrink {
    height: auto;
  }
  .grid-y > .medium-1 {
    height: 8.33333%;
  }
  .grid-y > .medium-2 {
    height: 16.66667%;
  }
  .grid-y > .medium-3 {
    height: 25%;
  }
  .grid-y > .medium-4 {
    height: 33.33333%;
  }
  .grid-y > .medium-5 {
    height: 41.66667%;
  }
  .grid-y > .medium-6 {
    height: 50%;
  }
  .grid-y > .medium-7 {
    height: 58.33333%;
  }
  .grid-y > .medium-8 {
    height: 66.66667%;
  }
  .grid-y > .medium-9 {
    height: 75%;
  }
  .grid-y > .medium-10 {
    height: 83.33333%;
  }
  .grid-y > .medium-11 {
    height: 91.66667%;
  }
  .grid-y > .medium-12 {
    height: 100%;
  }
}

@media print, screen and (min-width: 64em) {
  .grid-y > .large-auto {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
    height: auto;
  }
  .grid-y > .large-shrink, .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 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
  }
  .grid-y > .large-shrink {
    height: auto;
  }
  .grid-y > .large-1 {
    height: 8.33333%;
  }
  .grid-y > .large-2 {
    height: 16.66667%;
  }
  .grid-y > .large-3 {
    height: 25%;
  }
  .grid-y > .large-4 {
    height: 33.33333%;
  }
  .grid-y > .large-5 {
    height: 41.66667%;
  }
  .grid-y > .large-6 {
    height: 50%;
  }
  .grid-y > .large-7 {
    height: 58.33333%;
  }
  .grid-y > .large-8 {
    height: 66.66667%;
  }
  .grid-y > .large-9 {
    height: 75%;
  }
  .grid-y > .large-10 {
    height: 83.33333%;
  }
  .grid-y > .large-11 {
    height: 91.66667%;
  }
  .grid-y > .large-12 {
    height: 100%;
  }
}

.grid-padding-y .grid-padding-y {
  margin-top: -0.625rem;
  margin-bottom: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-padding-y .grid-padding-y {
    margin-top: -0.9375rem;
    margin-bottom: -0.9375rem;
  }
}

.grid-padding-y > .cell {
  padding-top: 0.625rem;
  padding-bottom: 0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-padding-y > .cell {
    padding-top: 0.9375rem;
    padding-bottom: 0.9375rem;
  }
}

.grid-margin-y {
  margin-top: -0.625rem;
  margin-bottom: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-y {
    margin-top: -0.9375rem;
    margin-bottom: -0.9375rem;
  }
}

.grid-margin-y > .cell {
  height: calc(100% - 1.25rem);
  margin-top: 0.625rem;
  margin-bottom: 0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-y > .cell {
    height: calc(100% - 1.875rem);
    margin-top: 0.9375rem;
    margin-bottom: 0.9375rem;
  }
}

.grid-margin-y > .auto {
  height: auto;
}

.grid-margin-y > .shrink {
  height: auto;
}

.grid-margin-y > .small-1 {
  height: calc(8.33333% - 1.25rem);
}

.grid-margin-y > .small-2 {
  height: calc(16.66667% - 1.25rem);
}

.grid-margin-y > .small-3 {
  height: calc(25% - 1.25rem);
}

.grid-margin-y > .small-4 {
  height: calc(33.33333% - 1.25rem);
}

.grid-margin-y > .small-5 {
  height: calc(41.66667% - 1.25rem);
}

.grid-margin-y > .small-6 {
  height: calc(50% - 1.25rem);
}

.grid-margin-y > .small-7 {
  height: calc(58.33333% - 1.25rem);
}

.grid-margin-y > .small-8 {
  height: calc(66.66667% - 1.25rem);
}

.grid-margin-y > .small-9 {
  height: calc(75% - 1.25rem);
}

.grid-margin-y > .small-10 {
  height: calc(83.33333% - 1.25rem);
}

.grid-margin-y > .small-11 {
  height: calc(91.66667% - 1.25rem);
}

.grid-margin-y > .small-12 {
  height: calc(100% - 1.25rem);
}

@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.33333% - 1.875rem);
  }
  .grid-margin-y > .small-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .small-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .small-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .small-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .small-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .small-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .small-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .small-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .small-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .small-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .small-12 {
    height: calc(100% - 1.875rem);
  }
  .grid-margin-y > .medium-auto {
    height: auto;
  }
  .grid-margin-y > .medium-shrink {
    height: auto;
  }
  .grid-margin-y > .medium-1 {
    height: calc(8.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .medium-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .medium-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .medium-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-12 {
    height: calc(100% - 1.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.33333% - 1.875rem);
  }
  .grid-margin-y > .large-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .large-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .large-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .large-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .large-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .large-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .large-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .large-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .large-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .large-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .large-12 {
    height: calc(100% - 1.875rem);
  }
}

.grid-frame {
  overflow: hidden;
  position: relative;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -ms-flex-align: stretch;
      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: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  max-height: 100%;
}

.cell-block-container > .grid-x {
  max-height: 100%;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
}

@media print, screen and (min-width: 40em) {
  .medium-grid-frame {
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-align: stretch;
        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: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    max-height: 100%;
  }
  .medium-cell-block-container > .grid-x {
    max-height: 100%;
    -ms-flex-wrap: nowrap;
        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;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-align: stretch;
        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: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    max-height: 100%;
  }
  .large-cell-block-container > .grid-x {
    max-height: 100%;
    -ms-flex-wrap: nowrap;
        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 {
  width: auto;
  overflow: hidden;
  position: relative;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -ms-flex-align: stretch;
      align-items: stretch;
  height: 100vh;
}

@media print, screen and (min-width: 40em) {
  .grid-y.medium-grid-frame {
    width: auto;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-align: stretch;
        align-items: stretch;
    height: 100vh;
  }
}

@media print, screen and (min-width: 64em) {
  .grid-y.large-grid-frame {
    width: auto;
    overflow: hidden;
    position: relative;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-align: stretch;
        align-items: stretch;
    height: 100vh;
  }
}

.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.625rem;
  margin-bottom: -0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-y {
    margin-top: -0.9375rem;
    margin-bottom: -0.9375rem;
  }
}

.grid-margin-y > .cell {
  height: calc(100% - 1.25rem);
  margin-top: 0.625rem;
  margin-bottom: 0.625rem;
}

@media print, screen and (min-width: 40em) {
  .grid-margin-y > .cell {
    height: calc(100% - 1.875rem);
    margin-top: 0.9375rem;
    margin-bottom: 0.9375rem;
  }
}

.grid-margin-y > .auto {
  height: auto;
}

.grid-margin-y > .shrink {
  height: auto;
}

.grid-margin-y > .small-1 {
  height: calc(8.33333% - 1.25rem);
}

.grid-margin-y > .small-2 {
  height: calc(16.66667% - 1.25rem);
}

.grid-margin-y > .small-3 {
  height: calc(25% - 1.25rem);
}

.grid-margin-y > .small-4 {
  height: calc(33.33333% - 1.25rem);
}

.grid-margin-y > .small-5 {
  height: calc(41.66667% - 1.25rem);
}

.grid-margin-y > .small-6 {
  height: calc(50% - 1.25rem);
}

.grid-margin-y > .small-7 {
  height: calc(58.33333% - 1.25rem);
}

.grid-margin-y > .small-8 {
  height: calc(66.66667% - 1.25rem);
}

.grid-margin-y > .small-9 {
  height: calc(75% - 1.25rem);
}

.grid-margin-y > .small-10 {
  height: calc(83.33333% - 1.25rem);
}

.grid-margin-y > .small-11 {
  height: calc(91.66667% - 1.25rem);
}

.grid-margin-y > .small-12 {
  height: calc(100% - 1.25rem);
}

@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.33333% - 1.875rem);
  }
  .grid-margin-y > .small-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .small-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .small-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .small-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .small-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .small-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .small-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .small-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .small-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .small-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .small-12 {
    height: calc(100% - 1.875rem);
  }
  .grid-margin-y > .medium-auto {
    height: auto;
  }
  .grid-margin-y > .medium-shrink {
    height: auto;
  }
  .grid-margin-y > .medium-1 {
    height: calc(8.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .medium-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .medium-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .medium-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .medium-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .medium-12 {
    height: calc(100% - 1.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.33333% - 1.875rem);
  }
  .grid-margin-y > .large-2 {
    height: calc(16.66667% - 1.875rem);
  }
  .grid-margin-y > .large-3 {
    height: calc(25% - 1.875rem);
  }
  .grid-margin-y > .large-4 {
    height: calc(33.33333% - 1.875rem);
  }
  .grid-margin-y > .large-5 {
    height: calc(41.66667% - 1.875rem);
  }
  .grid-margin-y > .large-6 {
    height: calc(50% - 1.875rem);
  }
  .grid-margin-y > .large-7 {
    height: calc(58.33333% - 1.875rem);
  }
  .grid-margin-y > .large-8 {
    height: calc(66.66667% - 1.875rem);
  }
  .grid-margin-y > .large-9 {
    height: calc(75% - 1.875rem);
  }
  .grid-margin-y > .large-10 {
    height: calc(83.33333% - 1.875rem);
  }
  .grid-margin-y > .large-11 {
    height: calc(91.66667% - 1.875rem);
  }
  .grid-margin-y > .large-12 {
    height: calc(100% - 1.875rem);
  }
}

.grid-frame.grid-margin-y {
  height: calc(100vh + 1.25rem);
}

@media print, screen and (min-width: 40em) {
  .grid-frame.grid-margin-y {
    height: calc(100vh + 1.875rem);
  }
}

@media print, screen and (min-width: 64em) {
  .grid-frame.grid-margin-y {
    height: calc(100vh + 1.875rem);
  }
}

@media print, screen and (min-width: 40em) {
  .grid-margin-y.medium-grid-frame {
    height: calc(100vh + 1.875rem);
  }
}

@media print, screen and (min-width: 64em) {
  .grid-margin-y.large-grid-frame {
    height: calc(100vh + 1.875rem);
  }
}

.button {
  display: inline-block;
  vertical-align: middle;
  margin: 0 0 1rem 0;
  padding: 0.85em 1em;
  border: 1px solid transparent;
  border-radius: 0;
  transition: background-color 0.25s ease-out, color 0.25s ease-out;
  font-family: inherit;
  font-size: 0.9rem;
  -webkit-appearance: none;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  background-color: #1779ba;
  color: #fefefe;
}

[data-whatinput='mouse'] .button {
  outline: 0;
}

.button:hover, .button:focus {
  background-color: #14679e;
  color: #fefefe;
}

.button.tiny {
  font-size: 0.6rem;
}

.button.small {
  font-size: 0.75rem;
}

.button.large {
  font-size: 1.25rem;
}

.button.expanded {
  display: block;
  width: 100%;
  margin-right: 0;
  margin-left: 0;
}

.button.primary {
  background-color: #1779ba;
  color: #fefefe;
}

.button.primary:hover, .button.primary:focus {
  background-color: #126195;
  color: #fefefe;
}

.button.secondary {
  background-color: #767676;
  color: #fefefe;
}

.button.secondary:hover, .button.secondary:focus {
  background-color: #5e5e5e;
  color: #fefefe;
}

.button.success {
  background-color: #3adb76;
  color: #0a0a0a;
}

.button.success:hover, .button.success:focus {
  background-color: #22bb5b;
  color: #0a0a0a;
}

.button.warning {
  background-color: #ffae00;
  color: #0a0a0a;
}

.button.warning:hover, .button.warning:focus {
  background-color: #cc8b00;
  color: #0a0a0a;
}

.button.alert {
  background-color: #cc4b37;
  color: #fefefe;
}

.button.alert:hover, .button.alert:focus {
  background-color: #a53b2a;
  color: #fefefe;
}

.button.disabled, .button[disabled] {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus {
  background-color: #1779ba;
  color: #fefefe;
}

.button.disabled.primary, .button[disabled].primary {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus {
  background-color: #1779ba;
  color: #fefefe;
}

.button.disabled.secondary, .button[disabled].secondary {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
  background-color: #767676;
  color: #fefefe;
}

.button.disabled.success, .button[disabled].success {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus {
  background-color: #3adb76;
  color: #0a0a0a;
}

.button.disabled.warning, .button[disabled].warning {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus {
  background-color: #ffae00;
  color: #0a0a0a;
}

.button.disabled.alert, .button[disabled].alert {
  opacity: 0.25;
  cursor: not-allowed;
}

.button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus {
  background-color: #cc4b37;
  color: #fefefe;
}

.button.hollow {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.hollow, .button.hollow:hover, .button.hollow:focus {
  background-color: transparent;
}

.button.hollow.disabled, .button.hollow.disabled:hover, .button.hollow.disabled:focus, .button.hollow[disabled], .button.hollow[disabled]:hover, .button.hollow[disabled]:focus {
  background-color: transparent;
}

.button.hollow:hover, .button.hollow:focus {
  border-color: #0c3d5d;
  color: #0c3d5d;
}

.button.hollow:hover.disabled, .button.hollow:hover[disabled], .button.hollow:focus.disabled, .button.hollow:focus[disabled] {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.hollow.primary {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.hollow.primary:hover, .button.hollow.primary:focus {
  border-color: #0c3d5d;
  color: #0c3d5d;
}

.button.hollow.primary:hover.disabled, .button.hollow.primary:hover[disabled], .button.hollow.primary:focus.disabled, .button.hollow.primary:focus[disabled] {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.hollow.secondary {
  border: 1px solid #767676;
  color: #767676;
}

.button.hollow.secondary:hover, .button.hollow.secondary:focus {
  border-color: #3b3b3b;
  color: #3b3b3b;
}

.button.hollow.secondary:hover.disabled, .button.hollow.secondary:hover[disabled], .button.hollow.secondary:focus.disabled, .button.hollow.secondary:focus[disabled] {
  border: 1px solid #767676;
  color: #767676;
}

.button.hollow.success {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.hollow.success:hover, .button.hollow.success:focus {
  border-color: #157539;
  color: #157539;
}

.button.hollow.success:hover.disabled, .button.hollow.success:hover[disabled], .button.hollow.success:focus.disabled, .button.hollow.success:focus[disabled] {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.hollow.warning {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.hollow.warning:hover, .button.hollow.warning:focus {
  border-color: #805700;
  color: #805700;
}

.button.hollow.warning:hover.disabled, .button.hollow.warning:hover[disabled], .button.hollow.warning:focus.disabled, .button.hollow.warning:focus[disabled] {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.hollow.alert {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.hollow.alert:hover, .button.hollow.alert:focus {
  border-color: #67251a;
  color: #67251a;
}

.button.hollow.alert:hover.disabled, .button.hollow.alert:hover[disabled], .button.hollow.alert:focus.disabled, .button.hollow.alert:focus[disabled] {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.clear, .button.clear:hover, .button.clear:focus {
  background-color: transparent;
}

.button.clear.disabled, .button.clear.disabled:hover, .button.clear.disabled:focus, .button.clear[disabled], .button.clear[disabled]:hover, .button.clear[disabled]:focus {
  background-color: transparent;
}

.button.clear:hover, .button.clear:focus {
  border-color: #0c3d5d;
  color: #0c3d5d;
}

.button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus.disabled, .button.clear:focus[disabled] {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.clear, .button.clear.disabled, .button.clear[disabled], .button.clear:hover, .button.clear:hover.disabled, .button.clear:hover[disabled], .button.clear:focus, .button.clear:focus.disabled, .button.clear:focus[disabled] {
  border-color: transparent;
}

.button.clear.primary {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.clear.primary:hover, .button.clear.primary:focus {
  border-color: #0c3d5d;
  color: #0c3d5d;
}

.button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
  border: 1px solid #1779ba;
  color: #1779ba;
}

.button.clear.primary, .button.clear.primary.disabled, .button.clear.primary[disabled], .button.clear.primary:hover, .button.clear.primary:hover.disabled, .button.clear.primary:hover[disabled], .button.clear.primary:focus, .button.clear.primary:focus.disabled, .button.clear.primary:focus[disabled] {
  border-color: transparent;
}

.button.clear.secondary {
  border: 1px solid #767676;
  color: #767676;
}

.button.clear.secondary:hover, .button.clear.secondary:focus {
  border-color: #3b3b3b;
  color: #3b3b3b;
}

.button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
  border: 1px solid #767676;
  color: #767676;
}

.button.clear.secondary, .button.clear.secondary.disabled, .button.clear.secondary[disabled], .button.clear.secondary:hover, .button.clear.secondary:hover.disabled, .button.clear.secondary:hover[disabled], .button.clear.secondary:focus, .button.clear.secondary:focus.disabled, .button.clear.secondary:focus[disabled] {
  border-color: transparent;
}

.button.clear.success {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.clear.success:hover, .button.clear.success:focus {
  border-color: #157539;
  color: #157539;
}

.button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
  border: 1px solid #3adb76;
  color: #3adb76;
}

.button.clear.success, .button.clear.success.disabled, .button.clear.success[disabled], .button.clear.success:hover, .button.clear.success:hover.disabled, .button.clear.success:hover[disabled], .button.clear.success:focus, .button.clear.success:focus.disabled, .button.clear.success:focus[disabled] {
  border-color: transparent;
}

.button.clear.warning {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.clear.warning:hover, .button.clear.warning:focus {
  border-color: #805700;
  color: #805700;
}

.button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
  border: 1px solid #ffae00;
  color: #ffae00;
}

.button.clear.warning, .button.clear.warning.disabled, .button.clear.warning[disabled], .button.clear.warning:hover, .button.clear.warning:hover.disabled, .button.clear.warning:hover[disabled], .button.clear.warning:focus, .button.clear.warning:focus.disabled, .button.clear.warning:focus[disabled] {
  border-color: transparent;
}

.button.clear.alert {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear.alert:hover, .button.clear.alert:focus {
  border-color: #67251a;
  color: #67251a;
}

.button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
  border: 1px solid #cc4b37;
  color: #cc4b37;
}

.button.clear.alert, .button.clear.alert.disabled, .button.clear.alert[disabled], .button.clear.alert:hover, .button.clear.alert:hover.disabled, .button.clear.alert:hover[disabled], .button.clear.alert:focus, .button.clear.alert:focus.disabled, .button.clear.alert:focus[disabled] {
  border-color: transparent;
}

.button.dropdown::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4em;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #fefefe transparent transparent;
  position: relative;
  top: 0.4em;
  display: inline-block;
  float: right;
  margin-left: 1em;
}

.button.dropdown.hollow::after, .button.dropdown.clear::after {
  border-top-color: #1779ba;
}

.button.dropdown.hollow.primary::after, .button.dropdown.clear.primary::after {
  border-top-color: #1779ba;
}

.button.dropdown.hollow.secondary::after, .button.dropdown.clear.secondary::after {
  border-top-color: #767676;
}

.button.dropdown.hollow.success::after, .button.dropdown.clear.success::after {
  border-top-color: #3adb76;
}

.button.dropdown.hollow.warning::after, .button.dropdown.clear.warning::after {
  border-top-color: #ffae00;
}

.button.dropdown.hollow.alert::after, .button.dropdown.clear.alert::after {
  border-top-color: #cc4b37;
}

.button.arrow-only::after {
  top: -0.1em;
  float: none;
  margin-left: 0;
}

a.button:hover, a.button:focus {
  text-decoration: none;
}

.button-group {
  margin-bottom: 1rem;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -ms-flex-align: stretch;
      align-items: stretch;
}

.button-group::before, .button-group::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.button-group::after {
  clear: both;
}

.button-group .button {
  margin: 0;
  margin-right: 1px;
  margin-bottom: 1px;
  font-size: 0.9rem;
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.button-group .button:last-child {
  margin-right: 0;
}

.button-group.tiny .button {
  font-size: 0.6rem;
}

.button-group.small .button {
  font-size: 0.75rem;
}

.button-group.large .button {
  font-size: 1.25rem;
}

.button-group.expanded .button {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

.button-group.primary .button {
  background-color: #1779ba;
  color: #fefefe;
}

.button-group.primary .button:hover, .button-group.primary .button:focus {
  background-color: #126195;
  color: #fefefe;
}

.button-group.secondary .button {
  background-color: #767676;
  color: #fefefe;
}

.button-group.secondary .button:hover, .button-group.secondary .button:focus {
  background-color: #5e5e5e;
  color: #fefefe;
}

.button-group.success .button {
  background-color: #3adb76;
  color: #0a0a0a;
}

.button-group.success .button:hover, .button-group.success .button:focus {
  background-color: #22bb5b;
  color: #0a0a0a;
}

.button-group.warning .button {
  background-color: #ffae00;
  color: #0a0a0a;
}

.button-group.warning .button:hover, .button-group.warning .button:focus {
  background-color: #cc8b00;
  color: #0a0a0a;
}

.button-group.alert .button {
  background-color: #cc4b37;
  color: #fefefe;
}

.button-group.alert .button:hover, .button-group.alert .button:focus {
  background-color: #a53b2a;
  color: #fefefe;
}

.button-group.stacked, .button-group.stacked-for-small, .button-group.stacked-for-medium {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button {
  -ms-flex: 0 0 100%;
      flex: 0 0 100%;
}

.button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child {
  margin-bottom: 0;
}

.button-group.stacked.expanded .button, .button-group.stacked-for-small.expanded .button, .button-group.stacked-for-medium.expanded .button {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

@media print, screen and (min-width: 40em) {
  .button-group.stacked-for-small .button {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    margin-bottom: 0;
  }
}

@media print, screen and (min-width: 64em) {
  .button-group.stacked-for-medium .button {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    margin-bottom: 0;
  }
}

@media screen and (max-width: 39.99875em) {
  .button-group.stacked-for-small.expanded {
    display: block;
  }
  .button-group.stacked-for-small.expanded .button {
    display: block;
    margin-right: 0;
  }
}

@media screen and (max-width: 63.99875em) {
  .button-group.stacked-for-medium.expanded {
    display: block;
  }
  .button-group.stacked-for-medium.expanded .button {
    display: block;
    margin-right: 0;
  }
}

.close-button {
  position: absolute;
  color: #8a8a8a;
  cursor: pointer;
}

[data-whatinput='mouse'] .close-button {
  outline: 0;
}

.close-button:hover, .close-button:focus {
  color: #0a0a0a;
}

.close-button.small {
  right: 0.66rem;
  top: 0.33em;
  font-size: 1.5em;
  line-height: 1;
}

.close-button, .close-button.medium {
  right: 1rem;
  top: 0.5rem;
  font-size: 2em;
  line-height: 1;
}

.label {
  display: inline-block;
  padding: 0.33333rem 0.5rem;
  border-radius: 0;
  font-size: 0.8rem;
  line-height: 1;
  white-space: nowrap;
  cursor: default;
  background: #1779ba;
  color: #fefefe;
}

.label.primary {
  background: #1779ba;
  color: #fefefe;
}

.label.secondary {
  background: #767676;
  color: #fefefe;
}

.label.success {
  background: #3adb76;
  color: #0a0a0a;
}

.label.warning {
  background: #ffae00;
  color: #0a0a0a;
}

.label.alert {
  background: #cc4b37;
  color: #fefefe;
}

.progress {
  height: 1rem;
  margin-bottom: 1rem;
  border-radius: 0;
  background-color: #cacaca;
}

.progress.primary .progress-meter {
  background-color: #1779ba;
}

.progress.secondary .progress-meter {
  background-color: #767676;
}

.progress.success .progress-meter {
  background-color: #3adb76;
}

.progress.warning .progress-meter {
  background-color: #ffae00;
}

.progress.alert .progress-meter {
  background-color: #cc4b37;
}

.progress-meter {
  position: relative;
  display: block;
  width: 0%;
  height: 100%;
  background-color: #1779ba;
}

.progress-meter-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  font-size: 0.75rem;
  font-weight: bold;
  color: #fefefe;
  white-space: nowrap;
}

.slider {
  position: relative;
  height: 0.5rem;
  margin-top: 1.25rem;
  margin-bottom: 2.25rem;
  background-color: #e6e6e6;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  -ms-touch-action: none;
      touch-action: none;
}

.slider-fill {
  position: absolute;
  top: 0;
  left: 0;
  display: inline-block;
  max-width: 100%;
  height: 0.5rem;
  background-color: #cacaca;
  transition: all 0.2s ease-in-out;
}

.slider-fill.is-dragging {
  transition: all 0s linear;
}

.slider-handle {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 0;
  z-index: 1;
  display: inline-block;
  width: 1.4rem;
  height: 1.4rem;
  border-radius: 0;
  background-color: #1779ba;
  transition: all 0.2s ease-in-out;
  -ms-touch-action: manipulation;
      touch-action: manipulation;
}

[data-whatinput='mouse'] .slider-handle {
  outline: 0;
}

.slider-handle:hover {
  background-color: #14679e;
}

.slider-handle.is-dragging {
  transition: all 0s linear;
}

.slider.disabled,
.slider[disabled] {
  opacity: 0.25;
  cursor: not-allowed;
}

.slider.vertical {
  display: inline-block;
  width: 0.5rem;
  height: 12.5rem;
  margin: 0 1.25rem;
  transform: scale(1, -1);
}

.slider.vertical .slider-fill {
  top: 0;
  width: 0.5rem;
  max-height: 100%;
}

.slider.vertical .slider-handle {
  position: absolute;
  top: 0;
  left: 50%;
  width: 1.4rem;
  height: 1.4rem;
  transform: translateX(-50%);
}

.switch {
  height: 2rem;
  position: relative;
  margin-bottom: 1rem;
  outline: 0;
  font-size: 0.875rem;
  font-weight: bold;
  color: #fefefe;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}

.switch-input {
  position: absolute;
  margin-bottom: 0;
  opacity: 0;
}

.switch-paddle {
  position: relative;
  display: block;
  width: 4rem;
  height: 2rem;
  border-radius: 0;
  background: #cacaca;
  transition: all 0.25s ease-out;
  font-weight: inherit;
  color: inherit;
  cursor: pointer;
}

input + .switch-paddle {
  margin: 0;
}

.switch-paddle::after {
  position: absolute;
  top: 0.25rem;
  left: 0.25rem;
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  transform: translate3d(0, 0, 0);
  border-radius: 0;
  background: #fefefe;
  transition: all 0.25s ease-out;
  content: '';
}

input:checked ~ .switch-paddle {
  background: #1779ba;
}

input:checked ~ .switch-paddle::after {
  left: 2.25rem;
}

[data-whatinput='mouse'] input:focus ~ .switch-paddle {
  outline: 0;
}

.switch-active, .switch-inactive {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.switch-active {
  left: 8%;
  display: none;
}

input:checked + label > .switch-active {
  display: block;
}

.switch-inactive {
  right: 15%;
}

input:checked + label > .switch-inactive {
  display: none;
}

.switch.tiny {
  height: 1.5rem;
}

.switch.tiny .switch-paddle {
  width: 3rem;
  height: 1.5rem;
  font-size: 0.625rem;
}

.switch.tiny .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1rem;
  height: 1rem;
}

.switch.tiny input:checked ~ .switch-paddle::after {
  left: 1.75rem;
}

.switch.small {
  height: 1.75rem;
}

.switch.small .switch-paddle {
  width: 3.5rem;
  height: 1.75rem;
  font-size: 0.75rem;
}

.switch.small .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 1.25rem;
  height: 1.25rem;
}

.switch.small input:checked ~ .switch-paddle::after {
  left: 2rem;
}

.switch.large {
  height: 2.5rem;
}

.switch.large .switch-paddle {
  width: 5rem;
  height: 2.5rem;
  font-size: 1rem;
}

.switch.large .switch-paddle::after {
  top: 0.25rem;
  left: 0.25rem;
  width: 2rem;
  height: 2rem;
}

.switch.large input:checked ~ .switch-paddle::after {
  left: 2.75rem;
}

table {
  border-collapse: collapse;
  width: 100%;
  margin-bottom: 1rem;
  border-radius: 0;
}

thead,
tbody,
tfoot {
  border: 1px solid #f1f1f1;
  background-color: #fefefe;
}

caption {
  padding: 0.5rem 0.625rem 0.625rem;
  font-weight: bold;
}

thead {
  background: #f8f8f8;
  color: #0a0a0a;
}

tfoot {
  background: #f1f1f1;
  color: #0a0a0a;
}

thead tr,
tfoot tr {
  background: transparent;
}

thead th,
thead td,
tfoot th,
tfoot td {
  padding: 0.5rem 0.625rem 0.625rem;
  font-weight: bold;
  text-align: left;
}

tbody th,
tbody td {
  padding: 0.5rem 0.625rem 0.625rem;
}

tbody tr:nth-child(even) {
  border-bottom: 0;
  background-color: #f1f1f1;
}

table.unstriped tbody {
  background-color: #fefefe;
}

table.unstriped tbody tr {
  border-bottom: 0;
  border-bottom: 1px solid #f1f1f1;
  background-color: #fefefe;
}

@media screen and (max-width: 63.99875em) {
  table.stack thead {
    display: none;
  }
  table.stack tfoot {
    display: none;
  }
  table.stack tr,
  table.stack th,
  table.stack td {
    display: block;
  }
  table.stack td {
    border-top: 0;
  }
}

table.scroll {
  display: block;
  width: 100%;
  overflow-x: auto;
}

table.hover thead tr:hover {
  background-color: #f3f3f3;
}

table.hover tfoot tr:hover {
  background-color: #ececec;
}

table.hover tbody tr:hover {
  background-color: #f9f9f9;
}

table.hover:not(.unstriped) tr:nth-of-type(even):hover {
  background-color: #ececec;
}

.table-scroll {
  overflow-x: auto;
}

.badge {
  display: inline-block;
  min-width: 2.1em;
  padding: 0.3em;
  border-radius: 50%;
  font-size: 0.6rem;
  text-align: center;
  background: #1779ba;
  color: #fefefe;
}

.badge.primary {
  background: #1779ba;
  color: #fefefe;
}

.badge.secondary {
  background: #767676;
  color: #fefefe;
}

.badge.success {
  background: #3adb76;
  color: #0a0a0a;
}

.badge.warning {
  background: #ffae00;
  color: #0a0a0a;
}

.badge.alert {
  background: #cc4b37;
  color: #fefefe;
}

.breadcrumbs {
  margin: 0 0 1rem 0;
  list-style: none;
}

.breadcrumbs::before, .breadcrumbs::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.breadcrumbs::after {
  clear: both;
}

.breadcrumbs li {
  float: left;
  font-size: 0.6875rem;
  color: #0a0a0a;
  cursor: default;
  text-transform: uppercase;
}

.breadcrumbs li:not(:last-child)::after {
  position: relative;
  margin: 0 0.75rem;
  opacity: 1;
  content: "/";
  color: #cacaca;
}

.breadcrumbs a {
  color: #1779ba;
}

.breadcrumbs a:hover {
  text-decoration: underline;
}

.breadcrumbs .disabled {
  color: #cacaca;
  cursor: not-allowed;
}

.callout {
  position: relative;
  margin: 0 0 1rem 0;
  padding: 1rem;
  border: 1px solid rgba(10, 10, 10, 0.25);
  border-radius: 0;
  background-color: white;
  color: #0a0a0a;
}

.callout > :first-child {
  margin-top: 0;
}

.callout > :last-child {
  margin-bottom: 0;
}

.callout.primary {
  background-color: #d7ecfa;
  color: #0a0a0a;
}

.callout.secondary {
  background-color: #eaeaea;
  color: #0a0a0a;
}

.callout.success {
  background-color: #e1faea;
  color: #0a0a0a;
}

.callout.warning {
  background-color: #fff3d9;
  color: #0a0a0a;
}

.callout.alert {
  background-color: #f7e4e1;
  color: #0a0a0a;
}

.callout.small {
  padding-top: 0.5rem;
  padding-right: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 0.5rem;
}

.callout.large {
  padding-top: 3rem;
  padding-right: 3rem;
  padding-bottom: 3rem;
  padding-left: 3rem;
}

.card {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-positive: 1;
      flex-grow: 1;
  margin-bottom: 1rem;
  border: 1px solid #e6e6e6;
  border-radius: 0;
  background: #fefefe;
  box-shadow: none;
  overflow: hidden;
  color: #0a0a0a;
}

.card > :last-child {
  margin-bottom: 0;
}

.card-divider {
  display: -ms-flexbox;
  display: flex;
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
  padding: 1rem;
  background: #e6e6e6;
}

.card-divider > :last-child {
  margin-bottom: 0;
}

.card-section {
  -ms-flex: 1 0 auto;
      flex: 1 0 auto;
  padding: 1rem;
}

.card-section > :last-child {
  margin-bottom: 0;
}

.card-image {
  min-height: 1px;
}

.dropdown-pane {
  position: absolute;
  z-index: 10;
  display: none;
  width: 300px;
  padding: 1rem;
  visibility: hidden;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  font-size: 1rem;
}

.dropdown-pane.is-opening {
  display: block;
}

.dropdown-pane.is-open {
  display: block;
  visibility: visible;
}

.dropdown-pane.tiny {
  width: 100px;
}

.dropdown-pane.small {
  width: 200px;
}

.dropdown-pane.large {
  width: 400px;
}

.pagination {
  margin-left: 0;
  margin-bottom: 1rem;
}

.pagination::before, .pagination::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.pagination::after {
  clear: both;
}

.pagination li {
  margin-right: 0.0625rem;
  border-radius: 0;
  font-size: 0.875rem;
  display: none;
}

.pagination li:last-child, .pagination li:first-child {
  display: inline-block;
}

@media print, screen and (min-width: 40em) {
  .pagination li {
    display: inline-block;
  }
}

.pagination a,
.pagination button {
  display: block;
  padding: 0.1875rem 0.625rem;
  border-radius: 0;
  color: #0a0a0a;
}

.pagination a:hover,
.pagination button:hover {
  background: #e6e6e6;
}

.pagination .current {
  padding: 0.1875rem 0.625rem;
  background: #1779ba;
  color: #fefefe;
  cursor: default;
}

.pagination .disabled {
  padding: 0.1875rem 0.625rem;
  color: #cacaca;
  cursor: not-allowed;
}

.pagination .disabled:hover {
  background: transparent;
}

.pagination .ellipsis::after {
  padding: 0.1875rem 0.625rem;
  content: '\2026';
  color: #0a0a0a;
}

.pagination-previous a::before,
.pagination-previous.disabled::before {
  display: inline-block;
  margin-right: 0.5rem;
  content: '\00ab';
}

.pagination-next a::after,
.pagination-next.disabled::after {
  display: inline-block;
  margin-left: 0.5rem;
  content: '\00bb';
}

.has-tip {
  position: relative;
  display: inline-block;
  border-bottom: dotted 1px #8a8a8a;
  font-weight: bold;
  cursor: help;
}

.tooltip {
  position: absolute;
  top: calc(100% + 0.6495rem);
  z-index: 1200;
  max-width: 10rem;
  padding: 0.75rem;
  border-radius: 0;
  background-color: #0a0a0a;
  font-size: 80%;
  color: #fefefe;
}

.tooltip::before {
  position: absolute;
}

.tooltip.bottom::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-top-width: 0;
  border-bottom-style: solid;
  border-color: transparent transparent #0a0a0a;
  bottom: 100%;
}

.tooltip.bottom.align-center::before {
  left: 50%;
  transform: translateX(-50%);
}

.tooltip.top::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #0a0a0a transparent transparent;
  top: 100%;
  bottom: auto;
}

.tooltip.top.align-center::before {
  left: 50%;
  transform: translateX(-50%);
}

.tooltip.left::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #0a0a0a;
  left: 100%;
}

.tooltip.left.align-center::before {
  bottom: auto;
  top: 50%;
  transform: translateY(-50%);
}

.tooltip.right::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.75rem;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #0a0a0a transparent transparent;
  right: 100%;
  left: auto;
}

.tooltip.right.align-center::before {
  bottom: auto;
  top: 50%;
  transform: translateY(-50%);
}

.tooltip.align-top::before {
  bottom: auto;
  top: 10%;
}

.tooltip.align-bottom::before {
  bottom: 10%;
  top: auto;
}

.tooltip.align-left::before {
  left: 10%;
  right: auto;
}

.tooltip.align-right::before {
  left: auto;
  right: 10%;
}

.accordion {
  margin-left: 0;
  background: #fefefe;
  list-style-type: none;
}

.accordion[disabled] .accordion-title {
  cursor: not-allowed;
}

.accordion-item:first-child > :first-child {
  border-radius: 0 0 0 0;
}

.accordion-item:last-child > :last-child {
  border-radius: 0 0 0 0;
}

.accordion-title {
  position: relative;
  display: block;
  padding: 1.25rem 1rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  font-size: 0.75rem;
  line-height: 1;
  color: #1779ba;
}

:last-child:not(.is-active) > .accordion-title {
  border-bottom: 1px solid #e6e6e6;
  border-radius: 0 0 0 0;
}

.accordion-title:hover, .accordion-title:focus {
  background-color: #e6e6e6;
}

.accordion-title::before {
  position: absolute;
  top: 50%;
  right: 1rem;
  margin-top: -0.5rem;
  content: '+';
}

.is-active > .accordion-title::before {
  content: '\2013';
}

.accordion-content {
  display: none;
  padding: 1rem;
  border: 1px solid #e6e6e6;
  border-bottom: 0;
  background-color: #fefefe;
  color: #0a0a0a;
}

:last-child > .accordion-content:last-child {
  border-bottom: 1px solid #e6e6e6;
}

.media-object {
  display: -ms-flexbox;
  display: flex;
  margin-bottom: 1rem;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
}

.media-object img {
  max-width: none;
}

@media screen and (max-width: 39.99875em) {
  .media-object.stack-for-small {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
}

.media-object-section {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
}

.media-object-section:first-child {
  padding-right: 1rem;
}

.media-object-section:last-child:not(:nth-child(2)) {
  padding-left: 1rem;
}

.media-object-section > :last-child {
  margin-bottom: 0;
}

@media screen and (max-width: 39.99875em) {
  .stack-for-small .media-object-section {
    padding: 0;
    padding-bottom: 1rem;
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    max-width: 100%;
  }
  .stack-for-small .media-object-section img {
    width: 100%;
  }
}

.media-object-section.main-section {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

.orbit {
  position: relative;
}

.orbit-container {
  position: relative;
  height: 0;
  margin: 0;
  list-style: none;
  overflow: hidden;
}

.orbit-slide {
  width: 100%;
  position: absolute;
}

.orbit-slide.no-motionui.is-active {
  top: 0;
  left: 0;
}

.orbit-figure {
  margin: 0;
}

.orbit-image {
  width: 100%;
  max-width: 100%;
  margin: 0;
}

.orbit-caption {
  position: absolute;
  bottom: 0;
  width: 100%;
  margin-bottom: 0;
  padding: 1rem;
  background-color: rgba(10, 10, 10, 0.5);
  color: #fefefe;
}

.orbit-previous, .orbit-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  padding: 1rem;
  color: #fefefe;
}

[data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {
  outline: 0;
}

.orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {
  background-color: rgba(10, 10, 10, 0.5);
}

.orbit-previous {
  left: 0;
}

.orbit-next {
  left: auto;
  right: 0;
}

.orbit-bullets {
  position: relative;
  margin-top: 0.8rem;
  margin-bottom: 0.8rem;
  text-align: center;
}

[data-whatinput='mouse'] .orbit-bullets {
  outline: 0;
}

.orbit-bullets button {
  width: 1.2rem;
  height: 1.2rem;
  margin: 0.1rem;
  border-radius: 50%;
  background-color: #cacaca;
}

.orbit-bullets button:hover {
  background-color: #8a8a8a;
}

.orbit-bullets button.is-active {
  background-color: #8a8a8a;
}

.responsive-embed,
.flex-video {
  position: relative;
  height: 0;
  margin-bottom: 1rem;
  padding-bottom: 75%;
  overflow: hidden;
}

.responsive-embed iframe,
.responsive-embed object,
.responsive-embed embed,
.responsive-embed video,
.flex-video iframe,
.flex-video object,
.flex-video embed,
.flex-video video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.responsive-embed.widescreen,
.flex-video.widescreen {
  padding-bottom: 56.25%;
}

.tabs {
  margin: 0;
  border: 1px solid #e6e6e6;
  background: #fefefe;
  list-style-type: none;
}

.tabs::before, .tabs::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.tabs::after {
  clear: both;
}

.tabs.vertical > li {
  display: block;
  float: none;
  width: auto;
}

.tabs.simple > li > a {
  padding: 0;
}

.tabs.simple > li > a:hover {
  background: transparent;
}

.tabs.primary {
  background: #1779ba;
}

.tabs.primary > li > a {
  color: #fefefe;
}

.tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
  background: #1673b1;
}

.tabs-title {
  float: left;
}

.tabs-title > a {
  display: block;
  padding: 1.25rem 1.5rem;
  font-size: 0.75rem;
  line-height: 1;
  color: #1779ba;
}

[data-whatinput='mouse'] .tabs-title > a {
  outline: 0;
}

.tabs-title > a:hover {
  background: #fefefe;
  color: #1468a0;
}

.tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
  background: #e6e6e6;
  color: #1779ba;
}

.tabs-content {
  border: 1px solid #e6e6e6;
  border-top: 0;
  background: #fefefe;
  color: #0a0a0a;
  transition: all 0.5s ease;
}

.tabs-content.vertical {
  border: 1px solid #e6e6e6;
  border-left: 0;
}

.tabs-panel {
  display: none;
  padding: 1rem;
}

.tabs-panel.is-active {
  display: block;
}

.thumbnail {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 1rem;
  border: 4px solid #fefefe;
  border-radius: 0;
  box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
  line-height: 0;
}

a.thumbnail {
  transition: box-shadow 200ms ease-out;
}

a.thumbnail:hover, a.thumbnail:focus {
  box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5);
}

a.thumbnail image {
  box-shadow: none;
}

.menu {
  padding: 0;
  margin: 0;
  list-style: none;
  position: relative;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

[data-whatinput='mouse'] .menu li {
  outline: 0;
}

.menu a,
.menu .button {
  line-height: 1;
  text-decoration: none;
  display: block;
  padding: 0.7rem 1rem;
}

.menu input,
.menu select,
.menu a,
.menu button {
  margin-bottom: 0;
}

.menu input {
  display: inline-block;
}

.menu, .menu.horizontal {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -ms-flex-direction: row;
      flex-direction: row;
}

.menu.vertical {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -ms-flex-direction: column;
      flex-direction: column;
}

.menu.expanded li {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

.menu.simple {
  -ms-flex-align: center;
      align-items: center;
}

.menu.simple li + li {
  margin-left: 1rem;
}

.menu.simple a {
  padding: 0;
}

@media print, screen and (min-width: 40em) {
  .menu.medium-horizontal {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-direction: row;
        flex-direction: row;
  }
  .menu.medium-vertical {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-direction: column;
        flex-direction: column;
  }
  .menu.medium-expanded li {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
  }
  .menu.medium-simple li {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
  }
}

@media print, screen and (min-width: 64em) {
  .menu.large-horizontal {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-direction: row;
        flex-direction: row;
  }
  .menu.large-vertical {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    -ms-flex-direction: column;
        flex-direction: column;
  }
  .menu.large-expanded li {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
  }
  .menu.large-simple li {
    -ms-flex: 1 1 0px;
        flex: 1 1 0px;
  }
}

.menu.nested {
  margin-right: 0;
  margin-left: 1rem;
}

.menu.icons a {
  display: -ms-flexbox;
  display: flex;
}

.menu.icon-top a, .menu.icon-right a, .menu.icon-bottom a, .menu.icon-left a {
  display: -ms-flexbox;
  display: flex;
}

.menu.icon-left li a {
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
}

.menu.icon-left li a img,
.menu.icon-left li a i,
.menu.icon-left li a svg {
  margin-right: 0.25rem;
}

.menu.icon-right li a {
  -ms-flex-flow: row nowrap;
      flex-flow: row nowrap;
}

.menu.icon-right li a img,
.menu.icon-right li a i,
.menu.icon-right li a svg {
  margin-left: 0.25rem;
}

.menu.icon-top li a {
  -ms-flex-flow: column nowrap;
      flex-flow: column nowrap;
}

.menu.icon-top li a img,
.menu.icon-top li a i,
.menu.icon-top li a svg {
  -ms-flex-item-align: stretch;
      -ms-grid-row-align: stretch;
      align-self: stretch;
  margin-bottom: 0.25rem;
  text-align: center;
}

.menu.icon-bottom li a {
  -ms-flex-flow: column nowrap;
      flex-flow: column nowrap;
}

.menu.icon-bottom li a img,
.menu.icon-bottom li a i,
.menu.icon-bottom li a svg {
  -ms-flex-item-align: stretch;
      -ms-grid-row-align: stretch;
      align-self: stretch;
  margin-bottom: 0.25rem;
  text-align: center;
}

.menu .is-active > a {
  background: #1779ba;
  color: #fefefe;
}

.menu .active > a {
  background: #1779ba;
  color: #fefefe;
}

.menu.align-left {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.menu.align-right li {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: end;
      justify-content: flex-end;
}

.menu.align-right li .submenu li {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.menu.align-right.vertical li {
  display: block;
  text-align: right;
}

.menu.align-right.vertical li .submenu li {
  text-align: right;
}

.menu.align-right .nested {
  margin-right: 1rem;
  margin-left: 0;
}

.menu.align-center li {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
}

.menu.align-center li .submenu li {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.menu .menu-text {
  padding: 0.7rem 1rem;
  font-weight: bold;
  line-height: 1;
  color: inherit;
}

.menu-centered > .menu {
  -ms-flex-pack: center;
      justify-content: center;
}

.menu-centered > .menu li {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
}

.menu-centered > .menu li .submenu li {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.no-js [data-responsive-menu] ul {
  display: none;
}

.menu-icon {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer;
}

.menu-icon::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #fefefe;
  box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe;
  content: '';
}

.menu-icon:hover::after {
  background: #cacaca;
  box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca;
}

.menu-icon.dark {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  width: 20px;
  height: 16px;
  cursor: pointer;
}

.menu-icon.dark::after {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 2px;
  background: #0a0a0a;
  box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a;
  content: '';
}

.menu-icon.dark:hover::after {
  background: #8a8a8a;
  box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a;
}

.accordion-menu li {
  width: 100%;
}

.accordion-menu a {
  padding: 0.7rem 1rem;
}

.accordion-menu .is-accordion-submenu a {
  padding: 0.7rem 1rem;
}

.accordion-menu .nested.is-accordion-submenu {
  margin-right: 0;
  margin-left: 1rem;
}

.accordion-menu.align-right .nested.is-accordion-submenu {
  margin-right: 1rem;
  margin-left: 0;
}

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a {
  position: relative;
}

.accordion-menu .is-accordion-submenu-parent:not(.has-submenu-toggle) > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #1779ba transparent transparent;
  position: absolute;
  top: 50%;
  margin-top: -3px;
  right: 1rem;
}

.accordion-menu.align-left .is-accordion-submenu-parent > a::after {
  right: 1rem;
  left: auto;
}

.accordion-menu.align-right .is-accordion-submenu-parent > a::after {
  right: auto;
  left: 1rem;
}

.accordion-menu .is-accordion-submenu-parent[aria-expanded='true'] > a::after {
  transform: rotate(180deg);
  transform-origin: 50% 50%;
}

.is-accordion-submenu-parent {
  position: relative;
}

.has-submenu-toggle > a {
  margin-right: 40px;
}

.submenu-toggle {
  position: absolute;
  top: 0;
  right: 0;
  width: 40px;
  height: 40px;
  cursor: pointer;
}

.submenu-toggle::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #1779ba transparent transparent;
  top: 0;
  bottom: 0;
  margin: auto;
}

.submenu-toggle[aria-expanded='true']::after {
  transform: scaleY(-1);
  transform-origin: 50% 50%;
}

.submenu-toggle-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.is-drilldown {
  position: relative;
  overflow: hidden;
}

.is-drilldown li {
  display: block;
}

.is-drilldown.animate-height {
  transition: height 0.5s;
}

.drilldown a {
  padding: 0.7rem 1rem;
  background: #fefefe;
}

.drilldown .is-drilldown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: -1;
  width: 100%;
  background: #fefefe;
  transition: transform 0.15s linear;
}

.drilldown .is-drilldown-submenu.is-active {
  z-index: 1;
  display: block;
  transform: translateX(-100%);
}

.drilldown .is-drilldown-submenu.is-closing {
  transform: translateX(100%);
}

.drilldown .is-drilldown-submenu a {
  padding: 0.7rem 1rem;
}

.drilldown .nested.is-drilldown-submenu {
  margin-right: 0;
  margin-left: 0;
}

.drilldown .drilldown-submenu-cover-previous {
  min-height: 100%;
}

.drilldown .is-drilldown-submenu-parent > a {
  position: relative;
}

.drilldown .is-drilldown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba;
  position: absolute;
  top: 50%;
  margin-top: -6px;
  right: 1rem;
}

.drilldown.align-left .is-drilldown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba;
  right: 1rem;
  left: auto;
}

.drilldown.align-right .is-drilldown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent;
  right: auto;
  left: 1rem;
}

.drilldown .js-drilldown-back > a::before {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.75rem;
}

.dropdown.menu > li.opens-left > .is-dropdown-submenu {
  top: 100%;
  right: 0;
  left: auto;
}

.dropdown.menu > li.opens-right > .is-dropdown-submenu {
  top: 100%;
  right: auto;
  left: 0;
}

.dropdown.menu > li.is-dropdown-submenu-parent > a {
  position: relative;
  padding-right: 1.5rem;
}

.dropdown.menu > li.is-dropdown-submenu-parent > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #1779ba transparent transparent;
  right: 5px;
  left: auto;
  margin-top: -3px;
}

[data-whatinput='mouse'] .dropdown.menu a {
  outline: 0;
}

.dropdown.menu > li > a {
  padding: 0.7rem 1rem;
}

.dropdown.menu > li.is-active > a {
  background: transparent;
  color: #1779ba;
}

.no-js .dropdown.menu ul {
  display: none;
}

.dropdown.menu .nested.is-dropdown-submenu {
  margin-right: 0;
  margin-left: 0;
}

.dropdown.menu.vertical > li .is-dropdown-submenu {
  top: 0;
}

.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu {
  top: 0;
  right: 100%;
  left: auto;
}

.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%;
}

.dropdown.menu.vertical > li > a::after {
  right: 14px;
}

.dropdown.menu.vertical > li.opens-left > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent;
  right: auto;
  left: 5px;
}

.dropdown.menu.vertical > li.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba;
}

@media print, screen and (min-width: 40em) {
  .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto;
  }
  .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0;
  }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem;
  }
  .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #1779ba transparent transparent;
    right: 5px;
    left: auto;
    margin-top: -3px;
  }
  .dropdown.menu.medium-vertical > li .is-dropdown-submenu {
    top: 0;
  }
  .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu {
    top: 0;
    right: 100%;
    left: auto;
  }
  .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%;
  }
  .dropdown.menu.medium-vertical > li > a::after {
    right: 14px;
  }
  .dropdown.menu.medium-vertical > li.opens-left > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #1779ba transparent transparent;
    right: auto;
    left: 5px;
  }
  .dropdown.menu.medium-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #1779ba;
  }
}

@media print, screen and (min-width: 64em) {
  .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu {
    top: 100%;
    right: 0;
    left: auto;
  }
  .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu {
    top: 100%;
    right: auto;
    left: 0;
  }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a {
    position: relative;
    padding-right: 1.5rem;
  }
  .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-bottom-width: 0;
    border-top-style: solid;
    border-color: #1779ba transparent transparent;
    right: 5px;
    left: auto;
    margin-top: -3px;
  }
  .dropdown.menu.large-vertical > li .is-dropdown-submenu {
    top: 0;
  }
  .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu {
    top: 0;
    right: 100%;
    left: auto;
  }
  .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu {
    right: auto;
    left: 100%;
  }
  .dropdown.menu.large-vertical > li > a::after {
    right: 14px;
  }
  .dropdown.menu.large-vertical > li.opens-left > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-left-width: 0;
    border-right-style: solid;
    border-color: transparent #1779ba transparent transparent;
    right: auto;
    left: 5px;
  }
  .dropdown.menu.large-vertical > li.opens-right > a::after {
    display: block;
    width: 0;
    height: 0;
    border: inset 6px;
    content: '';
    border-right-width: 0;
    border-left-style: solid;
    border-color: transparent transparent transparent #1779ba;
  }
}

.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
  top: 100%;
  right: 0;
  left: auto;
}

.is-dropdown-menu.vertical {
  width: 100px;
}

.is-dropdown-menu.vertical.align-right {
  float: right;
}

.is-dropdown-submenu-parent {
  position: relative;
}

.is-dropdown-submenu-parent a::after {
  position: absolute;
  top: 50%;
  right: 5px;
  left: auto;
  margin-top: -6px;
}

.is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu {
  top: 100%;
  left: auto;
}

.is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu {
  right: 100%;
  left: auto;
}

.is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu {
  right: auto;
  left: 100%;
}

.is-dropdown-submenu {
  position: absolute;
  top: 0;
  left: 100%;
  z-index: 1;
  display: none;
  min-width: 200px;
  border: 1px solid #cacaca;
  background: #fefefe;
}

.dropdown .is-dropdown-submenu a {
  padding: 0.7rem 1rem;
}

.is-dropdown-submenu .is-dropdown-submenu-parent > a::after {
  right: 14px;
}

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #1779ba transparent transparent;
  right: auto;
  left: 5px;
}

.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after {
  display: block;
  width: 0;
  height: 0;
  border: inset 6px;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #1779ba;
}

.is-dropdown-submenu .is-dropdown-submenu {
  margin-top: -1px;
}

.is-dropdown-submenu > li {
  width: 100%;
}

.is-dropdown-submenu.js-dropdown-active {
  display: block;
}

.is-off-canvas-open {
  overflow: hidden;
}

.js-off-canvas-overlay {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 11;
  width: 100%;
  height: 100%;
  transition: opacity 0.5s ease, visibility 0.5s ease;
  background: rgba(254, 254, 254, 0.25);
  opacity: 0;
  visibility: hidden;
  overflow: hidden;
}

.js-off-canvas-overlay.is-visible {
  opacity: 1;
  visibility: visible;
}

.js-off-canvas-overlay.is-closable {
  cursor: pointer;
}

.js-off-canvas-overlay.is-overlay-absolute {
  position: absolute;
}

.js-off-canvas-overlay.is-overlay-fixed {
  position: fixed;
}

.off-canvas-wrapper {
  position: relative;
  overflow: hidden;
}

.off-canvas {
  position: fixed;
  z-index: 12;
  transition: transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #fefefe;
}

[data-whatinput='mouse'] .off-canvas {
  outline: 0;
}

.off-canvas.is-transition-push {
  z-index: 12;
}

.off-canvas.is-closed {
  visibility: hidden;
}

.off-canvas.is-transition-overlap {
  z-index: 13;
}

.off-canvas.is-transition-overlap.is-open {
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
}

.off-canvas.is-open {
  transform: translate(0, 0);
}

.off-canvas-absolute {
  position: absolute;
  z-index: 12;
  transition: transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  background: #fefefe;
}

[data-whatinput='mouse'] .off-canvas-absolute {
  outline: 0;
}

.off-canvas-absolute.is-transition-push {
  z-index: 12;
}

.off-canvas-absolute.is-closed {
  visibility: hidden;
}

.off-canvas-absolute.is-transition-overlap {
  z-index: 13;
}

.off-canvas-absolute.is-transition-overlap.is-open {
  box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
}

.off-canvas-absolute.is-open {
  transform: translate(0, 0);
}

.position-left {
  top: 0;
  left: 0;
  height: 100%;
  overflow-y: auto;
  width: 300px;
  transform: translateX(-300px);
}

@media print, screen and (min-width: 40em) {
  .position-left {
    width: 320px;
    transform: translateX(-320px);
  }
}

@media print, screen and (min-width: 64em) {
  .position-left {
    width: 360px;
    transform: translateX(-360px);
  }
}

.off-canvas-content .off-canvas.position-left {
  transform: translateX(-300px);
}

@media print, screen and (min-width: 40em) {
  .off-canvas-content .off-canvas.position-left {
    transform: translateX(-320px);
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas-content .off-canvas.position-left {
    transform: translateX(-360px);
  }
}

.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open {
  transform: translate(0, 0);
}

.off-canvas-content.is-open-left.has-transition-push {
  transform: translateX(300px);
}

@media print, screen and (min-width: 40em) {
  .off-canvas-content.is-open-left.has-transition-push {
    transform: translateX(320px);
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas-content.is-open-left.has-transition-push {
    transform: translateX(360px);
  }
}

.position-left.is-transition-push {
  box-shadow: inset -13px 0 20px -13px rgba(10, 10, 10, 0.25);
}

.position-right {
  top: 0;
  right: 0;
  height: 100%;
  overflow-y: auto;
  width: 300px;
  transform: translateX(300px);
}

@media print, screen and (min-width: 40em) {
  .position-right {
    width: 320px;
    transform: translateX(320px);
  }
}

@media print, screen and (min-width: 64em) {
  .position-right {
    width: 360px;
    transform: translateX(360px);
  }
}

.off-canvas-content .off-canvas.position-right {
  transform: translateX(300px);
}

@media print, screen and (min-width: 40em) {
  .off-canvas-content .off-canvas.position-right {
    transform: translateX(320px);
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas-content .off-canvas.position-right {
    transform: translateX(360px);
  }
}

.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open {
  transform: translate(0, 0);
}

.off-canvas-content.is-open-right.has-transition-push {
  transform: translateX(-300px);
}

@media print, screen and (min-width: 40em) {
  .off-canvas-content.is-open-right.has-transition-push {
    transform: translateX(-320px);
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas-content.is-open-right.has-transition-push {
    transform: translateX(-360px);
  }
}

.position-right.is-transition-push {
  box-shadow: inset 13px 0 20px -13px rgba(10, 10, 10, 0.25);
}

.position-top {
  top: 0;
  left: 0;
  width: 100%;
  overflow-x: auto;
  height: 250px;
  transform: translateY(-250px);
}

.off-canvas-content .off-canvas.position-top {
  transform: translateY(-250px);
}

.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open {
  transform: translate(0, 0);
}

.off-canvas-content.is-open-top.has-transition-push {
  transform: translateY(250px);
}

.position-top.is-transition-push {
  box-shadow: inset 0 -13px 20px -13px rgba(10, 10, 10, 0.25);
}

.position-bottom {
  bottom: 0;
  left: 0;
  width: 100%;
  overflow-x: auto;
  height: 250px;
  transform: translateY(250px);
}

.off-canvas-content .off-canvas.position-bottom {
  transform: translateY(250px);
}

.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open {
  transform: translate(0, 0);
}

.off-canvas-content.is-open-bottom.has-transition-push {
  transform: translateY(-250px);
}

.position-bottom.is-transition-push {
  box-shadow: inset 0 13px 20px -13px rgba(10, 10, 10, 0.25);
}

.off-canvas-content {
  transform: none;
  transition: transform 0.5s ease;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
}

.off-canvas-content.has-transition-push {
  transform: translate(0, 0);
}

.off-canvas-content .off-canvas.is-open {
  transform: translate(0, 0);
}

@media print, screen and (min-width: 40em) {
  .position-left.reveal-for-medium {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-left.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-left.reveal-for-medium {
    transform: none;
  }
  .off-canvas-content.has-reveal-left {
    margin-left: 320px;
  }
  .position-left.reveal-for-medium ~ .off-canvas-content {
    margin-left: 320px;
  }
  .position-right.reveal-for-medium {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-right.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-right.reveal-for-medium {
    transform: none;
  }
  .off-canvas-content.has-reveal-right {
    margin-right: 320px;
  }
  .position-right.reveal-for-medium ~ .off-canvas-content {
    margin-right: 320px;
  }
  .position-top.reveal-for-medium {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-top.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-top.reveal-for-medium {
    transform: none;
  }
  .off-canvas-content.has-reveal-top {
    margin-top: 320px;
  }
  .position-top.reveal-for-medium ~ .off-canvas-content {
    margin-top: 320px;
  }
  .position-bottom.reveal-for-medium {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-bottom.reveal-for-medium .close-button {
    display: none;
  }
  .off-canvas-content .position-bottom.reveal-for-medium {
    transform: none;
  }
  .off-canvas-content.has-reveal-bottom {
    margin-bottom: 320px;
  }
  .position-bottom.reveal-for-medium ~ .off-canvas-content {
    margin-bottom: 320px;
  }
}

@media print, screen and (min-width: 64em) {
  .position-left.reveal-for-large {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-left.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-left.reveal-for-large {
    transform: none;
  }
  .off-canvas-content.has-reveal-left {
    margin-left: 360px;
  }
  .position-left.reveal-for-large ~ .off-canvas-content {
    margin-left: 360px;
  }
  .position-right.reveal-for-large {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-right.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-right.reveal-for-large {
    transform: none;
  }
  .off-canvas-content.has-reveal-right {
    margin-right: 360px;
  }
  .position-right.reveal-for-large ~ .off-canvas-content {
    margin-right: 360px;
  }
  .position-top.reveal-for-large {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-top.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-top.reveal-for-large {
    transform: none;
  }
  .off-canvas-content.has-reveal-top {
    margin-top: 360px;
  }
  .position-top.reveal-for-large ~ .off-canvas-content {
    margin-top: 360px;
  }
  .position-bottom.reveal-for-large {
    transform: none;
    z-index: 12;
    transition: none;
    visibility: visible;
  }
  .position-bottom.reveal-for-large .close-button {
    display: none;
  }
  .off-canvas-content .position-bottom.reveal-for-large {
    transform: none;
  }
  .off-canvas-content.has-reveal-bottom {
    margin-bottom: 360px;
  }
  .position-bottom.reveal-for-large ~ .off-canvas-content {
    margin-bottom: 360px;
  }
}

@media print, screen and (min-width: 40em) {
  .off-canvas.in-canvas-for-medium {
    visibility: visible;
    height: auto;
    position: static;
    background: none;
    width: auto;
    overflow: visible;
    transition: none;
  }
  .off-canvas.in-canvas-for-medium.position-left, .off-canvas.in-canvas-for-medium.position-right, .off-canvas.in-canvas-for-medium.position-top, .off-canvas.in-canvas-for-medium.position-bottom {
    box-shadow: none;
    transform: none;
  }
  .off-canvas.in-canvas-for-medium .close-button {
    display: none;
  }
}

@media print, screen and (min-width: 64em) {
  .off-canvas.in-canvas-for-large {
    visibility: visible;
    height: auto;
    position: static;
    background: none;
    width: auto;
    overflow: visible;
    transition: none;
  }
  .off-canvas.in-canvas-for-large.position-left, .off-canvas.in-canvas-for-large.position-right, .off-canvas.in-canvas-for-large.position-top, .off-canvas.in-canvas-for-large.position-bottom {
    box-shadow: none;
    transform: none;
  }
  .off-canvas.in-canvas-for-large .close-button {
    display: none;
  }
}

html.is-reveal-open {
  position: fixed;
  width: 100%;
  overflow-y: hidden;
}

html.is-reveal-open.zf-has-scroll {
  overflow-y: scroll;
}

html.is-reveal-open body {
  overflow-y: hidden;
}

.reveal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1005;
  display: none;
  background-color: rgba(10, 10, 10, 0.75);
  overflow-y: auto;
}

.reveal {
  z-index: 1006;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  display: none;
  padding: 1rem;
  border: 1px solid #cacaca;
  border-radius: 0;
  background-color: #fefefe;
  position: relative;
  top: 100px;
  margin-right: auto;
  margin-left: auto;
  overflow-y: auto;
}

[data-whatinput='mouse'] .reveal {
  outline: 0;
}

@media print, screen and (min-width: 40em) {
  .reveal {
    min-height: 0;
  }
}

.reveal .column {
  min-width: 0;
}

.reveal > :last-child {
  margin-bottom: 0;
}

@media print, screen and (min-width: 40em) {
  .reveal {
    width: 600px;
    max-width: 75rem;
  }
}

.reveal.collapse {
  padding: 0;
}

@media print, screen and (min-width: 40em) {
  .reveal.tiny {
    width: 30%;
    max-width: 75rem;
  }
}

@media print, screen and (min-width: 40em) {
  .reveal.small {
    width: 50%;
    max-width: 75rem;
  }
}

@media print, screen and (min-width: 40em) {
  .reveal.large {
    width: 90%;
    max-width: 75rem;
  }
}

.reveal.full {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  min-height: 100%;
  margin-left: 0;
  border: 0;
  border-radius: 0;
}

@media screen and (max-width: 39.99875em) {
  .reveal {
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100%;
    max-width: none;
    height: 100%;
    min-height: 100%;
    margin-left: 0;
    border: 0;
    border-radius: 0;
  }
}

.reveal.without-overlay {
  position: fixed;
}

.sticky-container {
  position: relative;
}

.sticky {
  position: relative;
  z-index: 0;
  transform: translate3d(0, 0, 0);
}

.sticky.is-stuck {
  position: fixed;
  z-index: 5;
  width: 100%;
}

.sticky.is-stuck.is-at-top {
  top: 0;
}

.sticky.is-stuck.is-at-bottom {
  bottom: 0;
}

.sticky.is-anchored {
  position: relative;
  right: auto;
  left: auto;
}

.sticky.is-anchored.is-at-bottom {
  bottom: 0;
}

.title-bar {
  padding: 0.5rem;
  background: #ffffff;
  color: #151515;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: start;
      justify-content: flex-start;
  -ms-flex-align: center;
      align-items: center;
}

.title-bar .menu-icon {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}

.title-bar-left,
.title-bar-right {
  -ms-flex: 1 1 0px;
      flex: 1 1 0px;
}

.title-bar-right {
  text-align: right;
}

.title-bar-title {
  display: inline-block;
  vertical-align: middle;
  font-weight: bold;
}

.top-bar {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  padding: 0.5rem;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}

.top-bar,
.top-bar ul {
  background-color: #e6e6e6;
}

.top-bar input {
  max-width: 200px;
  margin-right: 1rem;
}

.top-bar .input-group-field {
  width: 100%;
  margin-right: 0;
}

.top-bar input.button {
  width: auto;
}

.top-bar .top-bar-left,
.top-bar .top-bar-right {
  -ms-flex: 0 0 100%;
      flex: 0 0 100%;
  max-width: 100%;
}

@media print, screen and (min-width: 40em) {
  .top-bar {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
  }
  .top-bar .top-bar-left {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    margin-right: auto;
  }
  .top-bar .top-bar-right {
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
    margin-left: auto;
  }
}

@media screen and (max-width: 63.99875em) {
  .top-bar.stacked-for-medium {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .top-bar.stacked-for-medium .top-bar-left,
  .top-bar.stacked-for-medium .top-bar-right {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
}

@media screen and (max-width: 74.99875em) {
  .top-bar.stacked-for-large {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
  }
  .top-bar.stacked-for-large .top-bar-left,
  .top-bar.stacked-for-large .top-bar-right {
    -ms-flex: 0 0 100%;
        flex: 0 0 100%;
    max-width: 100%;
  }
}

.top-bar-title {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
  margin: 0.5rem 1rem 0.5rem 0;
}

.top-bar-left,
.top-bar-right {
  -ms-flex: 0 0 auto;
      flex: 0 0 auto;
}

.float-left {
  float: left !important;
}

.float-right {
  float: right !important;
}

.float-center {
  display: block;
  margin-right: auto;
  margin-left: auto;
}

.clearfix::before, .clearfix::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.clearfix::after {
  clear: both;
}

.align-left {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.align-right {
  -ms-flex-pack: end;
      justify-content: flex-end;
}

.align-center {
  -ms-flex-pack: center;
      justify-content: center;
}

.align-justify {
  -ms-flex-pack: justify;
      justify-content: space-between;
}

.align-spaced {
  -ms-flex-pack: distribute;
      justify-content: space-around;
}

.align-left.vertical.menu > li > a {
  -ms-flex-pack: start;
      justify-content: flex-start;
}

.align-right.vertical.menu > li > a {
  -ms-flex-pack: end;
      justify-content: flex-end;
}

.align-center.vertical.menu > li > a {
  -ms-flex-pack: center;
      justify-content: center;
}

.align-top {
  -ms-flex-align: start;
      align-items: flex-start;
}

.align-self-top {
  -ms-flex-item-align: start;
      align-self: flex-start;
}

.align-bottom {
  -ms-flex-align: end;
      align-items: flex-end;
}

.align-self-bottom {
  -ms-flex-item-align: end;
      align-self: flex-end;
}

.align-middle {
  -ms-flex-align: center;
      align-items: center;
}

.align-self-middle {
  -ms-flex-item-align: center;
      -ms-grid-row-align: center;
      align-self: center;
}

.align-stretch {
  -ms-flex-align: stretch;
      align-items: stretch;
}

.align-self-stretch {
  -ms-flex-item-align: stretch;
      -ms-grid-row-align: stretch;
      align-self: stretch;
}

.align-center-middle {
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-line-pack: center;
      align-content: center;
}

.small-order-1 {
  -ms-flex-order: 1;
      order: 1;
}

.small-order-2 {
  -ms-flex-order: 2;
      order: 2;
}

.small-order-3 {
  -ms-flex-order: 3;
      order: 3;
}

.small-order-4 {
  -ms-flex-order: 4;
      order: 4;
}

.small-order-5 {
  -ms-flex-order: 5;
      order: 5;
}

.small-order-6 {
  -ms-flex-order: 6;
      order: 6;
}

@media print, screen and (min-width: 40em) {
  .medium-order-1 {
    -ms-flex-order: 1;
        order: 1;
  }
  .medium-order-2 {
    -ms-flex-order: 2;
        order: 2;
  }
  .medium-order-3 {
    -ms-flex-order: 3;
        order: 3;
  }
  .medium-order-4 {
    -ms-flex-order: 4;
        order: 4;
  }
  .medium-order-5 {
    -ms-flex-order: 5;
        order: 5;
  }
  .medium-order-6 {
    -ms-flex-order: 6;
        order: 6;
  }
}

@media print, screen and (min-width: 64em) {
  .large-order-1 {
    -ms-flex-order: 1;
        order: 1;
  }
  .large-order-2 {
    -ms-flex-order: 2;
        order: 2;
  }
  .large-order-3 {
    -ms-flex-order: 3;
        order: 3;
  }
  .large-order-4 {
    -ms-flex-order: 4;
        order: 4;
  }
  .large-order-5 {
    -ms-flex-order: 5;
        order: 5;
  }
  .large-order-6 {
    -ms-flex-order: 6;
        order: 6;
  }
}

.flex-container {
  display: -ms-flexbox;
  display: flex;
}

.flex-child-auto {
  -ms-flex: 1 1 auto;
      flex: 1 1 auto;
}

.flex-child-grow {
  -ms-flex: 1 0 auto;
      flex: 1 0 auto;
}

.flex-child-shrink {
  -ms-flex: 0 1 auto;
      flex: 0 1 auto;
}

.flex-dir-row {
  -ms-flex-direction: row;
      flex-direction: row;
}

.flex-dir-row-reverse {
  -ms-flex-direction: row-reverse;
      flex-direction: row-reverse;
}

.flex-dir-column {
  -ms-flex-direction: column;
      flex-direction: column;
}

.flex-dir-column-reverse {
  -ms-flex-direction: column-reverse;
      flex-direction: column-reverse;
}

@media print, screen and (min-width: 40em) {
  .medium-flex-container {
    display: -ms-flexbox;
    display: flex;
  }
  .medium-flex-child-auto {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
  }
  .medium-flex-child-grow {
    -ms-flex: 1 0 auto;
        flex: 1 0 auto;
  }
  .medium-flex-child-shrink {
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
  }
  .medium-flex-dir-row {
    -ms-flex-direction: row;
        flex-direction: row;
  }
  .medium-flex-dir-row-reverse {
    -ms-flex-direction: row-reverse;
        flex-direction: row-reverse;
  }
  .medium-flex-dir-column {
    -ms-flex-direction: column;
        flex-direction: column;
  }
  .medium-flex-dir-column-reverse {
    -ms-flex-direction: column-reverse;
        flex-direction: column-reverse;
  }
}

@media print, screen and (min-width: 64em) {
  .large-flex-container {
    display: -ms-flexbox;
    display: flex;
  }
  .large-flex-child-auto {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
  }
  .large-flex-child-grow {
    -ms-flex: 1 0 auto;
        flex: 1 0 auto;
  }
  .large-flex-child-shrink {
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
  }
  .large-flex-dir-row {
    -ms-flex-direction: row;
        flex-direction: row;
  }
  .large-flex-dir-row-reverse {
    -ms-flex-direction: row-reverse;
        flex-direction: row-reverse;
  }
  .large-flex-dir-column {
    -ms-flex-direction: column;
        flex-direction: column;
  }
  .large-flex-dir-column-reverse {
    -ms-flex-direction: column-reverse;
        flex-direction: column-reverse;
  }
}

.hide {
  display: none !important;
}

.invisible {
  visibility: hidden;
}

@media 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 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 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;
  height: 1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  width: auto;
  height: auto;
  overflow: visible;
  clip: auto;
  white-space: normal;
}

.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;
  }
}

.text-hide {
  font: 0/0 a !important;
  color: transparent !important;
  text-shadow: none !important;
  background-color: transparent !important;
  border: 0 !important;
}

.text-truncate {
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis;
  white-space: nowrap !important;
}

.text-nowrap {
  white-space: nowrap !important;
}

.text-wrap {
  word-wrap: break-word !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-uppercase {
  text-transform: uppercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

.text-overline {
  text-decoration: overline !important;
}

.text-underline {
  text-decoration: underline !important;
}

.text-line-through {
  text-decoration: line-through !important;
}

.font-wide {
  letter-spacing: 0.25rem;
}

.font-normal {
  font-weight: normal;
}

.font-bold {
  font-weight: bold;
}

.font-italic {
  font-style: italic !important;
}

ul.list-disc {
  list-style-type: disc !important;
}

ul.list-circle {
  list-style-type: circle !important;
}

ul.list-square {
  list-style-type: square !important;
}

ol.list-decimal {
  list-style-type: decimal !important;
}

ol.list-lower-alpha {
  list-style-type: lower-alpha !important;
}

ol.list-lower-latin {
  list-style-type: lower-latin !important;
}

ol.list-lower-roman {
  list-style-type: lower-roman !important;
}

ol.list-upper-alpha {
  list-style-type: upper-alpha !important;
}

ol.list-upper-latin {
  list-style-type: upper-latin !important;
}

ol.list-upper-roman {
  list-style-type: upper-roman !important;
}

.rounded {
  border-radius: 5000px !important;
}

.rounded:after {
  border-radius: 50%;
}

.radius {
  border-radius: 0.1875rem;
}

.bordered {
  border: 0.0625rem solid #cacaca;
}

.shadow {
  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
}

.arrow-down {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4375rem;
  content: '';
  border-bottom-width: 0;
  border-top-style: solid;
  border-color: #0a0a0a transparent transparent;
}

.arrow-up {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4375rem;
  content: '';
  border-top-width: 0;
  border-bottom-style: solid;
  border-color: transparent transparent #0a0a0a;
}

.arrow-right {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4375rem;
  content: '';
  border-right-width: 0;
  border-left-style: solid;
  border-color: transparent transparent transparent #0a0a0a;
}

.arrow-left {
  display: block;
  width: 0;
  height: 0;
  border: inset 0.4375rem;
  content: '';
  border-left-width: 0;
  border-right-style: solid;
  border-color: transparent #0a0a0a transparent transparent;
}

.separator-center {
  text-align: center !important;
}

.separator-center::before, .separator-center::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.separator-center::after {
  clear: both;
}

.separator-center::after {
  position: relative !important;
  width: 3rem;
  border-bottom: 0.125rem solid #fcbd50;
  margin: 1rem auto 0;
}

.separator-left {
  text-align: left !important;
}

.separator-left::before, .separator-left::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.separator-left::after {
  clear: both;
}

.separator-left::after {
  position: relative !important;
  width: 3rem;
  border-bottom: 0.125rem solid #fcbd50;
  margin: 1rem auto 0;
  margin-left: 0 !important;
}

.separator-right {
  text-align: right !important;
}

.separator-right::before, .separator-right::after {
  display: table;
  content: ' ';
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -ms-flex-order: 1;
      order: 1;
}

.separator-right::after {
  clear: both;
}

.separator-right::after {
  position: relative !important;
  width: 3rem;
  border-bottom: 0.125rem solid #fcbd50;
  margin: 1rem auto 0;
  margin-right: 0 !important;
}

.overflow-visible {
  overflow: visible !important;
}

.overflow-x-visible {
  overflow-x: visible !important;
}

.overflow-y-visible {
  overflow-y: visible !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-x-hidden {
  overflow-x: hidden !important;
}

.overflow-y-hidden {
  overflow-y: hidden !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

.overflow-x-scroll {
  overflow-x: scroll !important;
}

.overflow-y-scroll {
  overflow-y: scroll !important;
}

.display-inline {
  display: inline !important;
}

.display-inline-block {
  display: inline-block !important;
}

.display-block {
  display: block !important;
}

.display-table {
  display: table !important;
}

.display-table-cell {
  display: table-cell !important;
}

.position-static {
  position: static !important;
}

.position-relative {
  position: relative !important;
}

.position-absolute {
  position: absolute !important;
}

.position-fixed {
  position: fixed !important;
}

.position-fixed-top {
  position: fixed !important;
  top: 0rem !important;
  right: 0rem !important;
  left: 0rem !important;
  z-index: 975;
}

.position-fixed-bottom {
  position: fixed !important;
  right: 0rem !important;
  bottom: 0rem !important;
  left: 0rem !important;
  z-index: 975;
}

.border-box {
  box-sizing: border-box !important;
}

.border-none {
  border: none !important;
}

.width-25 {
  width: 25% !important;
}

.width-50 {
  width: 50% !important;
}

.width-75 {
  width: 75% !important;
}

.width-100 {
  width: 100% !important;
}

.height-25 {
  height: 25% !important;
}

.height-50 {
  height: 50% !important;
}

.height-75 {
  height: 75% !important;
}

.height-100 {
  height: 100% !important;
}

.max-width-100 {
  max-width: 100% !important;
}

.max-height-100 {
  max-height: 100% !important;
}

.margin-0 {
  margin: 0rem;
}

.margin-top-0 {
  margin-top: 0rem !important;
}

.margin-right-0 {
  margin-right: 0rem !important;
}

.margin-bottom-0 {
  margin-bottom: 0rem !important;
}

.margin-left-0 {
  margin-left: 0rem !important;
}

.margin-horizontal-0 {
  margin-right: 0rem !important;
  margin-left: 0rem !important;
}

.margin-vertical-0 {
  margin-top: 0rem !important;
  margin-bottom: 0rem !important;
}

.padding-0 {
  padding: 0rem;
}

.padding-top-0 {
  padding-top: 0rem !important;
}

.padding-right-0 {
  padding-right: 0rem !important;
}

.padding-bottom-0 {
  padding-bottom: 0rem !important;
}

.padding-left-0 {
  padding-left: 0rem !important;
}

.padding-horizontal-0 {
  padding-right: 0rem !important;
  padding-left: 0rem !important;
}

.padding-vertical-0 {
  padding-top: 0rem !important;
  padding-bottom: 0rem !important;
}

.margin-1 {
  margin: 1rem;
}

.margin-top-1 {
  margin-top: 1rem !important;
}

.margin-right-1 {
  margin-right: 1rem !important;
}

.margin-bottom-1 {
  margin-bottom: 1rem !important;
}

.margin-left-1 {
  margin-left: 1rem !important;
}

.margin-horizontal-1 {
  margin-right: 1rem !important;
  margin-left: 1rem !important;
}

.margin-vertical-1 {
  margin-top: 1rem !important;
  margin-bottom: 1rem !important;
}

.padding-1 {
  padding: 1rem;
}

.padding-top-1 {
  padding-top: 1rem !important;
}

.padding-right-1 {
  padding-right: 1rem !important;
}

.padding-bottom-1 {
  padding-bottom: 1rem !important;
}

.padding-left-1 {
  padding-left: 1rem !important;
}

.padding-horizontal-1 {
  padding-right: 1rem !important;
  padding-left: 1rem !important;
}

.padding-vertical-1 {
  padding-top: 1rem !important;
  padding-bottom: 1rem !important;
}

.margin-2 {
  margin: 2rem;
}

.margin-top-2 {
  margin-top: 2rem !important;
}

.margin-right-2 {
  margin-right: 2rem !important;
}

.margin-bottom-2 {
  margin-bottom: 2rem !important;
}

.margin-left-2 {
  margin-left: 2rem !important;
}

.margin-horizontal-2 {
  margin-right: 2rem !important;
  margin-left: 2rem !important;
}

.margin-vertical-2 {
  margin-top: 2rem !important;
  margin-bottom: 2rem !important;
}

.padding-2 {
  padding: 2rem;
}

.padding-top-2 {
  padding-top: 2rem !important;
}

.padding-right-2 {
  padding-right: 2rem !important;
}

.padding-bottom-2 {
  padding-bottom: 2rem !important;
}

.padding-left-2 {
  padding-left: 2rem !important;
}

.padding-horizontal-2 {
  padding-right: 2rem !important;
  padding-left: 2rem !important;
}

.padding-vertical-2 {
  padding-top: 2rem !important;
  padding-bottom: 2rem !important;
}

.margin-3 {
  margin: 3rem;
}

.margin-top-3 {
  margin-top: 3rem !important;
}

.margin-right-3 {
  margin-right: 3rem !important;
}

.margin-bottom-3 {
  margin-bottom: 3rem !important;
}

.margin-left-3 {
  margin-left: 3rem !important;
}

.margin-horizontal-3 {
  margin-right: 3rem !important;
  margin-left: 3rem !important;
}

.margin-vertical-3 {
  margin-top: 3rem !important;
  margin-bottom: 3rem !important;
}

.padding-3 {
  padding: 3rem;
}

.padding-top-3 {
  padding-top: 3rem !important;
}

.padding-right-3 {
  padding-right: 3rem !important;
}

.padding-bottom-3 {
  padding-bottom: 3rem !important;
}

.padding-left-3 {
  padding-left: 3rem !important;
}

.padding-horizontal-3 {
  padding-right: 3rem !important;
  padding-left: 3rem !important;
}

.padding-vertical-3 {
  padding-top: 3rem !important;
  padding-bottom: 3rem !important;
}

.ClientHeader__grid-container {
  padding-left: 0 !important;
}

@media print, screen and (min-width: 40em) {
  .ClientHeader__grid-container {
    padding-right: 0 !important;
  }
}

.ClientHeader__title-bar {
  padding: 0 !important;
}

@media print, screen and (min-width: 40em) {
  .ClientHeader__title-bar {
    padding-left: 1rem !important;
  }
}

.ClientHeader__site-name {
  margin-bottom: 0 !important;
  color: #fcbd50;
  text-shadow: 0 0 1px #ffffff;
}

.ClientHeader__client-name {
  text-align: right;
}

@media print, screen and (min-width: 40em) {
  .ClientHeader__client-name {
    padding-right: 16px;
  }
}

@media print, screen and (min-width: 64em) {
  .ClientHeader__client-name {
    font-size: 1.2em;
    text-align: center;
    padding-right: 0;
  }
}

.ClientHeader__left-group {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
}

.ClientHeader__menu-item a {
  color: #151515;
  font-size: 1.5rem;
  /* Safari */
  transition: background-color 0.5s, color 0.3s, text-shadow 0.5s;
}

.ClientHeader__menu-item a i {
  color: #fcbd50;
  /* Safari */
  transition: color 0.3s;
}

.ClientHeader__menu-item a:hover {
  background-color: #fcbd50;
  color: #fefefe;
  text-shadow: 0 0 1px #ffffff;
}

.ClientHeader__menu-item a:hover i {
  color: #fefefe;
}

@media print, screen and (min-width: 40em) {
  .ClientHeader__menu-item a {
    padding: 1rem 1rem;
  }
}

@media print, screen and (min-width: 40em) {
  .ClientHeader__off-canvas-close-button {
    font-size: inherit;
  }
}

.ClientHeader__off-canvas-logo {
  color: #fcbd50 !important;
  text-shadow: 0 0 1px #ffffff;
  font-size: 1.5rem;
}

.ClientHeader__off-canvas-button {
  font-size: 1.5rem;
  padding: 0.35em 0.8em;
  margin-bottom: 0 !important;
  background-color: #ffffff !important;
  color: #151515;
}

.ClientHeader__off-canvas-button:hover, .ClientHeader__off-canvas-button:focus {
  color: #fcbd50 !important;
}

.ClientHeader__mobile-menu .menu-text {
  color: #fefefe !important;
}

.ClientHeader__mobile-menu li a {
  font-size: 1.5rem;
  color: #151515 !important;
  padding-top: 1rem;
  padding-bottom: 1rem;
  /* Safari */
  transition: background-color 0.5s, color 0.3s, text-shadow 0.5s;
}

.ClientHeader__mobile-menu li a i {
  color: #fcbd50;
}

.ClientHeader__mobile-menu li a:hover {
  background-color: #fcbd50;
  color: #fefefe !important;
}

.ClientHeader__mobile-menu li a:hover i {
  color: #fefefe !important;
}

.Footer {
  background-color: #ffffff;
  color: #151515;
  padding: 20px 20px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-direction: column;
      flex-direction: column;
  max-height: 10rem;
  box-shadow: 0 -2px 5px 0 rgba(0, 0, 0, 0.16), 0 -2px 10px 0 rgba(0, 0, 0, 0.12);
}

@media print, screen and (min-width: 40em) {
  .Footer {
    -ms-flex-direction: row;
        flex-direction: row;
    height: 5rem;
    padding: 0 30px;
  }
}

.Footer__logo {
  color: #fcbd50;
}

.Footer__contact--address:hover {
  text-decoration: underline;
}

.Footer__contact, .Footer__copyright {
  -ms-flex: 0 0 50%;
      flex: 0 0 50%;
  text-align: center;
}

.Footer__contact a, .Footer__copyright a {
  color: #151515;
}

.Footer__contact a i, .Footer__copyright a i {
  color: #fcbd50;
}

@media print, screen and (min-width: 40em) {
  .Footer__contact:first-of-type, .Footer__copyright:first-of-type {
    text-align: left;
  }
  .Footer__contact:last-of-type, .Footer__copyright:last-of-type {
    text-align: right;
  }
}

body[data-login-page] .Footer {
  position: fixed;
  width: 100%;
  bottom: 0;
}

@media print, screen and (min-width: 40em) {
  body[data-login-page] .Footer {
    position: absolute;
  }
}

.ClientLogin {
  padding-top: 1.875rem;
  height: calc(100vh - 43px);
  min-height: 500px;
}

@media print, screen and (min-width: 40em) {
  .ClientLogin {
    padding-top: 3.75rem;
  }
}

.ClientLogin__button {
  background-color: #fcbd50;
  color: #fefefe !important;
}

.ClientLogin__button:hover, .ClientLogin__button:focus {
  background-color: #fbaa1e;
  color: #151515 !important;
}

.Dashboard {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-pack: center;
      justify-content: center;
  width: 100%;
  min-height: 100%;
}

.Dashboard__container {
  overflow: auto !important;
}

.Dashboard__contents {
  height: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
}

.Dashboard__link {
  margin: 0 0.25rem;
  border-radius: 0.5rem 1.875rem 0.5rem 1.875rem;
  transition: box-shadow 0.3s, background-image 0.3s;
}

.Dashboard__link:hover {
  box-shadow: 0 2px 5px 2px rgba(0, 0, 0, 0.32), 0 2px 10px 2px rgba(0, 0, 0, 0.24);
}

.Dashboard__link:hover .Dashboard__link-title {
  background-image: linear-gradient(to right, #fcbd50, #fefefe);
  color: #fefefe !important;
  text-shadow: 0 0 1px #ffffff;
}

.Dashboard__link:hover .Dashboard__link-title i {
  color: #fefefe !important;
  text-shadow: 0 0 1px #ffffff;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__link {
    border-radius: 0.75rem 2.8125rem 0.75rem 2.8125rem;
  }
}

.Dashboard__link--fancyvideo .Dashboard__image-in-link {
  max-height: 10vh !important;
}

.Dashboard__link-title {
  margin-bottom: 0;
  border-radius: 0.5rem 1.875rem 0 0;
  border: 1px solid rgba(10, 10, 10, 0.25);
  border-bottom: none;
  background-color: #ffffff !important;
  background-image: none;
  color: #151515 !important;
  transition: color 0.3s, background-image 0.3s, text-shadow 0.3s;
  font-size: 1.2em;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__link-title {
    font-size: 1.5em;
    border-radius: 0.75rem 2.8125rem 0 0;
  }
}

.Dashboard__link-title i {
  color: #fcbd50;
  transition: color 0.3s, text-shadow 0.3s;
}

.Dashboard__link-title--warning i {
  color: #AE0000;
}

a .Dashboard__link-title {
  cursor: pointer;
}

.Dashboard__link-images {
  padding: 0;
  border-radius: 0 0 0.5rem 1.875rem;
  border: 1px solid rgba(10, 10, 10, 0.25);
  margin-bottom: 0;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__link-images {
    border-radius: 0 0 0.75rem 2.8125rem;
  }
}

.Dashboard__images-in-link-wrapper {
  max-height: 4.375rem;
  overflow: hidden;
  position: relative;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__images-in-link-wrapper {
    max-height: 8.125rem;
  }
}

@media print, screen and (min-width: 64em) {
  .Dashboard__images-in-link-wrapper {
    max-height: 11.875rem;
  }
}

.Dashboard__images-in-link-wrapper:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: linear-gradient(90deg, rgba(255, 255, 255, 0), white);
}

.Dashboard__images-in-link {
  max-height: 4.375rem;
  width: 100vw;
  display: -ms-flexbox;
  display: flex;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__images-in-link {
    max-height: 8.125rem;
  }
}

@media print, screen and (min-width: 64em) {
  .Dashboard__images-in-link {
    max-height: 11.875rem;
  }
}

.Dashboard__image-in-link {
  max-height: 4.375rem;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__image-in-link {
    max-height: 8.125rem;
  }
}

@media print, screen and (min-width: 64em) {
  .Dashboard__image-in-link {
    max-height: 11.875rem;
  }
}

.Dashboard__image-in-link:first-of-type {
  border-radius: 0 0 0 1.875rem;
}

@media print, screen and (min-width: 40em) {
  .Dashboard__image-in-link:first-of-type {
    border-radius: 0 0 0 2.8125rem;
  }
}

.Dashboard__message {
  padding: 0.5rem;
  padding-left: 1.5rem;
}

.Dashboard__message i {
  color: #AE0000;
}

.Dashboard__message:first-of-type {
  margin-top: 1rem;
}

.Dashboard__message:last-of-type {
  margin-bottom: 1rem;
}

.Photos {
  margin-top: 2.5rem;
}

@media print, screen and (min-width: 40em) {
  .Photos {
    margin-top: 3.75rem;
  }
}

@media print, screen and (min-width: 64em) {
  .Photos {
    margin-top: 5rem;
  }
}

.Photos__image-box {
  padding: 0.125rem;
}

.Photos__image-wrapper {
  border: 0.0625rem solid #cacaca;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
}

.Photos__image-wrapper:hover {
  box-shadow: 2px 2px 10px #ccc;
  transform: translate(-1px, -1px);
}

.Photos__image-wrapper a {
  width: 100%;
  min-height: 7.4375rem;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
}

.Photos__image-wrapper img[data-src],
.Photos__image-wrapper img[data-srcset] {
  display: block;
  min-height: 1px;
}

.Photos__back-to-top-button {
  position: fixed;
  left: 0.625rem;
  bottom: 0.375rem;
  padding: 0.375rem 0.5rem;
  font-size: 1.875rem;
  opacity: 0.4;
}

.Photos__back-to-top-button:hover {
  opacity: 1;
}

.Photos__fancybox-copy-share-button {
  background-color: #fcbd50;
}

.Photos__fancybox-copy-share-button:hover {
  background-color: #fbaa1e;
  color: #151515;
}

.Photos__fancybox-slide {
  padding: 0 !important;
}

.Photos__fancybox-base.fancybox-is-open .fancybox-bg {
  opacity: 0.95;
}

.Photos__fancybox-base .fancybox-bg {
  background-color: rgba(255, 255, 255, 0.95) !important;
}

.Photos__fancybox-base .fancybox-navigation .fancybox-button {
  width: 44px !important;
  height: 44px !important;
}

.Video--fancy {
  z-index: -1;
}

.Video__player {
  height: 100%;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
}

.Video__player #video-player {
  background-color: transparent !important;
}

.FBPopup {
  color: #151515;
  opacity: 0.8;
}

@media screen and (max-width: 39.99875em) {
  .FBPopup {
    height: inherit;
    min-height: inherit;
    max-height: inherit;
  }
}

.FBPopup__anch {
  position: absolute;
  width: 100%;
  height: 70px;
  background-color: transparent;
}

.FBPopup__anch:hover {
  background-color: #ffffff;
  opacity: 0.3;
}

.FBPopup__iframe {
  width: 100%;
  max-width: 500px;
  border: none;
  overflow: hidden;
}

.FBPopup__contents {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: center;
      justify-content: center;
  width: 100%;
  height: 100%;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50cy5jc3MiLCJzb3VyY2VzIjpbImNsaWVudHMuc2NzcyIsImNsaWVudC9zZXR0aW5ncy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9zZXR0aW5ncy9fc2V0dGluZ3Muc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdXRpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdmFsdWUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2NvbG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3NlbGVjdG9yLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19taXhpbnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3VuZGF0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3ZlbmRvci9ub3JtYWxpemUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9fbWlzc2luZy1kZXBlbmRlbmNpZXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9fdHJ1ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW4uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wdXJnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JlbW92ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JlcGxhY2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190by1saXN0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3V0aWwuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvX2dsb2JhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3RleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2NoZWNrYm94LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9faGVscC10ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19pbnB1dC1ncm91cC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3NlbGVjdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fcmFuZ2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19tZXRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZXJyb3Iuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19iYXNlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX2hlbHBlcnMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3R5cG9ncmFwaHkvX3ByaW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NvbHVtbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19zaXplLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2d1dHRlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jbGFzc2VzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19mbGV4LWdyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9feHktZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2dyaWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2VsbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19sYXlvdXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY2xhc3Nlcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19idXR0b24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2Nsb3NlLWJ1dHRvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19sYWJlbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc2xpZGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3N3aXRjaC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19iYWRnZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2NhcmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190b29sdGlwLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2FjY29yZGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb3JiaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmVzcG9uc2l2ZS1lbWJlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RodW1ibmFpbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZW51LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUtaWNvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19hY2NvcmRpb24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcmlsbGRvd24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24tbWVudS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19vZmYtY2FudmFzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3JldmVhbC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdGl0bGUtYmFyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RvcC1iYXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxleC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL192aXNpYmlsaXR5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcHJvdG90eXBlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcmVsYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3guc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3RhdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LXV0aWxpdGllcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3RleHQtdHJhbnNmb3JtYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19mb250LXN0eWxpbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19saXN0LXN0eWxlLXR5cGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3VuZGVkLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyZWQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zaGFkb3cuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19hcnJvdy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NlcGFyYXRvci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX292ZXJmbG93LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZGlzcGxheS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fYm9yZGVyLWJveC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ub25lLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc2l6aW5nLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fc3BhY2luZy5zY3NzIiwiY2xpZW50L2NsaWVudC1oZWFkZXIuc2NzcyIsImNsaWVudC9jbGllbnQtZm9vdGVyLnNjc3MiLCJjbGllbnQvY2xpZW50LWxvZ2luLnNjc3MiLCJjbGllbnQvZGFzaGJvYXJkLnNjc3MiLCJjbGllbnQvcGhvdG9zLnNjc3MiLCJjbGllbnQvdmlkZW8uc2NzcyIsImNsaWVudC9mYi1wb3B1cC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCJjbGllbnQvc2V0dGluZ3NcIjtcclxuQGltcG9ydCBcImZvdW5kYXRpb25cIjtcclxuQGluY2x1ZGUgZm91bmRhdGlvbi1ldmVyeXRoaW5nKCRwcm90b3R5cGU6IHRydWUpO1xyXG5AaW1wb3J0IFwiY2xpZW50L2NsaWVudC1oZWFkZXJcIjtcclxuQGltcG9ydCBcImNsaWVudC9jbGllbnQtZm9vdGVyXCI7XHJcbkBpbXBvcnQgXCJjbGllbnQvY2xpZW50LWxvZ2luXCI7XHJcbkBpbXBvcnQgXCJjbGllbnQvZGFzaGJvYXJkXCI7XHJcbkBpbXBvcnQgXCJjbGllbnQvcGhvdG9zXCI7XHJcbkBpbXBvcnQgXCJjbGllbnQvdmlkZW9cIjtcclxuQGltcG9ydCBcImNsaWVudC9mYi1wb3B1cFwiOyIsIkBpbXBvcnQgXCJzZXR0aW5ncy9zZXR0aW5nc1wiO1xyXG5cclxuJGJvZHktZm9udC1mYW1pbHk6IFwiVmVyZGFuYVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcclxuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcblxyXG4kb2ZmY2FudmFzLXNpemVzOiAoXHJcbiAgc21hbGw6IDMwMHB4LFxyXG4gIG1lZGl1bTogMzIwcHgsXHJcbiAgbGFyZ2U6IDM2MHB4LFxyXG4pO1xyXG5cclxuXHJcbi8vJHRpdGxlYmFyLWJhY2tncm91bmQ6ICNmY2JkNTA7Ly9saW5lYXItZ3JhZGllbnQoI0M4MDAwMCwgI2E4MDAwMCwgIzhlMDAwMCk7XHJcbi8vJHRpdGxlYmFyLWNvbG9yOiAjYmMwMDAwO1xyXG4kdGl0bGViYXItYmFja2dyb3VuZDogI2ZmZmZmZjsvL2xpbmVhci1ncmFkaWVudCgjQzgwMDAwLCAjYTgwMDAwLCAjOGUwMDAwKTtcclxuJHRpdGxlYmFyLWNvbG9yOiAjMTUxNTE1O1xyXG5cclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjc1KTtcclxuXHJcbi8vJHNlY29uZGFyeS1jb2xvcjogI2JjMDAwMDtcclxuLy8kYW5jaG9yLWNvbG9yOiAjYTgwMDAwO1xyXG4vLyRhbmNob3ItY29sb3ItaG92ZXI6ICM4ZTAwMDA7XHJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQ6ICNmY2JkNTA7XHJcblxyXG5cclxuLy9vdXIgc2V0dGluZ3MgaGVyZVxyXG4kYWNjZW50LWNvbG9yOiAjZmNiZDUwO1xyXG4kZGFzaGJvYXJkLXdhcm5pbmctY29sb3I6ICNBRTAwMDA7XHJcbi8vJGZvb3Rlci1iYWNrZ3JvdW5kOiAjM2IzOTQwO1xyXG4vLyRmb290ZXItY29sb3I6ICNmZmZmZmY7XHJcbiRmb290ZXItYmFja2dyb3VuZDogJHRpdGxlYmFyLWJhY2tncm91bmQ7XHJcbiRmb290ZXItY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcclxuIiwiLy8gIEZvdW5kYXRpb24gZm9yIFNpdGVzIFNldHRpbmdzXG4vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vXG4vLyAgVGFibGUgb2YgQ29udGVudHM6XG4vL1xuLy8gICAxLiBHbG9iYWxcbi8vICAgMi4gQnJlYWtwb2ludHNcbi8vICAgMy4gVGhlIEdyaWRcbi8vICAgNC4gQmFzZSBUeXBvZ3JhcGh5XG4vLyAgIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xuLy8gICA2LiBBYmlkZVxuLy8gICA3LiBBY2NvcmRpb25cbi8vICAgOC4gQWNjb3JkaW9uIE1lbnVcbi8vICAgOS4gQmFkZ2Vcbi8vICAxMC4gQnJlYWRjcnVtYnNcbi8vICAxMS4gQnV0dG9uXG4vLyAgMTIuIEJ1dHRvbiBHcm91cFxuLy8gIDEzLiBDYWxsb3V0XG4vLyAgMTQuIENhcmRcbi8vICAxNS4gQ2xvc2UgQnV0dG9uXG4vLyAgMTYuIERyaWxsZG93blxuLy8gIDE3LiBEcm9wZG93blxuLy8gIDE4LiBEcm9wZG93biBNZW51XG4vLyAgMTkuIEZsZXhib3ggVXRpbGl0aWVzXG4vLyAgMjAuIEZvcm1zXG4vLyAgMjEuIExhYmVsXG4vLyAgMjIuIE1lZGlhIE9iamVjdFxuLy8gIDIzLiBNZW51XG4vLyAgMjQuIE1ldGVyXG4vLyAgMjUuIE9mZi1jYW52YXNcbi8vICAyNi4gT3JiaXRcbi8vICAyNy4gUGFnaW5hdGlvblxuLy8gIDI4LiBQcm9ncmVzcyBCYXJcbi8vICAyOS4gUHJvdG90eXBlIEFycm93XG4vLyAgMzAuIFByb3RvdHlwZSBCb3JkZXItQm94XG4vLyAgMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxuLy8gIDMyLiBQcm90b3R5cGUgQm9yZGVyZWRcbi8vICAzMy4gUHJvdG90eXBlIERpc3BsYXlcbi8vICAzNC4gUHJvdG90eXBlIEZvbnQtU3R5bGluZ1xuLy8gIDM1LiBQcm90b3R5cGUgTGlzdC1TdHlsZS1UeXBlXG4vLyAgMzYuIFByb3RvdHlwZSBPdmVyZmxvd1xuLy8gIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cbi8vICAzOC4gUHJvdG90eXBlIFJvdW5kZWRcbi8vICAzOS4gUHJvdG90eXBlIFNlcGFyYXRvclxuLy8gIDQwLiBQcm90b3R5cGUgU2hhZG93XG4vLyAgNDEuIFByb3RvdHlwZSBTaXppbmdcbi8vICA0Mi4gUHJvdG90eXBlIFNwYWNpbmdcbi8vICA0My4gUHJvdG90eXBlIFRleHQtRGVjb3JhdGlvblxuLy8gIDQ0LiBQcm90b3R5cGUgVGV4dC1UcmFuc2Zvcm1hdGlvblxuLy8gIDQ1LiBQcm90b3R5cGUgVGV4dC1VdGlsaXRpZXNcbi8vICA0Ni4gUmVzcG9uc2l2ZSBFbWJlZFxuLy8gIDQ3LiBSZXZlYWxcbi8vICA0OC4gU2xpZGVyXG4vLyAgNDkuIFN3aXRjaFxuLy8gIDUwLiBUYWJsZVxuLy8gIDUxLiBUYWJzXG4vLyAgNTIuIFRodW1ibmFpbFxuLy8gIDUzLiBUaXRsZSBCYXJcbi8vICA1NC4gVG9vbHRpcFxuLy8gIDU1LiBUb3AgQmFyXG4vLyAgNTYuIFh5IEdyaWRcblxuQGltcG9ydCAndXRpbC91dGlsJztcblxuLy8gMS4gR2xvYmFsXG4vLyAtLS0tLS0tLS1cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCU7XG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiRnbG9iYWwtbGluZWhlaWdodDogMS41O1xuJGZvdW5kYXRpb24tcGFsZXR0ZTogKFxuICBwcmltYXJ5OiAjMTc3OWJhLFxuICBzZWNvbmRhcnk6ICM3Njc2NzYsXG4gIHN1Y2Nlc3M6ICMzYWRiNzYsXG4gIHdhcm5pbmc6ICNmZmFlMDAsXG4gIGFsZXJ0OiAjY2M0YjM3LFxuKTtcbiRsaWdodC1ncmF5OiAjZTZlNmU2O1xuJG1lZGl1bS1ncmF5OiAjY2FjYWNhO1xuJGRhcmstZ3JheTogIzhhOGE4YTtcbiRibGFjazogIzBhMGEwYTtcbiR3aGl0ZTogI2ZlZmVmZTtcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjaztcbiRib2R5LWZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYm9keS1hbnRpYWxpYXNlZDogdHJ1ZTtcbiRnbG9iYWwtbWFyZ2luOiAxcmVtO1xuJGdsb2JhbC1wYWRkaW5nOiAxcmVtO1xuJGdsb2JhbC1wb3NpdGlvbjogMXJlbTtcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogbm9ybWFsO1xuJGdsb2JhbC13ZWlnaHQtYm9sZDogYm9sZDtcbiRnbG9iYWwtcmFkaXVzOiAwO1xuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtO1xuJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW46IDFyZW07XG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHI7XG4kZ2xvYmFsLWZsZXhib3g6IHRydWU7XG4kZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50czogZmFsc2U7XG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG87XG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwO1xuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xuXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XG4kcHJpbnQtaHJlZnM6IHRydWU7XG5cbi8vIDIuIEJyZWFrcG9pbnRzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pO1xuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlO1xuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSk7XG5cbi8vIDMuIFRoZSBHcmlkXG4vLyAtLS0tLS0tLS0tLVxuXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb2x1bW4tY291bnQ6IDEyO1xuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4LFxuKTtcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlO1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucyc7XG4kYmxvY2stZ3JpZC1tYXg6IDg7XG5cbi8vIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGhlYWRlci1mb250LXN0eWxlOiBub3JtYWw7XG4kZm9udC1mYW1pbHktbW9ub3NwYWNlOiBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiRoZWFkZXItY29sb3I6IGluaGVyaXQ7XG4kaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcbiRoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuJGhlYWRlci1zdHlsZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4pO1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuJHNtYWxsLWZvbnQtc2l6ZTogODAlO1xuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXk7XG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNjtcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiRjb2RlLWNvbG9yOiAkYmxhY2s7XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjb2RlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNSAxKTtcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGhyLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xuJGxpc3QtbGluZWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuJGxpc3QtbWFyZ2luLWJvdHRvbTogJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbiRsaXN0LXN0eWxlLXBvc2l0aW9uOiBvdXRzaWRlO1xuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5O1xuJGJsb2NrcXVvdGUtcGFkZGluZzogcmVtLWNhbGMoOSAyMCAwIDE5KTtcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRjaXRlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnO1xuJGtleXN0cm9rZS1mb250OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xuJGtleXN0cm9rZS1jb2xvcjogJGJsYWNrO1xuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRrZXlzdHJva2UtcGFkZGluZzogcmVtLWNhbGMoMiA0IDApO1xuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjaztcblxuLy8gNS4gVHlwb2dyYXBoeSBIZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGxlYWQtZm9udC1zaXplOiAkZ2xvYmFsLWZvbnQtc2l6ZSAqIDEuMjU7XG4kbGVhZC1saW5laGVpZ2h0OiAxLjY7XG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNDtcbiRzdWJoZWFkZXItY29sb3I6ICRkYXJrLWdyYXk7XG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbTtcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuJHN0YXQtZm9udC1zaXplOiAyLjVyZW07XG5cbi8vIDYuIEFiaWRlXG4vLyAtLS0tLS0tLVxuXG4kYWJpZGUtaW5wdXRzOiB0cnVlO1xuJGFiaWRlLWxhYmVsczogdHJ1ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XG4kZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpO1xuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuXG4vLyA3LiBBY2NvcmRpb25cbi8vIC0tLS0tLS0tLS0tLVxuXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlO1xuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtO1xuJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheTtcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtO1xuXG4vLyA4LiBBY2NvcmRpb24gTWVudVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XG4kYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbjtcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcbiRhY2NvcmRpb25tZW51LWFycm93czogdHJ1ZTtcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDogbnVsbDtcbiRhY2NvcmRpb25tZW51LWJvcmRlcjogbnVsbDtcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ6IG51bGw7XG4kYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHg7XG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xuXG4vLyA5LiBCYWRnZVxuLy8gLS0tLS0tLS1cblxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJhZGdlLWNvbG9yOiAkd2hpdGU7XG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2s7XG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbTtcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW07XG5cbi8vIDEwLiBCcmVhZGNydW1ic1xuLy8gLS0tLS0tLS0tLS0tLS0tXG5cbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJyZWFkY3J1bWJzLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMSk7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2s7XG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luOiAwLjc1cmVtO1xuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yOiB0cnVlO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW06ICcvJztcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkbWVkaXVtLWdyYXk7XG5cbi8vIDExLiBCdXR0b25cbi8vIC0tLS0tLS0tLS1cblxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdDtcbiRidXR0b24tcGFkZGluZzogMC44NWVtIDFlbTtcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMDtcbiRidXR0b24tZmlsbDogc29saWQ7XG4kYnV0dG9uLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyOiBzY2FsZS1jb2xvcigkYnV0dG9uLWJhY2tncm91bmQsICRsaWdodG5lc3M6IC0xNSUpO1xuJGJ1dHRvbi1jb2xvcjogJHdoaXRlO1xuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjaztcbiRidXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4O1xuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKTtcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCU7XG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCU7XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0O1xuJGJ1dHRvbi1yZXNwb25zaXZlLWV4cGFuZGVkOiBmYWxzZTtcblxuLy8gMTIuIEJ1dHRvbiBHcm91cFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtO1xuJGJ1dHRvbmdyb3VwLXNwYWNpbmc6IDFweDtcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nO1xuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDY7XG4kYnV0dG9uZ3JvdXAtcmFkaXVzLW9uLWVhY2g6IHRydWU7XG5cbi8vIDEzLiBDYWxsb3V0XG4vLyAtLS0tLS0tLS0tLVxuXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JTtcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KTtcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMDtcbiRjYWxsb3V0LXBhZGRpbmc6IDFyZW07XG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQ7XG4kY2FsbG91dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGNhbGxvdXQtbGluay10aW50OiAzMCU7XG5cbi8vIDE0LiBDYXJkXG4vLyAtLS0tLS0tLVxuXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcbiRjYXJkLWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xuJGNhcmQtc2hhZG93OiBub25lO1xuJGNhcmQtYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kY2FyZC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kY2FyZC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcblxuLy8gMTUuIENsb3NlIEJ1dHRvblxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcDtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxuICBzbWFsbDogMC42NnJlbSxcbiAgbWVkaXVtOiAxcmVtLFxuKTtcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWw6IChcbiAgc21hbGw6IDAuMzNlbSxcbiAgbWVkaXVtOiAwLjVyZW0sXG4pO1xuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbik7XG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMTtcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheTtcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrO1xuXG4vLyAxNi4gRHJpbGxkb3duXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiRkcmlsbGRvd24tdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGxpbmVhcjtcbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlO1xuJGRyaWxsZG93bi1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbjogMDtcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZztcbiRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kZHJpbGxkb3duLWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4O1xuXG4vLyAxNy4gRHJvcGRvd25cbi8vIC0tLS0tLS0tLS0tLVxuXG4kZHJvcGRvd24tcGFkZGluZzogMXJlbTtcbiRkcm9wZG93bi1iYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW07XG4kZHJvcGRvd24td2lkdGg6IDMwMHB4O1xuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKTtcblxuLy8gMTguIERyb3Bkb3duIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bm1lbnUtYXJyb3dzOiB0cnVlO1xuJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvcjogJGFuY2hvci1jb2xvcjtcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xuJGRyb3Bkb3dubWVudS1hcnJvdy1wYWRkaW5nOiAxLjVyZW07XG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHg7XG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGw7XG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyb3Bkb3dubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMDtcbiRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XG4kZHJvcGRvd25tZW51LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRkcm9wZG93bi1tZW51LWl0ZW0tY29sb3ItYWN0aXZlOiBnZXQtY29sb3IocHJpbWFyeSk7XG4kZHJvcGRvd24tbWVudS1pdGVtLWJhY2tncm91bmQtYWN0aXZlOiB0cmFuc3BhcmVudDtcblxuLy8gMTkuIEZsZXhib3ggVXRpbGl0aWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGZsZXgtc291cmNlLW9yZGVyaW5nLWNvdW50OiA2O1xuJGZsZXhib3gtcmVzcG9uc2l2ZS1icmVha3BvaW50czogdHJ1ZTtcblxuLy8gMjAuIEZvcm1zXG4vLyAtLS0tLS0tLS1cblxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XG4kZmllbGRzZXQtbWFyZ2luOiByZW0tY2FsYygxOCAwKTtcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKTtcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrO1xuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpO1xuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcbiRpbnB1dC1wcmVmaXgtY29sb3I6ICRibGFjaztcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbTtcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2s7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRmb3JtLWxhYmVsLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44O1xuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5O1xuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGlucHV0LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdDtcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQ7XG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGlucHV0LWJhY2tncm91bmQtZm9jdXM6ICR3aGl0ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheTtcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtYm9yZGVyLWZvY3VzOiAxcHggc29saWQgJGRhcmstZ3JheTtcbiRpbnB1dC1wYWRkaW5nOiAkZm9ybS1zcGFjaW5nIC8gMjtcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKTtcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5O1xuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQ7XG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQ7XG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlO1xuJGlucHV0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjEuIExhYmVsXG4vLyAtLS0tLS0tLS1cblxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJGxhYmVsLWNvbG9yOiAkd2hpdGU7XG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2s7XG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbTtcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyMi4gTWVkaWEgT2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiRtZWRpYW9iamVjdC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlO1xuXG4vLyAyMy4gTWVudVxuLy8gLS0tLS0tLS1cblxuJG1lbnUtbWFyZ2luOiAwO1xuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW47XG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW07XG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlO1xuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtO1xuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWU7XG4kbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdDogdHJ1ZTtcbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlO1xuXG4vLyAyNC4gTWV0ZXJcbi8vIC0tLS0tLS0tLVxuXG4kbWV0ZXItaGVpZ2h0OiAxcmVtO1xuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3I7XG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3I7XG5cbi8vIDI1LiBPZmYtY2FudmFzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpO1xuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZTogMjBweDtcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSk7XG4kb2ZmY2FudmFzLW92ZXJsYXktemluZGV4OiAxMTtcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTM7XG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cztcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZTtcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSk7XG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xuXG4vLyAyNi4gT3JiaXRcbi8vIC0tLS0tLS0tLVxuXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7XG5cbi8vIDI3LiBQYWdpbmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrO1xuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKTtcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSk7XG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvcjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZTtcbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZTtcblxuLy8gMjguIFByb2dyZXNzIEJhclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtO1xuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyOS4gUHJvdG90eXBlIEFycm93XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uczogKFxuICBkb3duLFxuICB1cCxcbiAgcmlnaHQsXG4gIGxlZnRcbik7XG4kcHJvdG90eXBlLWFycm93LXNpemU6IDAuNDM3NXJlbTtcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuLy8gMzAuIFByb3RvdHlwZSBCb3JkZXItQm94XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzIuIFByb3RvdHlwZSBCb3JkZXJlZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtYm9yZGVyLXdpZHRoOiByZW0tY2FsYygxKTtcbiRwcm90b3R5cGUtYm9yZGVyLXR5cGU6IHNvbGlkO1xuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcblxuLy8gMzMuIFByb3RvdHlwZSBEaXNwbGF5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICBpbmxpbmUsXG4gIGlubGluZS1ibG9jayxcbiAgYmxvY2ssXG4gIHRhYmxlLFxuICB0YWJsZS1jZWxsXG4pO1xuXG4vLyAzNC4gUHJvdG90eXBlIEZvbnQtU3R5bGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCk7XG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcblxuLy8gMzUuIFByb3RvdHlwZSBMaXN0LVN0eWxlLVR5cGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXG4gIGRpc2MsXG4gIGNpcmNsZSxcbiAgc3F1YXJlXG4pO1xuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcbiAgZGVjaW1hbCxcbiAgbG93ZXItYWxwaGEsXG4gIGxvd2VyLWxhdGluLFxuICBsb3dlci1yb21hbixcbiAgdXBwZXItYWxwaGEsXG4gIHVwcGVyLWxhdGluLFxuICB1cHBlci1yb21hblxuKTtcblxuLy8gMzYuIFByb3RvdHlwZSBPdmVyZmxvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcbiAgdmlzaWJsZSxcbiAgaGlkZGVuLFxuICBzY3JvbGxcbik7XG5cbi8vIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXG4gIHN0YXRpYyxcbiAgcmVsYXRpdmUsXG4gIGFic29sdXRlLFxuICBmaXhlZFxuKTtcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1O1xuXG4vLyAzOC4gUHJvdG90eXBlIFJvdW5kZWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKTtcblxuLy8gMzkuIFByb3RvdHlwZSBTZXBhcmF0b3Jcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXI7XG4kcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQ6IHJlbS1jYWxjKDIpO1xuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW07XG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luO1xuXG4vLyA0MC4gUHJvdG90eXBlIFNoYWRvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsMCwwLC4xNiksXG4gICAgICAgICAgICAgICAgICAgICAgIDAgMnB4IDEwcHggMCByZ2JhKDAsMCwwLC4xMik7XG5cbi8vIDQxLiBQcm90b3R5cGUgU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXNpemluZzogKFxuICB3aWR0aCxcbiAgaGVpZ2h0XG4pO1xuJHByb3RvdHlwZS1zaXplczogKFxuICAyNTogMjUlLFxuICA1MDogNTAlLFxuICA3NTogNzUlLFxuICAxMDA6IDEwMCVcbik7XG5cbi8vIDQyLiBQcm90b3R5cGUgU3BhY2luZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXNwYWNlcnMtY291bnQ6IDM7XG5cbi8vIDQzLiBQcm90b3R5cGUgVGV4dC1EZWNvcmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWRlY29yYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcbiAgb3ZlcmxpbmUsXG4gIHVuZGVybGluZSxcbiAgbGluZS10aHJvdWdoLFxuKTtcblxuLy8gNDQuIFByb3RvdHlwZSBUZXh0LVRyYW5zZm9ybWF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb246IChcbiAgbG93ZXJjYXNlLFxuICB1cHBlcmNhc2UsXG4gIGNhcGl0YWxpemVcbik7XG5cbi8vIDQ1LiBQcm90b3R5cGUgVGV4dC1VdGlsaXRpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxuLy8gNDYuIFJlc3BvbnNpdmUgRW1iZWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KTtcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxuICBkZWZhdWx0OiA0IGJ5IDMsXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXG4pO1xuXG4vLyA0Ny4gUmV2ZWFsXG4vLyAtLS0tLS0tLS0tXG5cbiRyZXZlYWwtYmFja2dyb3VuZDogJHdoaXRlO1xuJHJldmVhbC13aWR0aDogNjAwcHg7XG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aDtcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nO1xuJHJldmVhbC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kcmV2ZWFsLXppbmRleDogMTAwNTtcbiRyZXZlYWwtb3ZlcmxheS1iYWNrZ3JvdW5kOiByZ2JhKCRibGFjaywgMC40NSk7XG5cbi8vIDQ4LiBTbGlkZXJcbi8vIC0tLS0tLS0tLS1cblxuJHNsaWRlci13aWR0aC12ZXJ0aWNhbDogMC41cmVtO1xuJHNsaWRlci10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW07XG4kc2xpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJHNsaWRlci1maWxsLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtO1xuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbTtcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1O1xuJHNsaWRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyA0OS4gU3dpdGNoXG4vLyAtLS0tLS0tLS0tXG5cbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3I7XG4kc3dpdGNoLWhlaWdodDogMnJlbTtcbiRzd2l0Y2gtaGVpZ2h0LXRpbnk6IDEuNXJlbTtcbiRzd2l0Y2gtaGVpZ2h0LXNtYWxsOiAxLjc1cmVtO1xuJHN3aXRjaC1oZWlnaHQtbGFyZ2U6IDIuNXJlbTtcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbjtcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbTtcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQ7XG5cbi8vIDUwLiBUYWJsZVxuLy8gLS0tLS0tLS0tXG5cbiR0YWJsZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGFibGUtY29sb3Itc2NhbGU6IDUlO1xuJHRhYmxlLWJvcmRlcjogMXB4IHNvbGlkIHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApO1xuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZTtcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUpO1xuJHRhYmxlLXN0cmlwZTogZXZlbjtcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKTtcbiR0YWJsZS1oZWFkLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1oZWFkLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKTtcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2U7XG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuXG4vLyA1MS4gVGFic1xuLy8gLS0tLS0tLS1cblxuJHRhYi1tYXJnaW46IDA7XG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0YWItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXk7XG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlO1xuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtO1xuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5O1xuJHRhYi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW07XG5cbi8vIDUyLiBUaHVtYm5haWxcbi8vIC0tLS0tLS0tLS0tLS1cblxuJHRodW1ibmFpbC1ib3JkZXI6IDRweCBzb2xpZCAkd2hpdGU7XG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpO1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyA1My4gVGl0bGUgQmFyXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkYmxhY2s7XG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZTtcbiR0aXRsZWJhci1wYWRkaW5nOiAwLjVyZW07XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZDtcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5O1xuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbTtcblxuLy8gNTQuIFRvb2x0aXBcbi8vIC0tLS0tLS0tLS0tXG5cbiRoYXMtdGlwLWN1cnNvcjogaGVscDtcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5O1xuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZTtcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW07XG4kdG9vbHRpcC1tYXgtd2lkdGg6IDEwcmVtO1xuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtO1xuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjY7XG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyA1NS4gVG9wIEJhclxuLy8gLS0tLS0tLS0tLS1cblxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW07XG4kdG9wYmFyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZDtcbiR0b3BiYXItdGl0bGUtc3BhY2luZzogMC41cmVtIDFyZW0gMC41cmVtIDA7XG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweDtcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW07XG5cbi8vIDU2LiBYeSBHcmlkXG4vLyAtLS0tLS0tLS0tLVxuXG4keHktZ3JpZDogdHJ1ZTtcbiRncmlkLWNvbnRhaW5lcjogJGdsb2JhbC13aWR0aDtcbiRncmlkLWNvbHVtbnM6IDEyO1xuJGdyaWQtbWFyZ2luLWd1dHRlcnM6IChcbiAgc21hbGw6IDIwcHgsXG4gIG1lZGl1bTogMzBweFxuKTtcbiRncmlkLXBhZGRpbmctZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnM7XG4kZ3JpZC1jb250YWluZXItcGFkZGluZzogJGdyaWQtcGFkZGluZy1ndXR0ZXJzO1xuJGdyaWQtY29udGFpbmVyLW1heDogJGdsb2JhbC13aWR0aDtcbiR4eS1ibG9jay1ncmlkLW1heDogODtcblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRmluZHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHR3byBpbnRlZ2Vycy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYSAtIEZpcnN0IG51bWJlciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYiAtIFNlY29uZCBudW1iZXIgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvci5cbkBmdW5jdGlvbiBnY2QoJGEsICRiKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9HcmVhdGVzdF9jb21tb25fZGl2aXNvciNKYXZhU2NyaXB0XG4gIEBpZiAoJGIgIT0gMCkge1xuICAgIEByZXR1cm4gZ2NkKCRiLCAkYSAlICRiKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBhYnMoJGEpO1xuICB9XG59XG5cbi8vLyBIYW5kbGVzIGRlY2ltYWwgZXhwb25lbnRzIGJ5IHRyeWluZyB0byBjb252ZXJ0IHRoZW0gaW50byBhIGZyYWN0aW9uIGFuZCB0aGVuIHVzZSBhIG50aC1yb290LWFsZ29yaXRobSBmb3IgcGFydHMgb2YgdGhlIGNhbGN1bGF0aW9uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgYmFzZSBudW1iZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRleHBvbmVudCAtIFRoZSBleHBvbmVudC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBwcm9kdWN0IG9mIHRoZSBleHBvbmVudGlhdGlvbi5cbkBmdW5jdGlvbiBwb3coJGJhc2UsICRleHBvbmVudCwgJHByZWM6IDE2KSB7XG4gIEBpZiAoZmxvb3IoJGV4cG9uZW50KSAhPSAkZXhwb25lbnQpIHtcbiAgICAkcHJlYzIgOiBwb3coMTAsICRwcmVjKTtcbiAgICAkZXhwb25lbnQ6IHJvdW5kKCRleHBvbmVudCAqICRwcmVjMik7XG4gICAgJGRlbm9taW5hdG9yOiBnY2QoJGV4cG9uZW50LCAkcHJlYzIpO1xuICAgIEByZXR1cm4gbnRoLXJvb3QocG93KCRiYXNlLCAkZXhwb25lbnQgLyAkZGVub21pbmF0b3IpLCAkcHJlYzIgLyAkZGVub21pbmF0b3IsICRwcmVjKTtcbiAgfVxuXG4gICR2YWx1ZTogJGJhc2U7XG4gIEBpZiAkZXhwb25lbnQgPiAxIHtcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqICRiYXNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZXhwb25lbnQgPCAxIHtcbiAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoIC0kZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgLyAkYmFzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuQGZ1bmN0aW9uIG50aC1yb290KCRudW0sICRuOiAyLCAkcHJlYzogMTIpIHtcbiAgLy8gRnJvbTogaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL050aF9yb290I0phdmFTY3JpcHRcbiAgJHg6IDE7XG5cbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkcHJlYyB7XG4gICAgJHg6IDEgLyAkbiAqICgoJG4gLSAxKSAqICR4ICsgKCRudW0gLyBwb3coJHgsICRuIC0gMSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHg7XG59XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSB3aWR0aCBmb3IgYSBnaXZlbiByYXRpby5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYXRpbyAtIFJhdGlvIHRvIHVzZSB0byBjYWxjdWxhdGUgdGhlIGhlaWdodCwgZm9ybWF0dGVkIGFzIGB4IGJ5IHlgLlxuLy8vIEByZXR1cm4ge051bWJlcn0gQSBwZXJjZW50YWdlIHZhbHVlIGZvciB0aGUgaGVpZ2h0IHJlbGF0aXZlIHRvIHRoZSB3aWR0aCBvZiBhIHJlc3BvbnNpdmUgY29udGFpbmVyLlxuQGZ1bmN0aW9uIHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKSB7XG4gICR3OiBudGgoJHJhdGlvLCAxKTtcbiAgJGg6IG50aCgkcmF0aW8sIDMpO1xuICBAcmV0dXJuICRoIC8gJHcgKiAxMDAlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlICFkZWZhdWx0O1xuXG4vLy8gUmVtb3ZlcyB0aGUgdW5pdCAoZS5nLiBweCwgZW0sIHJlbSkgZnJvbSBhIHZhbHVlLCByZXR1cm5pbmcgdGhlIG51bWJlciBvbmx5LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW0gLSBOdW1iZXIgdG8gc3RyaXAgdW5pdCBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gVGhlIHNhbWUgbnVtYmVyLCBzYW5zIHVuaXQuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLy8gQ29udmVydHMgb25lIG9yIG1vcmUgcGl4ZWwgdmFsdWVzIGludG8gbWF0Y2hpbmcgcmVtIHZhbHVlcy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR2YWx1ZXMgLSBPbmUgb3IgbW9yZSB2YWx1ZXMgdG8gY29udmVydC4gQmUgc3VyZSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggc3BhY2VzIGFuZCBub3QgY29tbWFzLiBJZiB5b3UgbmVlZCB0byBjb252ZXJ0IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHdyYXAgdGhlIGxpc3QgaW4gcGFyZW50aGVzZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIFRoZSBiYXNlIHZhbHVlIHRvIHVzZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBgcmVtYC4gSWYgeW91J3JlIHVzaW5nIEZvdW5kYXRpb24gb3V0IG9mIHRoZSBib3gsIHRoaXMgaXMgMTZweC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgYG51bGxgLCB0aGUgZnVuY3Rpb24gd2lsbCByZWZlcmVuY2UgdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUgYXMgdGhlIGJhc2UuXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gQSBsaXN0IG9mIGNvbnZlcnRlZCB2YWx1ZXMuXG5AZnVuY3Rpb24gcmVtLWNhbGMoJHZhbHVlcywgJGJhc2U6IG51bGwpIHtcbiAgJHJlbS12YWx1ZXM6ICgpO1xuICAkY291bnQ6IGxlbmd0aCgkdmFsdWVzKTtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIDEwMCUgZm9udCBzaXplID0gMTZweCBpbiBtb3N0IGFsbCBicm93c2Vyc1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gVXNpbmcgcmVtIGFzIGJhc2UgYWxsb3dzIGNvcnJlY3Qgc2NhbGluZ1xuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgJGNvdW50ID09IDEge1xuICAgIEByZXR1cm4gLXpmLXRvLXJlbSgkdmFsdWVzLCAkYmFzZSk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRjb3VudCB7XG4gICAgJHJlbS12YWx1ZXM6IGFwcGVuZCgkcmVtLXZhbHVlcywgLXpmLXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVtLXZhbHVlcztcbn1cblxuLy8gQ29udmVydHMgYSB1bml0bGVzcywgcGl4ZWwsIG9yIHJlbSB2YWx1ZSB0byBlbSwgZm9yIHVzZSBpbiBicmVha3BvaW50cy5cbkBmdW5jdGlvbiAtemYtYnAtdG8tZW0oJHZhbHVlKSB7XG4gIC8vIFBpeGVsIGFuZCB1bml0bGVzcyB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byByZW1zXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyBvciB1bml0bGVzcygkdmFsdWUpIHtcbiAgICAkdmFsdWU6IHJlbS1jYWxjKCR2YWx1ZSwgJGJhc2U6IDE2cHgpO1xuICB9XG5cbiAgLy8gVGhlbiB0aGUgdmFsdWUgaXMgY29udmVydGVkIHRvIGVtc1xuICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFlbTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwgdmFsdWUgdG8gbWF0Y2hpbmcgcmVtIHZhbHVlLiAqQW55KiB2YWx1ZSBwYXNzZWQsIHJlZ2FyZGxlc3Mgb2YgdW5pdCwgaXMgYXNzdW1lZCB0byBiZSBhIHBpeGVsIHZhbHVlLiBCeSBkZWZhdWx0LCB0aGUgYmFzZSBwaXhlbCB2YWx1ZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcmVtIHZhbHVlIGlzIHRha2VuIGZyb20gdGhlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgdmFyaWFibGUuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gUGl4ZWwgdmFsdWUgdG8gY29udmVydC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gQmFzZSBmb3IgcGl4ZWwgY29udmVyc2lvbi5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgbnVtYmVyIGluIHJlbXMsIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHZhbHVlIGFuZCB0aGUgYmFzZSBwaXhlbCB2YWx1ZS4gcmVtIHZhbHVlcyBhcmUgcGFzc2VkIHRocm91Z2ggYXMgaXMuXG5AZnVuY3Rpb24gLXpmLXRvLXJlbSgkdmFsdWUsICRiYXNlOiBudWxsKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpICE9ICdudW1iZXInIHtcbiAgICBAd2FybiBpbnNwZWN0KCR2YWx1ZSkgKyAnIHdhcyBwYXNzZWQgdG8gcmVtLWNhbGMoKSwgd2hpY2ggaXMgbm90IGEgbnVtYmVyLic7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm0gZW0gaW50byByZW0gaWYgc29tZW9uZSBoYW5kcyBvdmVyICdlbSdzXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHJlbSBpZiB1bml0cyBmb3IgJHZhbHVlIGlzIG5vdCByZW0gb3IgZW1cbiAgQGlmIHVuaXQoJHZhbHVlKSAhPSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKSAqIDFyZW07XG4gIH1cblxuICAvLyBUdXJuIDByZW0gaW50byAwXG4gIEBpZiAkdmFsdWUgPT0gMHJlbSB7XG4gICAgJHZhbHVlOiAwO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsLCBwZXJjZW50YWdlLCByZW0gb3IgZW0gdmFsdWUgdG8gYSB1bml0bGVzcyB2YWx1ZSBiYXNlZCBvbiBhIGdpdmVuIGZvbnQgc2l6ZS4gSWRlYWwgZm9yIHdvcmtpbmcgb3V0IHVuaXRsZXNzIGxpbmUgaGVpZ2h0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBjb252ZXJ0IHRvIGEgdW5pdGxlc3MgbGluZSBoZWlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBUaGUgZm9udCBzaXplIHRvIHVzZSB0byB3b3JrIG91dCB0aGUgbGluZSBoZWlnaHQgLSBkZWZhdWx0cyB0byAkZ2xvYmFsLWZvbnQtc2l6ZVxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIFVuaXRsZXNzIG51bWJlclxuQGZ1bmN0aW9uIHVuaXRsZXNzLWNhbGMoJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIEZpcnN0LCBsZXRzIGNvbnZlcnQgb3VyICRiYXNlIHRvIHBpeGVsc1xuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJyUnIHtcbiAgICAkYmFzZTogKCRiYXNlIC8gMTAwJSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmIHVuaXQoJGJhc2UpID09ICdlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBOb3cgbGV0J3MgY29udmVydCBvdXIgdmFsdWUgdG8gcGl4ZWxzIHRvb1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICclJyB7XG4gICAgJHZhbHVlOiAoJHZhbHVlIC8gMTAwJSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogJGJhc2U7XG4gIH1cblxuICAvLyAncHgnXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ3B4JyB7XG4gICAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIC8vIGFzc3VtZSB0aGF0IGxpbmUtaGVpZ2h0cyBncmVhdGVyIHRoYW4gMTAgYXJlIG1lYW50IHRvIGJlIGFic29sdXRlIGluICdweCdcbiAgQGlmIHVuaXRsZXNzKCR2YWx1ZSkgYW5kICgkdmFsdWUgPiAxMCkge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgbm90IGZhbHNleSwgaW4gQ1NTIHRlcm1zLiBGYWxzZXkgdmFsdWVzIGFyZSBgbnVsbGAsIGBub25lYCwgYDBgIHdpdGggYW55IHVuaXQsIG9yIGFuIGVtcHR5IGxpc3QuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkdmFsIC0gVmFsdWUgdG8gY2hlY2suXG4vLy9cbi8vLyBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIGAkdmFsYCBpcyBub3QgZmFsc2V5LlxuQGZ1bmN0aW9uIGhhcy12YWx1ZSgkdmFsKSB7XG4gIEBpZiAkdmFsID09IG51bGwgb3IgJHZhbCA9PSBub25lIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEBpZiB0eXBlLW9mKCR2YWwpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCR2YWwpID09IDAge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLyBEZXRlcm1pbmUgYSB0b3AvcmlnaHQvYm90dG9tL3JpZ2h0IHZhbHVlIG9uIGEgcGFkZGluZywgbWFyZ2luLCBldGMuIHByb3BlcnR5LCBubyBtYXR0ZXIgaG93IG1hbnkgdmFsdWVzIHdlcmUgcGFzc2VkIGluLiBVc2UgdGhpcyBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBzaWRlIG9mIGEgdmFsdWUsIGJ1dCBkb24ndCBrbm93IGlmIHRoZSB2YWx1ZSBpcyB1c2luZyBhIHNob3J0aGFuZCBmb3JtYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8TnVtYmVyfSAkdmFsIC0gVmFsdWUgdG8gYW5hbHl6ZS4gU2hvdWxkIGJlIGEgc2hvcnRoYW5kIHNpemluZyBwcm9wZXJ0eSwgZS5nLiBcIjFlbSAyZW0gMWVtXCJcbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaWRlIC0gU2lkZSB0byByZXR1cm4uIFNob3VsZCBiZSBgdG9wYCwgYHJpZ2h0YCwgYGJvdHRvbWAsIG9yIGBsZWZ0YC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IEEgc2luZ2xlIHZhbHVlIGJhc2VkIG9uIGAkdmFsYCBhbmQgYCRzaWRlYC5cbkBmdW5jdGlvbiBnZXQtc2lkZSgkdmFsLCAkc2lkZSkge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHZhbCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMyB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgbGVmdDogbnRoKCR2YWwsIDIpLFxuICAgICAgcmlnaHQ6IG50aCgkdmFsLCAyKSxcbiAgICAgIGJvdHRvbTogbnRoKCR2YWwsIDMpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSA0IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgNCksXG4gICAgKSwgJHNpZGUpO1xuICB9XG59XG5cbi8vLyBHaXZlbiBib3JkZXIgJHZhbCwgZmluZCBhIHNwZWNpZmljIGVsZW1lbnQgb2YgdGhlIGJvcmRlciwgd2hpY2ggaXMgJGVsZW0uIFRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICRlbGVtIGFyZSB3aWR0aCwgc3R5bGUsIGFuZCBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbCAtIEJvcmRlciB2YWx1ZSB0byBmaW5kIGEgdmFsdWUgaW4uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZWxlbSAtIEJvcmRlciBjb21wb25lbnQgdG8gZXh0cmFjdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gSWYgdGhlIHZhbHVlIGV4aXN0cywgcmV0dXJucyB0aGUgdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBub3QgaW4gdGhlIGJvcmRlciBkZWZpbml0aW9uLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSAwcHggd2lkdGgsIHNvbGlkIHN0eWxlLCBvciBibGFjayBib3JkZXIuXG5AZnVuY3Rpb24gZ2V0LWJvcmRlci12YWx1ZSgkdmFsLCAkZWxlbSkge1xuICAvLyBGaW5kIHRoZSB3aWR0aCwgc3R5bGUsIG9yIGNvbG9yIGFuZCByZXR1cm4gaXRcbiAgQGVhY2ggJHYgaW4gJHZhbCB7XG4gICAgJHR5cGU6IHR5cGUtb2YoJHYpO1xuICAgIEBpZiAkZWxlbSA9PSB3aWR0aCBhbmQgJHR5cGUgPT0gJ251bWJlcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gICAgQGlmICRlbGVtID09IHN0eWxlIGFuZCAkdHlwZSA9PSAnc3RyaW5nJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gY29sb3IgYW5kICR0eXBlID09ICdjb2xvcicge1xuICAgICAgQHJldHVybiAkdjtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZhdWx0c1xuICAkZGVmYXVsdHM6IChcbiAgICB3aWR0aDogMCxcbiAgICBzdHlsZTogc29saWQsXG4gICAgY29sb3I6ICMwMDAsXG4gICk7XG5cbiAgQHJldHVybiBtYXAtZ2V0KCRkZWZhdWx0cywgJGVsZW0pO1xufVxuXG4vLy8gRmluZHMgYSB2YWx1ZSBpbiBhIG5lc3RlZCBtYXAuXG4vLy8gQGxpbmsgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2RlZXAtZ2V0c2V0LW1hcHMvIERlZXAgR2V0L1NldCBpbiBNYXBzXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBwdWxsIGEgdmFsdWUgZnJvbS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGtleXMuLi4gLSBLZXlzIHRvIHVzZSB3aGVuIGxvb2tpbmcgZm9yIGEgdmFsdWUuXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiBtYXAtZGVlcC1nZXQoJG1hcCwgJGtleXMuLi4pIHtcbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbi8vLyBDYXN0cyBhIG1hcCBpbnRvIGEgbGlzdC5cbi8vLyBAbGluayBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA0LzI4L2Nhc3RpbmctbWFwLWludG8tbGlzdC9cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IERlcGVuZGluZyBvbiB0aGUgZmxhZywgcmV0dXJucyBlaXRoZXIgJGtleXMgb3IgJHZhbHVlcyBvciBib3RoLlxuQGZ1bmN0aW9uIG1hcC10by1saXN0KCRtYXAsICRrZWVwOiAnYm90aCcpIHtcbiAgJGtlZXA6IGlmKGluZGV4KCdrZXlzJyAndmFsdWVzJywgJGtlZXApLCAka2VlcCwgJ2JvdGgnKTtcblxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbWFwJyB7XG4gICAgJGtleXM6ICgpO1xuICAgICR2YWx1ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkbWFwIHtcbiAgICAgICRrZXlzOiBhcHBlbmQoJGtleXMsICRrZXkpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR2YWwpO1xuICAgIH1cblxuICAgIEBpZiAka2VlcCA9PSAna2V5cycge1xuICAgICAgQHJldHVybiAka2V5cztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGtlZXAgPT0gJ3ZhbHVlcycge1xuICAgICAgQHJldHVybiAkdmFsdWVzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHppcCgka2V5cywgJHZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZih0eXBlLW9mKCRtYXApICE9ICdsaXN0JywgKCR2YWx1ZSwpLCAkbWFwKTtcblxufVxuXG4vLy8gU2FmZWx5IHJldHVybiBhIHZhbHVlIGZyb20gYSBtYXAuXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byByZXRyaWV2ZSBhIHZhbHVlIGZyb20uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBOYW1lIG9mIHRoZSBtYXAga2V5LlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEZvdW5kIHZhbHVlLlxuQGZ1bmN0aW9uIG1hcC1zYWZlLWdldCgkbWFwLCAka2V5KSB7XG4gIEBpZiAodHlwZS1vZigkbWFwKSA9PSAnbWFwJyBvciAodHlwZS1vZigkbWFwKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkbWFwKSA9PSAwKSkge1xuICAgIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGVycm9yICdLZXk6IGAjeyRrZXl9YCBpcyBub3QgYXZhaWxhYmxlIGluIGAjeyRtYXB9YCc7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2AjeyRtYXB9YCBpcyBub3QgYSB2YWxpZCBtYXAnO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiAkZGlyXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgLSBVc2VkIGRpcmVjdGlvbiBiZXR3ZWVuIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiBhbmQgXCJsZWZ0XCIuXG4vLy8gQHJldHVybiB7S2V5d29yZH0gT3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbkBmdW5jdGlvbiBkaXJlY3Rpb24tb3Bwb3NpdGUoXG4gICRkaXJcbikge1xuICAkZGlyczogKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7XG4gICRwbGFjZTogaW5kZXgoJGRpcnMsICRkaXIpO1xuXG4gIEBpZiAkcGxhY2UgPT0gbnVsbCB7XG4gICAgQGVycm9yICdkaXJlY3Rpb24tb3Bwb3NpdGU6IEludmFsaWQgJGRpciBwYXJhbWV0ZXIsIGV4cGVjdGVkIGEgdmFsdWUgZnJvbSBcIiN7JGRpcnN9XCIsIGZvdW5kIFwiI3skZGlyfVwiLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBvcHBvc2l0ZSBwbGFjZSBpbiBhIGNpcmNsZSwgd2l0aCBhIHN0YXJ0aW5nIGluZGV4IG9mIDFcbiAgJGxlbmd0aDogbGVuZ3RoKCRkaXJzKTtcbiAgJGRlbWk6ICRsZW5ndGggLyAyO1xuICAkb3Bwb3NpdGUtcGxhY2U6ICgoJHBsYWNlICsgJGRlbWkgLSAxKSAlICRsZW5ndGgpICsgMTtcblxuICBAcmV0dXJuIG50aCgkZGlycywgJG9wcG9zaXRlLXBsYWNlKTtcbn1cblxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4kY29udHJhc3Qtd2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIGNoZWNrIHRoZSBsdW1pbmFuY2Ugb2YuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuQGZ1bmN0aW9uIGNvbG9yLWx1bWluYW5jZSgkY29sb3IpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG4gICRyZ2JhOiByZWQoJGNvbG9yKSwgZ3JlZW4oJGNvbG9yKSwgYmx1ZSgkY29sb3IpO1xuICAkcmdiYTI6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgJHJnYjogbnRoKCRyZ2JhLCAkaSk7XG4gICAgJHJnYjogJHJnYiAvIDI1NTtcblxuICAgICRyZ2I6IGlmKCRyZ2IgPCAwLjAzOTI4LCAkcmdiIC8gMTIuOTIsIHBvdygoJHJnYiArIDAuMDU1KSAvIDEuMDU1LCAyLjQpKTtcblxuICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XG4gIH1cblxuICBAcmV0dXJuIDAuMjEyNiAqIG50aCgkcmdiYTIsIDEpICsgMC43MTUyICogbnRoKCRyZ2JhMiwgMikgKyAwLjA3MjIgKiBudGgoJHJnYmEyLCAzKTtcbn1cblxuLy8vIENoZWNrcyB0aGUgY29udHJhc3QgcmF0aW8gb2YgdHdvIGNvbG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxuQGZ1bmN0aW9uIGNvbG9yLWNvbnRyYXN0KCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI2NvbnRyYXN0LXJhdGlvZGVmXG4gICRsdW1pbmFuY2UxOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMSkgKyAwLjA1O1xuICAkbHVtaW5hbmNlMjogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjIpICsgMC4wNTtcbiAgJHJhdGlvOiAkbHVtaW5hbmNlMSAvICRsdW1pbmFuY2UyO1xuXG4gIEBpZiAkbHVtaW5hbmNlMiA+ICRsdW1pbmFuY2UxIHtcbiAgICAkcmF0aW86IDEgLyAkcmF0aW87XG4gIH1cblxuICAkcmF0aW86IHJvdW5kKCRyYXRpbyAqIDEwKSAvIDEwO1xuXG4gIEByZXR1cm4gJHJhdGlvO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRiYXNlYCwgYW5kIHJldHVybnMgdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFzZSAtIENvbG9yIHRvIGNoZWNrIGx1bWluYW5jZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRjb2xvcnMgWygkd2hpdGUsICRibGFjayldIC0gQ29sb3JzIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b2xlcmFuY2UgWyRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2VdIC0gQ29udHJhc3QgdG9sZXJhbmNlLlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbkBmdW5jdGlvbiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYXNlLCAkY29sb3JzOiAoJHdoaXRlLCAkYmxhY2spLCAkdG9sZXJhbmNlOiAkZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlKSB7XG4gICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAxKSk7XG4gICRiZXN0OiBudGgoJGNvbG9ycywgMSk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGNvbG9ycykge1xuICAgICRjdXJyZW50LWNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgQGlmICgkY3VycmVudC1jb250cmFzdCAtICRjb250cmFzdCA+ICR0b2xlcmFuY2UpIHtcbiAgICAgICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgICAgJGJlc3Q6IG50aCgkY29sb3JzLCAkaSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkY29udHJhc3Qtd2FybmluZ3MgYW5kICRjb250cmFzdCA8IDMpIHtcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYCBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwcmltYXJ5LWNvbG9yOiAjMTc3OWJhICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiAjNzY3Njc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHdhcm5pbmctY29sb3I6ICNmZmFlMDAgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRhbGVydC1jb2xvcjogI2NjNGIzNyAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEdlbmVyYXRlcyBhIHNlbGVjdG9yIHdpdGggZXZlcnkgdGV4dCBpbnB1dCB0eXBlLiBZb3UgY2FuIGFsc28gZmlsdGVyIHRoZSBsaXN0IHRvIG9ubHkgb3V0cHV0IGEgc3Vic2V0IG9mIHRob3NlIHNlbGVjdG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxLZXl3b3JkfSAkdHlwZXMgWygpXSAtIEEgbGlzdCBvZiB0ZXh0IGlucHV0IHR5cGVzIHRvIHVzZS4gTGVhdmUgYmxhbmsgdG8gdXNlIGFsbCBvZiB0aGVtLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJG1vZGlmaWVyIFsnJ10gLSBBIG1vZGlmaWVyIHRvIGJlIGFwcGxpZWQgdG8gZWFjaCB0ZXh0IGlucHV0IHR5cGUgKGUuZy4gYSBjbGFzcyBvciBhIHBzZXVkby1jbGFzcykuIExlYXZlIGJsYW5rIHRvIGlnbm9yZS5cbkBmdW5jdGlvbiB0ZXh0LWlucHV0cygkdHlwZXM6ICgpLCAkbW9kaWZpZXI6ICcnKSB7XG4gICRyZXR1cm46ICgpO1xuXG4gICRhbGwtdHlwZXM6XG4gICAgdGV4dFxuICAgIHBhc3N3b3JkXG4gICAgZGF0ZVxuICAgIGRhdGV0aW1lXG4gICAgZGF0ZXRpbWUtbG9jYWxcbiAgICBtb250aFxuICAgIHdlZWtcbiAgICBlbWFpbFxuICAgIG51bWJlclxuICAgIHNlYXJjaFxuICAgIHRlbFxuICAgIHRpbWVcbiAgICB1cmxcbiAgICBjb2xvcjtcblxuICBAaWYgbm90IGhhcy12YWx1ZSgkdHlwZXMpIHtcbiAgICAkdHlwZXM6ICRhbGwtdHlwZXM7XG4gIH1cblxuICBAZWFjaCAkdHlwZSBpbiAkdHlwZXMge1xuICAgICRyZXR1cm46IGFwcGVuZCgkcmV0dXJuLCB1bnF1b3RlKCdbdHlwZT1cXCcjeyR0eXBlfVxcJ10jeyRtb2RpZmllcn0nKSwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiQGZ1bmN0aW9uIC16Zi1mbGV4LWp1c3RpZnkoJHRleHQtZGlyZWN0aW9uKXtcbiAgJC16Zi1mbGV4LWp1c3RpZnk6IChcbiAgICAnbGVmdCc6IGlmKCR0ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGZsZXgtZW5kLCBmbGV4LXN0YXJ0KSxcbiAgICAncmlnaHQnOiBpZigkdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBmbGV4LXN0YXJ0LCBmbGV4LWVuZCksXG4gICAgJ2NlbnRlcic6IGNlbnRlcixcbiAgICAnanVzdGlmeSc6IHNwYWNlLWJldHdlZW4sXG4gICAgJ3NwYWNlZCc6IHNwYWNlLWFyb3VuZCxcbiAgKTtcblxuICBAcmV0dXJuICQtemYtZmxleC1qdXN0aWZ5O1xufVxuXG5cbiQtemYtZmxleC1hbGlnbjogKFxuICAndG9wJzogZmxleC1zdGFydCxcbiAgJ2JvdHRvbSc6IGZsZXgtZW5kLFxuICAnbWlkZGxlJzogY2VudGVyLFxuICAnc3RyZXRjaCc6IHN0cmV0Y2gsXG4pO1xuXG4kLXpmLWZsZXgtZGlyZWN0aW9uOiAoXG4gICdyb3cnOiByb3csXG4gICdyb3ctcmV2ZXJzZSc6IHJvdy1yZXZlcnNlLFxuICAnY29sdW1uJzogY29sdW1uLFxuICAnY29sdW1uLXJldmVyc2UnOiBjb2x1bW4tcmV2ZXJzZSxcbik7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggYnkgYWRkaW5nIGBkaXNwbGF5OiBmbGV4YCB0byB0aGUgZWxlbWVudC5cbkBtaXhpbiBmbGV4IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLy8vIEhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGFsaWducyB0aGUgaXRlbXMgd2l0aGluIGEgZmxleCBjb250YWluZXIuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR4IFtudWxsXSAtIEhvcml6b250YWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGBsZWZ0YCwgYHJpZ2h0YCwgYGNlbnRlcmAsIGBqdXN0aWZ5YCwgb3IgYHNwYWNlZGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCBob3Jpem9udGFsIGFsaWdubWVudC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICR5IFtudWxsXSAtIFZlcnRpY2FsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgdG9wYCwgYGJvdHRvbWAsIGBtaWRkbGVgLCBvciBgc3RyZXRjaGAuIE9yLCBzZXQgaXQgdG8gYG51bGxgICh0aGUgZGVmYXVsdCkgdG8gbm90IHNldCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gZmxleC1hbGlnbigkeDogbnVsbCwgJHk6IG51bGwpIHtcbiAgQGlmICR4IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWp1c3RpZnksICR4KSB7XG4gICAgICAkeDogbWFwLWdldCgkLXpmLWZsZXgtanVzdGlmeSwgJHgpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnZmxleC1ncmlkLXJvdy1hbGlnbigpOiAjeyR4fSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgaG9yaXpvbnRhbCBhbGlnbm1lbnQuIFVzZSBsZWZ0LCByaWdodCwgY2VudGVyLCBqdXN0aWZ5LCBvciBzcGFjZWQuJztcbiAgICB9XG4gIH1cblxuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIHZlcnRpY2FsIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBqdXN0aWZ5LWNvbnRlbnQ6ICR4O1xuICBhbGlnbi1pdGVtczogJHk7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGFsaWduIGEgc2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBmbGV4IHJvdy4gQXBwbHkgdGhpcyBtaXhpbiB0byBhIGZsZXggY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24tc2VsZigkeTogbnVsbCkge1xuICBAaWYgJHkge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkLXpmLWZsZXgtYWxpZ24sICR5KSB7XG4gICAgICAkeTogbWFwLWdldCgkLXpmLWZsZXgtYWxpZ24sICR5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1jb2x1bW4tYWxpZ24oKTogI3skeX0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGFsaWdubWVudC4gVXNlIHRvcCwgYm90dG9tLCBtaWRkbGUsIG9yIHN0cmV0Y2guJztcbiAgICB9XG4gIH1cblxuICBhbGlnbi1zZWxmOiAkeTtcbn1cblxuLy8vIENoYW5nZXMgdGhlIHNvdXJjZSBvcmRlciBvZiBhIGZsZXggY2hpbGQuIENoaWxkcmVuIHdpdGggbG93ZXIgbnVtYmVycyBhcHBlYXIgZmlyc3QgaW4gdGhlIGxheW91dC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9yZGVyIFswXSAtIE9yZGVyIG51bWJlciB0byBhcHBseS5cbkBtaXhpbiBmbGV4LW9yZGVyKCRvcmRlcjogMCkge1xuICBvcmRlcjogJG9yZGVyO1xufVxuXG4vLy8gQ2hhbmdlIGZsZXgtZGlyZWN0aW9uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtyb3ddIC0gRmxleCBkaXJlY3Rpb24gdG8gdXNlLiBDYW4gYmVcbi8vLyAgIC0gcm93IChkZWZhdWx0KTogc2FtZSBhcyB0ZXh0IGRpcmVjdGlvblxuLy8vICAgLSByb3ctcmV2ZXJzZTogb3Bwb3NpdGUgdG8gdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gY29sdW1uOiBzYW1lIGFzIHJvdyBidXQgdG9wIHRvIGJvdHRvbVxuLy8vICAgLSBjb2x1bW4tcmV2ZXJzZTogc2FtZSBhcyByb3ctcmV2ZXJzZSB0b3AgdG8gYm90dG9tXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogcm93KSB7XG4gIGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgfVxuXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgJG5hbWVkOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcbiAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAuMDAxMjU7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuXG4gICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICB9XG4gICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgQGlmICRzdHIgPT0gJycge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgQGVsc2Uge1xuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcbiAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbn1cblxuLy8vIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGFuIGlubmVyIGJveC1zaGFkb3cgZm9yIG9ubHkgb25lIHNpZGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRoZSBzaGFkb3cgaXMgc3VwcG9zZWQgdG8gYXBwZWFyLiBDYW4gYmUgYHRvcGAsIGBsZWZ0YCwgYHJpZ2h0YCBvciBgYm90dG9tYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgLSBXaWR0aCBmb3IgdGhlIHRhcmdldCBzaWRlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIG9mIHRoZSBzaGFkb3cuXG5AbWl4aW4gaW5uZXItc2lkZS1zaGFkb3coXG4gICRzaWRlOiBib3R0b20sXG4gICRzaXplOiAyMHB4LFxuICAkY29sb3I6IHJnYmEoJGJsYWNrLCAwLjI1KVxuKSB7XG5cbiAgJGhlbHBlcjogcm91bmQoJHNpemUgKiAwLjY1KTtcblxuICBAaWYgKCRzaWRlID09IHRvcCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBsZWZ0KSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IHJpZ2h0KSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgKC0xKSokaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gYm90dG9tKSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAoLTEpKiRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIENTUyB0cmlhbmdsZSwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRyb3Bkb3duIGFycm93cywgZHJvcGRvd24gcGlwcywgYW5kIG1vcmUuIFVzZSB0aGlzIG1peGluIGluc2lkZSBhIGAmOjpiZWZvcmVgIG9yIGAmOjphZnRlcmAgc2VsZWN0b3IsIHRvIGF0dGFjaCB0aGUgdHJpYW5nbGUgdG8gYW4gZXhpc3RpbmcgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdHJpYW5nbGUtc2l6ZSAtIFdpZHRoIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkdHJpYW5nbGUtY29sb3IgLSBDb2xvciBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHJpYW5nbGUtZGlyZWN0aW9uIC0gRGlyZWN0aW9uIHRoZSB0cmlhbmdsZSBwb2ludHMuIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cbkBtaXhpbiBjc3MtdHJpYW5nbGUoXG4gICR0cmlhbmdsZS1zaXplLFxuICAkdHJpYW5nbGUtY29sb3IsXG4gICR0cmlhbmdsZS1kaXJlY3Rpb25cbikge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcblxuICBib3JkZXI6IGluc2V0ICR0cmlhbmdsZS1zaXplO1xuXG4gIGNvbnRlbnQ6ICcnO1xuXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gdXApIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgbWVudSBpY29uIHdpdGggYSBzZXQgd2lkdGgsIGhlaWdodCwgbnVtYmVyIG9mIGJhcnMsIGFuZCBjb2xvcnMuIFRoZSBtaXhpbiB1c2VzIHRoZSBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGJhcnMgdG8gZGV0ZXJtaW5lIHNwYWNpbmcuIDxkaXYgY2xhc3M9XCJkb2NzLWV4YW1wbGUtYnVyZ2VyXCI+PC9kaXY+XG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1ob3ZlciBbJGRhcmstZ3JheV0gLSBDb2xvciB0byB1c2Ugd2hlbiB0aGUgaWNvbiBpcyBob3ZlcmVkIG92ZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMjBweF0gLSBXaWR0aCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMTZweF0gLSBIZWlnaHQgb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWzJweF0gLSBIZWlnaHQgb2YgaW5kaXZpZHVhbCBiYXJzIGluIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFycyBbM10gLSBOdW1iZXIgb2YgYmFycyBpbiB0aGUgaWNvbi5cbkBtaXhpbiBoYW1idXJnZXIoXG4gICRjb2xvcjogJGJsYWNrLFxuICAkY29sb3ItaG92ZXI6ICRkYXJrLWdyYXksXG4gICR3aWR0aDogMjBweCxcbiAgJGhlaWdodDogMTZweCxcbiAgJHdlaWdodDogMnB4LFxuICAkYmFyczogM1xuKSB7XG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxuICAkc2hhZG93OiAoKTtcbiAgJGhvdmVyLXNoYWRvdzogKCk7XG5cbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXG4gICRzcGFjaW5nOiAoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpO1xuXG4gIEBpZiB1bml0KCRzcGFjaW5nKSA9PSAncHgnIHtcbiAgICAkc3BhY2luZzogZmxvb3IoJHNwYWNpbmcpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAkc2hhZG93OiBhcHBlbmQoJHNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLCBjb21tYSk7XG4gIH1cblxuICAvLyBJY29uIGNvbnRhaW5lclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gSWNvbiBiYXJzXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVcbiAgQGlmICRjb2xvci1ob3ZlciB7XG4gICAgLy8gR2VuZXJhdGUgQ1NTXG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICAgJGhvdmVyLXNoYWRvdzogYXBwZW5kKCRob3Zlci1zaGFkb3csIDAgJG9mZnNldCAwICRjb2xvci1ob3ZlciwgY29tbWEpO1xuICAgIH1cblxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ob3ZlcjtcbiAgICAgIGJveC1zaGFkb3c6ICRob3Zlci1zaGFkb3c7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGEgZG93bndhcmQtZmFjaW5nIHRyaWFuZ2xlIGFzIGEgYmFja2dyb3VuZCBpbWFnZSB0byBhbiBlbGVtZW50LiBUaGUgaW1hZ2UgaXMgZm9ybWF0dGVkIGFzIGFuIFNWRywgbWFraW5nIGl0IGVhc3kgdG8gY2hhbmdlIHRoZSBjb2xvci4gQmVjYXVzZSBJbnRlcm5ldCBFeHBsb3JlciBkb2Vzbid0IHN1cHBvcnQgZW5jb2RlZCBTVkdzIGFzIGJhY2tncm91bmQgaW1hZ2VzLCBhIFBORyBmYWxsYmFjayBpcyBhbHNvIGluY2x1ZGVkLlxuLy8vIFRoZXJlIGFyZSB0d28gUE5HIGZhbGxiYWNrczogYSBibGFjayB0cmlhbmdsZSBhbmQgYSB3aGl0ZSB0cmlhbmdsZS4gVGhlIG9uZSB1c2VkIGRlcGVuZHMgb24gdGhlIGxpZ2h0bmVzcyBvZiB0aGUgaW5wdXQgY29sb3IuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSB0cmlhbmdsZS5cbkBtaXhpbiBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRjb2xvcjogJGJsYWNrKSB7XG4gICRyZ2I6ICdyZ2IlMjgje3JvdW5kKHJlZCgkY29sb3IpKX0sICN7cm91bmQoZ3JlZW4oJGNvbG9yKSl9LCAje3JvdW5kKGJsdWUoJGNvbG9yKSl9JTI5JztcblxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyB3aWR0aD0nMzInIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAzMiAyNCc+PHBvbHlnb24gcG9pbnRzPScwLDAgMzIsMCAxNiwyNCcgc3R5bGU9J2ZpbGw6ICN7JHJnYn0nPjwvcG9seWdvbj48L3N2Zz5cIik7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDowXFwwKSB7XG4gICAgQGlmIGxpZ2h0bmVzcygkY29sb3IpIDwgNjAlIHtcbiAgICAgIC8vIFdoaXRlIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSXBKUkVGVWVOckVrY2tOZ0RBTUJCZlJrRXQwT2JSQkJkc0dYVURnbVFmSzRYaEgybThjelFBQXkyN1IzdHN3NFFmZTJ4OHVPTzZvWUxiNkdsT29yM0dGK3N3VVJBT21VSitSd3RFSnM5V3ZUR0VZeEJYcUkxTVFBWmhDZlVRS1J6RE1WaitUd3JBSVY2anZTVUVrWUFyMUxTa2N5VEJiL1YrS1lmWDd4QWV1c3Ezc0xEdEdIM2tFR0FDUFdJZmxOWmZoUlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQmxhY2sgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNQkpSRUZVZU5yRWxsc09oQ0FNUlZzekM5SWx6VTdLQ21WSFRKc29NV1lNVXRweXY5QmdidVhRQjVaU2RnQllZWTR5Y2dCaXZrOEtZRnNRTWZNaVRUQlA0bzNuVXpDS3pPYWJMSmJMeTIvZzMxZXZHa0FnaW5SNC9aZWdLSDVxWDNiSkNzY0EzdDB4M2tnTzV0UUZ5aGhGZjUweFJxRkxieU1VTkpRemd5akdTL3dnQ3B2S3FrUkJwdVdyRTRWOWQrMUU0ZFBVWHFJZzEwN1NRT0UvMkRSUXhNd1REeWdJSW5WREVUOVQzbENvai82ai9WQ21HalpPbDJsS3BaOEFBd0RRUDd6SWltREdGUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyB0aGUgbWljcm8gY2xlYXJmaXggaGFjayBwb3B1bGFyaXplZCBieSBOaWNvbGFzIEdhbGxhZ2hlci4gSW5jbHVkZSB0aGlzIG1peGluIG9uIGEgY29udGFpbmVyIGlmIGl0cyBjaGlsZHJlbiBhcmUgYWxsIGZsb2F0ZWQsIHRvIGdpdmUgdGhlIGNvbnRhaW5lciBhIHByb3BlciBoZWlnaHQuXG4vLy8gVGhlIGNsZWFyZml4IGlzIGF1Z21lbnRlZCB3aXRoIHNwZWNpZmljIHN0eWxlcyB0byBwcmV2ZW50IGJvcmRlcnMgaW4gZmxleGJveCBlbnZpcm9ubWVudHNcbi8vLyBAbGluayBodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8gTWljcm8gQ2xlYXJmaXggSGFja1xuLy8vIEBsaW5rIGh0dHA6Ly9kYW5pc2FkZXNpZ25lci5jb20vYmxvZy9mbGV4Ym94LWNsZWFyLWZpeC1wc2V1ZG8tZWxlbWVudHMvIEZsZXhib3ggZml4XG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjb250ZW50OiAnICc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuLy8vIEFkZHMgQ1NTIGZvciBhIFwicXVhbnRpdHkgcXVlcnlcIiBzZWxlY3RvciB0aGF0IGF1dG9tYXRpY2FsbHkgc2l6ZXMgZWxlbWVudHMgYmFzZWQgb24gaG93IG1hbnkgdGhlcmUgYXJlIGluc2lkZSBhIGNvbnRhaW5lci5cbi8vLyBAbGluayBodHRwOi8vYWxpc3RhcGFydC5jb20vYXJ0aWNsZS9xdWFudGl0eS1xdWVyaWVzLWZvci1jc3MgUXVhbnRpdHkgUXVlcmllcyBmb3IgQ1NTXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCAtIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGRldGVjdC4gVGhlIGhpZ2hlciB0aGlzIG51bWJlciBpcywgdGhlIG1vcmUgQ1NTIHRoYXQncyByZXF1aXJlZCB0byBjb3ZlciBlYWNoIG51bWJlciBvZiBpdGVtcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIFtsaV0gLSBUYWcgdG8gdXNlIGZvciBzaWJsaW5nIHNlbGVjdG9ycy5cbkBtaXhpbiBhdXRvLXdpZHRoKCRtYXgsICRlbGVtOiBsaSkge1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRtYXgge1xuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkLFxuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkIH4gI3skZWxlbX0ge1xuICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFJlbW92ZXMgdGhlIGZvY3VzIHJpbmcgYXJvdW5kIGFuIGVsZW1lbnQgd2hlbiBhIG1vdXNlIGlucHV0IGlzIGRldGVjdGVkLlxuQG1peGluIGRpc2FibGUtbW91c2Utb3V0bGluZSB7XG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSAmIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi8vLyBNYWtlcyBhbiBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGFjY2Vzc2libGUgdG8ga2V5Ym9hcmRzIGFuZCBhc3Npc3RpdmUgZGV2aWNlcy5cbi8vLyBAbGluayBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5IEhpZGluZyBDb250ZW50IGZvciBBY2Nlc3NpYmlsaXR5XG4vLy8gQGxpbmsgaHR0cDovL2h1Z29naXJhdWRlbC5jb20vMjAxNi8xMC8xMy9jc3MtaGlkZS1hbmQtc2Vlay9cbkBtaXhpbiBlbGVtZW50LWludmlzaWJsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgcGFkZGluZzogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwLDAsMCwwKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLy8gUmV2ZXJzZXMgdGhlIENTUyBvdXRwdXQgY3JlYXRlZCBieSB0aGUgYGVsZW1lbnQtaW52aXNpYmxlKClgIG1peGluLlxuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlLW9mZiB7XG4gIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGNsaXA6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi8vLyBWZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIHZlcnRpY2FsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLy8vIEhvcml6b250YWxseSBjZW50ZXJzIHRoZSBlbGVtZW50IGluc2lkZSBvZiBpdHMgZmlyc3Qgbm9uLXN0YXRpYyBwYXJlbnQsXG4vLy8gQGxpbmsgaHR0cDovL3d3dy5zaXRlcG9pbnQuY29tL2NlbnRlcmluZy13aXRoLXNhc3MvIENlbnRlcmluZyBXaXRoIFNhc3NcbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbi8vLyBBYnNvbHV0ZWx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGFic29sdXRlLWNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8vLyBJdGVyYXRlcyB0aHJvdWdoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gYCRicmVha3BvaW50LWNsYXNzZXNgIGFuZCBwcmludHMgdGhlIENTUyBpbnNpZGUgdGhlIG1peGluIGF0IGVhY2ggYnJlYWtwb2ludCdzIG1lZGlhIHF1ZXJ5LiBVc2UgdGhpcyB3aXRoIHRoZSBncmlkLCBvciBhbnkgb3RoZXIgY29tcG9uZW50IHRoYXQgaGFzIHJlc3BvbnNpdmUgY2xhc3Nlcy5cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHNtYWxsIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIHNraXAgdGhlIGBzbWFsbGAgYnJlYWtwb2ludC4gVXNlIHRoaXMgd2l0aCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgcHJlZml4IGNsYXNzZXMgd2l0aCBgc21hbGwtYCwgb25seSBgbWVkaXVtLWAgYW5kIHVwLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIFt0cnVlXSAtIElmIGBmYWxzZWAsIHRoZSBtaXhpbiB3aWxsIGl0ZXJhdGUgb3ZlciBicmVha3BvaW50cyB3aXRob3V0IGRvaW5nIHRoZSBtZWRpYSBxdWVyeSBpdHNlbGYuIFVzZWZ1bCBmb3IgbW9yZSBjb21wbGV4IG1lZGlhIHF1ZXJ5IGdlbmVyYXRpb24gYXMgaW4gdGhlIG1hcmdpbiBncmlkLlxuQG1peGluIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiB0cnVlLCAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHM6IHRydWUpIHtcbiAgJGxpc3Q6ICRicmVha3BvaW50LWNsYXNzZXM7XG5cbiAgQGlmIG5vdCAkc21hbGwge1xuICAgICRsaXN0OiBzbC1yZW1vdmUoJGxpc3QsICQtemYtemVyby1icmVha3BvaW50KTtcbiAgfVxuXG4gIEBlYWNoICRuYW1lIGluICRsaXN0IHtcbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6ICRuYW1lICFnbG9iYWw7XG5cbiAgICBAaWYgJGF1dG8taW5zZXJ0LWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgICQtemYtc2l6ZTogJG9sZC16Zi1zaXplICFnbG9iYWw7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHRoZSBgQGNvbnRlbnRgIHBhc3NlZCB0byB0aGUgbWl4aW4gd2l0aCBhIHZhbHVlIGAkLXpmLWJwLXZhbHVlYCByZWxhdGVkIHRvIGEgYnJlYWtwb2ludCwgZGVwZW5kaW5nIG9uIHRoZSBgJG5hbWVgIHBhcmFtZXRlcjpcbi8vLyAtIEZvciBhIHNpbmdsZSB2YWx1ZSwgYCQtemYtYnAtdmFsdWVgIGlzIHRoaXMgdmFsdWUuXG4vLy8gLSBGb3IgYSBicmVha3BvaW50IG5hbWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYC5cbi8vLyAtIEZvciBcImF1dG9cIiwgYCQtemYtYnAtdmFsdWVgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUgaW4gYCRtYXBgIGFuZCBpcyBwYXNzZWQgdG8gYEBjb250ZW50YCwgd2hpY2ggaXMgbWFkZSByZXNwb25zaXZlIGZvciBlYWNoIGJyZWFrcG9pbnQgb2YgYCRtYXBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfEFycmF5fEtleXdvcmR9ICRuYW1lIFthdXRvXSAtIFNpbmdsZSB2YWx1ZSwgYnJlYWtwb2ludCBuYW1lLCBvciBsaXN0IG9mIGJyZWFrcG9pbnQgbmFtZXMgdG8gdXNlLiBcImF1dG9cIiBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIE1hcCBvZiBicmVha3BvaW50cyBhbmQgdmFsdWVzIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuXG5AbWl4aW4gLXpmLWJyZWFrcG9pbnQtdmFsdWUoXG4gICRuYW1lOiBhdXRvLFxuICAkbWFwOiBudWxsXG4pIHtcbiAgQGlmICRuYW1lID09IGF1dG8gYW5kIHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcge1xuICAgIC8vIFwiYXV0b1wiXG4gICAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkaykge1xuICAgICAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkdiwgJG1hcCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBicmVha3BvaW50IG5hbWVcbiAgICBAaWYgdHlwZS1vZigkbmFtZSkgPT0gJ3N0cmluZycge1xuICAgICAgJG5hbWU6IC16Zi1nZXQtYnAtdmFsKCRtYXAsICRuYW1lKTtcbiAgICB9XG5cbiAgICAvLyBicmVha3BvaW50IHZhbHVlXG4gICAgJC16Zi1icC12YWx1ZTogJG5hbWUgIWdsb2JhbDtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbiQtemYtZm9udC1zdGFjazogKFxuICAnZ2VvcmdpYSc6IChHZW9yZ2lhLCBcIlVSVyBCb29rbWFuIExcIiwgc2VyaWYpLFxuICAnaGVsdmV0aWNhJzogKEhlbHZldGljYSwgQXJpYWwsIFwiTmltYnVzIFNhbnMgTFwiLCBzYW5zLXNlcmlmKSxcbiAgJ2x1Y2lkYS1ncmFuZGUnOiAoXCJMdWNpZGEgR3JhbmRlXCIsIFwiTHVjaWRhIFNhbnMgVW5pY29kZVwiLCBcIkJpdHN0cmVhbSBWZXJhIFNhbnNcIiwgc2Fucy1zZXJpZiksXG4gICdtb25vc3BhY2UnOiAoXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBcIk5pbWJ1cyBTYW5zIExcIiwgbW9ub3NwYWNlKSxcbiAgJ3N5c3RlbSc6ICgtYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIk94eWdlblwiLCBcIlVidW50dVwiLCBcIkNhbnRhcmVsbFwiLCBcIkZpcmEgU2Fuc1wiLCBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYpLFxuICAndmVyZGFuYSc6IChWZXJkYW5hLCBHZW5ldmEsIFwiRGVqYVZ1IFNhbnNcIiwgc2Fucy1zZXJpZiksXG4pO1xuXG4vLy8gUmV0dXJuIGEgZm9udCBzdGFjayBsaXN0IGZyb20gYSBtYXAuIEVxdWl2YWxlbnQgdG8gYG1hcC1zYWZlLWdldCgkbmFtZSwgJC16Zi1mb250LXN0YWNrKWAuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0YWNrIC0gTmFtZSBvZiB0aGUgZm9udCBzdGFjay5cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCBbJC16Zi1mb250LXN0YWNrXSAtIE1hcCBvZiBmb250IHN0YWNrcyB0byByZXRyaWV2ZSBhIGxpc3QgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBGb3VuZCBmb250IHN0YWNrLlxuQGZ1bmN0aW9uIGZvbnQtc3RhY2soJHN0YWNrLCAkbWFwOiAkLXpmLWZvbnQtc3RhY2spIHtcbiAgQHJldHVybiBtYXAtc2FmZS1nZXQoJG1hcCwgJHN0YWNrKTtcbn1cbiIsIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuICogVmVyc2lvbiA2LjUuMlxuICogZm91bmRhdGlvbi56dXJiLmNvbVxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gRGVwZW5kZW5jaWVzXG5AaW1wb3J0ICd2ZW5kb3Ivbm9ybWFsaXplJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvdHJ1ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9jb250YWluJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3B1cmdlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlbW92ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZXBsYWNlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3RvLWxpc3QnO1xuXG4vLyAtLS0gU2V0dGluZ3MgLS0tXG4vLyBpbXBvcnQgeW91ciBvd24gYHNldHRpbmdzYCBoZXJlIG9yXG4vLyBpbXBvcnQgYW5kIG1vZGlmeSB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0aHJvdWdoXG4vLyBAaW1wb3J0ICdzZXR0aW5ncy9zZXR0aW5ncyc7XG5cbi8vIC0tLSBDb21wb25lbnRzIC0tLVxuLy8gVXRpbGl0aWVzXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuLy8gR2xvYmFsIHN0eWxlc1xuQGltcG9ydCAnZ2xvYmFsJztcbkBpbXBvcnQgJ2Zvcm1zL2Zvcm1zJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5cbi8vIEdyaWRzXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xuQGltcG9ydCAneHktZ3JpZC94eS1ncmlkJztcbi8vIEdlbmVyaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jbG9zZS1idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9sYWJlbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbi8vIEJhc2ljIGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9vbHRpcCc7XG5cbi8vIENvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVkaWEtb2JqZWN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXNwb25zaXZlLWVtYmVkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XG4vLyBNZW51LWJhc2VkIGNvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUtaWNvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbi1tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5cbi8vIExheW91dCBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL29mZi1jYW52YXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXZlYWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9zdGlja3knO1xuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90b3AtYmFyJztcblxuLy8gSGVscGVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9mbG9hdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ3Byb3RvdHlwZS9wcm90b3R5cGUnO1xuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcoXG4gICRmbGV4OiB0cnVlLFxuICAkcHJvdG90eXBlOiBmYWxzZVxuKSB7XG4gIEBpZiAkZmxleCB7XG4gICAgJGdsb2JhbC1mbGV4Ym94OiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICAvLyBHbG9iYWwgc3R5bGVzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5O1xuXG4gIC8vIEdyaWRzXG4gIEBpZiBub3QgJGZsZXgge1xuICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZ3JpZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICR4eS1ncmlkIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24teHktZ3JpZC1jbGFzc2VzO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtZ3JpZDtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNsb3NlLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm9ncmVzcy1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc2xpZGVyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN3aXRjaDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJsZTtcbiAgLy8gQmFzaWMgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJhZGdlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJyZWFkY3J1bWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhbGxvdXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FyZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wYWdpbmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvb2x0aXA7XG5cbiAgLy8gQ29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZWRpYS1vYmplY3Q7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb3JiaXQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10YWJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRodW1ibmFpbDtcbiAgLy8gTWVudS1iYXNlZCBjb250YWluZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51LWljb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd24tbWVudTtcblxuICAvLyBMYXlvdXQgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9mZi1jYW52YXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcmV2ZWFsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXN0aWNreTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aXRsZS1iYXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9wLWJhcjtcblxuICAvLyBIZWxwZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcztcbiAgQGlmICRmbGV4IHsgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWNsYXNzZXM7IH1cbiAgQGluY2x1ZGUgZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXM7XG4gIEBpZiAkcHJvdG90eXBlIHsgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlczsgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tbm9ybWFsaXplKCkge1xuICAvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbiAgLy8gRG9jdW1lbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuXG4gIGh0bWwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvLyAyXG4gIH1cblxuICAvLyBTZWN0aW9uc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cblxuICBib2R5IHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gIC8vIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG4gIH1cblxuICAvLyBHcm91cGluZyBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgLy8gMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXG5cbiAgaHIge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvLyAxXG4gICAgaGVpZ2h0OiAwOyAvLyAxXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7IC8vIDJcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cblxuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMWVtOyAvLyAyXG4gIH1cblxuICAvLyBUZXh0LWxldmVsIHNlbWFudGljc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cblxuICBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC8vIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gIC8vIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG5cbiAgYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7IC8vIDFcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLy8gMlxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cblxuICBiLFxuICBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgY29kZSxcbiAga2JkLFxuICBzYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8vIDFcbiAgICBmb250LXNpemU6IDFlbTsgLy8gMlxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG5cbiAgLy8gUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gIC8vIGFsbCBicm93c2Vycy5cblxuICBzdWIsXG4gIHN1cCB7XG4gICAgZm9udC1zaXplOiA3NSU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIHN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xuICB9XG5cbiAgc3VwIHtcbiAgICB0b3A6IC0wLjVlbTtcbiAgfVxuXG4gIC8vIEVtYmVkZGVkIGNvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuXG4gIGltZyB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICB9XG5cbiAgLy8gRm9ybXNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgaW5wdXQsXG4gIG9wdGdyb3VwLFxuICBzZWxlY3QsXG4gIHRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLy8gMVxuICAgIGZvbnQtc2l6ZTogMTAwJTsgLy8gMVxuICAgIGxpbmUtaGVpZ2h0OiAxLjE1OyAvLyAxXG4gICAgbWFyZ2luOiAwOyAvLyAyXG4gIH1cblxuICAvLyBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAgLy8gMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cblxuICBidXR0b24sXG4gIGlucHV0IHsgLy8gMVxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gIC8vIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cblxuICBidXR0b24sXG4gIHNlbGVjdCB7IC8vIDFcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG4gIFt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG5cbiAgYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuICBbdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cblxuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICAvLyAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gIC8vICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGxlZ2VuZCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIGNvbG9yOiBpbmhlcml0OyAvLyAyXG4gICAgZGlzcGxheTogdGFibGU7IC8vIDFcbiAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIDFcbiAgICBwYWRkaW5nOiAwOyAvLyAzXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLy8gMVxuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cblxuICBwcm9ncmVzcyB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG5cbiAgdGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gIC8vIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cblxuICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICBbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gMlxuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuXG4gIFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gMVxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvLyAyXG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG5cbiAgW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gIC8vIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cblxuICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLy8gMVxuICAgIGZvbnQ6IGluaGVyaXQ7IC8vIDJcbiAgfVxuXG4gIC8vIEludGVyYWN0aXZlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cblxuICBkZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cblxuICBzdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gIH1cblxuICAvLyBNaXNjXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuXG4gIHRlbXBsYXRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAuXG5cbiAgW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vL1xuLy8vIENoZWNrcyB3aGV0aGVyIGAkZnVuY3Rpb25zYCBleGlzdCBpbiBnbG9iYWwgc2NvcGUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnTGlzdH0gJGZ1bmN0aW9ucyAtIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGNoZWNrIGZvclxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH0gV2hldGhlciBvciBub3QgdGhlcmUgYXJlIG1pc3NpbmcgZGVwZW5kZW5jaWVzXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygkZnVuY3Rpb25zLi4uKSB7XG4gICRtaXNzaW5nLWRlcGVuZGVuY2llczogKCk7XG4gIFxuICBAZWFjaCAkZnVuY3Rpb24gaW4gJGZ1bmN0aW9ucyB7XG4gICAgQGlmIG5vdCBmdW5jdGlvbi1leGlzdHMoJGZ1bmN0aW9uKSB7XG4gICAgICAkbWlzc2luZy1kZXBlbmRlbmNpZXM6IGFwcGVuZCgkbWlzc2luZy1kZXBlbmRlbmNpZXMsICRmdW5jdGlvbiwgY29tbWEpO1xuICAgIH1cbiAgfVxuICBcbiAgQGlmIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMCB7XG4gICAgQGVycm9yICdVbm1ldCBkZXBlbmRlbmNpZXMhIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSByZXF1aXJlZDogI3skbWlzc2luZy1kZXBlbmRlbmNpZXN9Lic7XG4gIH1cblxuICBAcmV0dXJuIGxlbmd0aCgkbWlzc2luZy1kZXBlbmRlbmNpZXMpID4gMDtcbn1cbiIsIi8vL1xuLy8vIFJldHVybnMgdHJ1dGhpbmVzcyBvZiBgJHZhbHVlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSB2YWx1ZSB0byBjaGVja1xuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLWlzLXRydWUoJHZhbHVlKSB7XG4gIEByZXR1cm4gaWYoJHZhbHVlID09IG51bGwsIGZhbHNlLCAkdmFsdWUgYW5kICR2YWx1ZSAhPSBudWxsIGFuZCAkdmFsdWUgIT0gJycgYW5kICR2YWx1ZSAhPSAoKSk7XG59XG4iLCIvLy9cbi8vLyBSZXR1cm5zIHdoZXRoZXIgYCRsaXN0YCBjb250YWlucyBgJHZhbHVlYC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1jb250YWluXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gY2hlY2tcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIHZhbHVlIHRvIGxvb2sgZm9yXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLWNvbnRhaW4oYSBiIGMsIGEpXG4vLy8gLy8gdHJ1ZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1jb250YWluKGEgYiBjLCB6KVxuLy8vIC8vIGZhbHNlXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1jb250YWluKCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBub3Qgbm90IGluZGV4KCRsaXN0LCAkdmFsdWUpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtY29udGFpblxuLy8vIEBhbGlhcyBzbC1jb250YWluXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1pbmNsdWRlKCRsaXN0LCAkdmFsdWUpIHtcbiAgQHJldHVybiBzbC1jb250YWluKCRsaXN0LCAkdmFsdWUpO1xufVxuIiwiLy8vIFJlbW92ZXMgYWxsIGZhbHNlIGFuZCBudWxsIHZhbHVlcyBmcm9tIGAkbGlzdGAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtcHVyZ2Vcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBsaXN0IHRvIHB1cmdlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXB1cmdlKG51bGwgYSBmYWxzZSBiKVxuLy8vIC8vIGEgYlxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtcHVyZ2UoJGxpc3QpIHtcbiAgJF86IHNsLW1pc3NpbmctZGVwZW5kZW5jaWVzKCdzbC1pcy10cnVlJywgJ3NsLXRvLWxpc3QnKTtcbiAgXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgc2wtaXMtdHJ1ZSgkaXRlbSkge1xuICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRpdGVtLCBsaXN0LXNlcGFyYXRvcigkbGlzdCkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkcmVzdWx0KTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXB1cmdlXG4vLy8gQGFsaWFzIHNsLXB1cmdlXG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1jbGVhbigkbGlzdCkge1xuICBAcmV0dXJuIHNsLXB1cmdlKCRsaXN0KTtcbn1cbiIsIi8vL1xuLy8vIFJlbW92ZXMgdmFsdWUocykgYCR2YWx1ZWAgZnJvbSBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXJlbW92ZVxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXJlcGxhY2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgICAgICAtIGxpc3QgdG8gdXBkYXRlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgICAgIC0gdmFsdWUgdG8gcmVtb3ZlXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlbW92ZShhIGIgYywgYSlcbi8vLyAvLyBiIGNcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtcmVwbGFjZScpO1xuXG4gIEByZXR1cm4gc2wtcmVwbGFjZSgkbGlzdCwgJHZhbHVlLCBudWxsKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXJlbW92ZVxuLy8vIEBhbGlhcyBzbC1yZW1vdmVcbi8vL1xuXG5AZnVuY3Rpb24gc2wtd2l0aG91dCgkbGlzdCwgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2wtcmVtb3ZlKCRsaXN0LCAkdmFsdWUpO1xufVxuIiwiLy8vXG4vLy8gUmVwbGFjZXMgYCRvbGRgIGJ5IGAkbmV3YCBpbiBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXJlcGxhY2Vcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1pcy10cnVlXG4vLy8gQHJlcXVpcmVzIHNsLXB1cmdlXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gICAgJGxpc3QgIC0gbGlzdCB0byB1cGRhdGVcbi8vLyBAcGFyYW0geyp9ICAgICAgICRvbGQgICAtIHZhbHVlIHRvIHJlcGxhY2Vcbi8vLyBAcGFyYW0geyp9ICAgICAgICR2YWx1ZSAtIG5ldyB2YWx1ZSBmb3IgJG9sZFxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCBiLCB6KVxuLy8vIC8vIGEgeiBjXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vIHNsLXJlcGxhY2UoYSBiIGMsIHksIHopXG4vLy8gLy8gYSBiIGNcbi8vLyBcbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtcmVwbGFjZSgkbGlzdCwgJG9sZCwgJHZhbHVlKSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC1wdXJnZScsICdzbC10by1saXN0Jyk7XG5cbiAgJHJ1bm5pbmc6IHRydWU7XG5cbiAgQHdoaWxlICRydW5uaW5nIHtcbiAgICAkaW5kZXg6IGluZGV4KCRsaXN0LCAkb2xkKTtcblxuICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICRydW5uaW5nOiBmYWxzZTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkbGlzdDogc2V0LW50aCgkbGlzdCwgJGluZGV4LCAkdmFsdWUpO1xuICAgIH1cblxuICB9XG5cbiAgJGxpc3Q6IGlmKHNsLWlzLXRydWUoJHZhbHVlKSwgJGxpc3QsIHNsLXB1cmdlKCRsaXN0KSk7XG4gIFxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJGxpc3QpO1xufVxuIiwiLy8vXG4vLy8gQ2FzdHMgYCR2YWx1ZWAgaW50byBhIGxpc3QuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtdG8tbGlzdFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSB2YWx1ZSB0byBjYXN0IHRvIGxpc3Rcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlcGFyYXRvciBbc3BhY2VdIC0gc2VwYXJhdG9yIHRvIHVzZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC10by1saXN0KGEgYiBjLCBjb21tYSlcbi8vLyAvLyBhLCBiLCBjXG4vLy8gXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtdG8tbGlzdCgkdmFsdWUsICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZSkpIHtcbiAgQHJldHVybiBqb2luKCgpLCAkdmFsdWUsICRzZXBhcmF0b3IpO1xufVxuXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtdG8tbGlzdFxuLy8vIEBhbGlhcyBzbC10by1saXN0XG4vLy9cblxuQGZ1bmN0aW9uIHNsLWxpc3RpZnkoJHZhbHVlKSB7XG4gIEByZXR1cm4gc2wtdG8tbGlzdCgkdmFsdWUpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cbi8vLyBAdHlwZSBNYXBcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogIzE3NzliYSxcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcG9zaXRpb246IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gTmVzdGVkIG1hcmdpbiBmb3Igc3VibWVudS5cbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIENTUy4gQ2FuIGJlIGVpdGhlciBgbHRyYCBvciBgcnRsYC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIGN1cnNvcidzIHZhbHVlLCBgYXV0b2AgYnkgZGVmYXVsdFxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0byAhZGVmYXVsdDtcblxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XG59XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgZmxleCBqdXN0aWZ5aW5nIG9wdGlvbnNcbiQtemYtZmxleC1qdXN0aWZ5OiAtemYtZmxleC1qdXN0aWZ5KCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24pO1xuXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9ycztcblxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbm9ybWFsaXplO1xuXG4gIC8vIFRoZXNlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBhIDxtZXRhPiB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdFxuICAuZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcblxuICAgIEBpZiAoJGJvZHktYW50aWFsaWFzZWQpIHtcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIC8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgdGFrZXMgb24gaGVpZ2h0IGF1dG9tYXRpY2FsbHlcbiAgdGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gTWFrZSBzZWxlY3QgZWxlbWVudHMgYXJlIDEwMCUgd2lkdGggYnkgZGVmYXVsdFxuICBzZWxlY3Qge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBTdHlsZXMgR29vZ2xlIE1hcHMgYW5kIE1hcFF1ZXN0IGVtYmVkcyBwcm9wZXJseVxuICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWlkc1xuICAubWFwX2NhbnZhcyxcbiAgLm1xYS1kaXNwbGF5IHtcbiAgICBpbWcsXG4gICAgZW1iZWQsXG4gICAgb2JqZWN0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcbiAgYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjdXJzb3I6ICRnbG9iYWwtYnV0dG9uLWN1cnNvcjtcbiAgfVxuXG4gIC8vIFByZXZlbnQgdGV4dCBvdmVyZmxvdyBvbiBwcmVcbiAgcHJlIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8vIE1ha2UgcmVzZXQgaW5oZXJpdCBmb250LWZhbWlseSBpbnN0ZWFkIG9mIHNldHRpbmdzIHNhbnMtc2VyaWZcbiAgYnV0dG9uLFxuICBpbnB1dCxcbiAgb3B0Z3JvdXAsXG4gIHNlbGVjdCxcbiAgdGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxuICAuaXMtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pcy1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEdsb2JhbCBzcGFjaW5nIGZvciBmb3JtIGVsZW1lbnRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tc3BhY2luZzogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG5AaW1wb3J0ICd0ZXh0JztcbkBpbXBvcnQgJ2NoZWNrYm94JztcbkBpbXBvcnQgJ2xhYmVsJztcbkBpbXBvcnQgJ2hlbHAtdGV4dCc7XG5AaW1wb3J0ICdpbnB1dC1ncm91cCc7XG5AaW1wb3J0ICdmaWVsZHNldCc7XG5AaW1wb3J0ICdzZWxlY3QnO1xuQGltcG9ydCAncmFuZ2UnO1xuQGltcG9ydCAncHJvZ3Jlc3MnO1xuQGltcG9ydCAnbWV0ZXInO1xuQGltcG9ydCAnZXJyb3InO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS10ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1sYWJlbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWhlbHB0ZXh0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tcHJlcG9zdGZpeDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWZpZWxkc2V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tc2VsZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tZXJyb3I7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRm9udCBjb2xvciBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIG9mIHBsYWNlaG9sZGVyIHRleHQgd2l0aGluIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGxhY2Vob2xkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgZmFtaWx5IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEZvbnRcbiRpbnB1dC1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWxpbmUtaGVpZ2h0OiAkZ2xvYmFsLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBmb2N1c2VkIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1mb2N1czogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBkaXNhYmxlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGZvY3VzZWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1ib3JkZXItZm9jdXM6IDFweCBzb2xpZCAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXBhZGRpbmc6ICRmb3JtLXNwYWNpbmcgLyAyICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBpbnNpZGUgdGV4dCBpbnB1dHMgd2hlbiBub3QgZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgb3V0c2lkZSB0ZXh0IGlucHV0cyB3aGVuIGZvY3VzZWQuXG4vLy8gQHR5cGUgU2hhZG93XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEN1cnNvciB0byB1c2Ugd2hlbiBob3ZlcmluZyBvdmVyIGEgZGlzYWJsZWQgdGV4dCBpbnB1dC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkICFkZWZhdWx0O1xuXG4vLy8gUHJvcGVydGllcyB0byB0cmFuc2l0aW9uIG9uIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRpbnB1dC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMsIGJvcmRlci1jb2xvciAwLjI1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZXMgdGhlIHVwL2Rvd24gYnV0dG9ucyB0aGF0IENocm9tZSBhbmQgRmlyZWZveCBhZGQgdG8gYDxpbnB1dCB0eXBlPSdudW1iZXInPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFJhZGl1cyBmb3IgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kaW5wdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGZvcm0gYnV0dG9ucywgZGVmYXVsdGVkIHRvIGdsb2JhbC1yYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tZWxlbWVudCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgbWFyZ2luOiAwIDAgJGZvcm0tc3BhY2luZztcbiAgcGFkZGluZzogJGlucHV0LXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkaW5wdXQtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdztcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICB9XG5cbiAgLy8gRm9jdXMgc3RhdGVcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXI6ICRpbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZm9jdXM7XG4gICAgYm94LXNoYWRvdzogJGlucHV0LXNoYWRvdy1mb2N1cztcblxuICAgIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246ICRpbnB1dC10cmFuc2l0aW9uO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXRleHQge1xuICAvLyBUZXh0IGlucHV0c1xuICAje3RleHQtaW5wdXRzKCl9LFxuICB0ZXh0YXJlYSB7XG4gICAgQGluY2x1ZGUgZm9ybS1lbGVtZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyBUZXh0IGFyZWFzXG4gIHRleHRhcmVhIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAmW3Jvd3NdIHtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICB9XG4gIH1cblxuICBpbnB1dCxcbiAgdGV4dGFyZWEge1xuICAgIC8vIERpc2FibGVkL3JlYWRvbmx5IHN0YXRlXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogJGlucHV0LWN1cnNvci1kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBzdHlsZXMgb24gYnV0dG9uLWxpa2UgaW5wdXRzXG4gIFt0eXBlPSdzdWJtaXQnXSxcbiAgW3R5cGU9J2J1dHRvbiddIHtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWJ1dHRvbi1yYWRpdXM7XG4gIH1cblxuICAvLyBSZXNldCBOb3JtYWxpemUgc2V0dGluZyBjb250ZW50LWJveCB0byBzZWFyY2ggZWxlbWVudHNcbiAgaW5wdXRbdHlwZT0nc2VhcmNoJ10geyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLy8gTnVtYmVyIGlucHV0IHN0eWxlc1xuICBbdHlwZT0nbnVtYmVyJ10ge1xuICAgIEBpZiBub3QgJGlucHV0LW51bWJlci1zcGlubmVycyB7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcblxuICAgICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQbGFjZWhvbGRlciB0ZXh0XG4gIDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkaW5wdXQtcGxhY2Vob2xkZXItY29sb3I7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3gge1xuICBbdHlwZT0nZmlsZSddLFxuICBbdHlwZT0nY2hlY2tib3gnXSxcbiAgW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0L2xhYmVsIHNpYmxpbmdzXG4gIFt0eXBlPSdjaGVja2JveCddICsgbGFiZWwsXG4gIFt0eXBlPSdyYWRpbyddICsgbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAmW2Zvcl0ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXRzIGluc2lkZSBsYWJlbHNcbiAgbGFiZWwgPiBbdHlwZT0nY2hlY2tib3gnXSxcbiAgbGFiZWwgPiBbdHlwZT0ncmFkaW8nXSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgZmlsZSBpbnB1dCB3aWR0aFxuICBbdHlwZT0nZmlsZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgZm9ybSBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBmb3JtIGxhYmVscy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGZvcm0gbGFiZWxzLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlIHNwYWNlIGJldHdlZW4gdGhlIGxhYmVsIGFuZCBpdHMgaW5wdXQgZmllbGQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMS44ICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG5cbiAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkZm9ybS1sYWJlbC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGZvcm0tbGFiZWwtY29sb3I7XG59XG5cbkBtaXhpbiBmb3JtLWxhYmVsLW1pZGRsZSB7XG4gICRpbnB1dC1ib3JkZXItd2lkdGg6IGdldC1ib3JkZXItdmFsdWUoJGlucHV0LWJvcmRlciwgd2lkdGgpO1xuXG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICgkZm9ybS1zcGFjaW5nIC8gMiArIHJlbS1jYWxjKCRpbnB1dC1ib3JkZXItd2lkdGgpKSAwO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWxhYmVsIHtcbiAgbGFiZWwge1xuICAgIEBpbmNsdWRlIGZvcm0tbGFiZWw7XG5cbiAgICAmLm1pZGRsZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWxhYmVsLW1pZGRsZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRoZWxwdGV4dC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzdHlsZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0taGVscHRleHQge1xuICAuaGVscC10ZXh0IHtcbiAgICAkbWFyZ2luLXRvcDogKCRmb3JtLXNwYWNpbmcgKiAwLjUpICogLTE7XG5cbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICBmb250LXNpemU6ICRoZWxwdGV4dC1mb250LXNpemU7XG4gICAgZm9udC1zdHlsZTogJGhlbHB0ZXh0LWZvbnQtc3R5bGU7XG4gICAgY29sb3I6ICRoZWxwdGV4dC1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGVmdC9yaWdodCBwYWRkaW5nIG9mIGFuIHByZS9wb3N0Zml4ZWQgaW5wdXQgbGFiZWxcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1wcmVwb3N0Zml4IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiAkaW5wdXQtbGluZS1oZWlnaHQpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCB0YWJsZSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDAsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICVpbnB1dC1ncm91cC1jaGlsZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtbGFiZWwge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmc6IDAgJGlucHV0LXByZWZpeC1wYWRkaW5nO1xuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kO1xuXG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC1wcmVmaXgtYm9yZGVyKSB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgYSxcbiAgICBpbnB1dCxcbiAgICBidXR0b24sXG4gICAgbGFiZWwge1xuICAgICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG5cbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIH1cbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNpdHkgYnVtcCBuZWVkZWQgdG8gcHJldmVudCBvdmVycmlkZSBieSBidXR0b25zXG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGN1c3RvbSBmaWVsZHNldHMuXG4vLy8gQHR5cGUgQm9yZGVyXG4kZmllbGRzZXQtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZpZWxkc2V0LXBhZGRpbmc6IHJlbS1jYWxjKDIwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWFyZ2luIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZpZWxkc2V0LW1hcmdpbjogcmVtLWNhbGMoMTggMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgYmV0d2VlbiB0aGUgbGVnZW5kIHRleHQgYW5kIGZpZWxkc2V0IGJvcmRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsZWdlbmQtcGFkZGluZzogcmVtLWNhbGMoMCAzKSAhZGVmYXVsdDtcblxuQG1peGluIGZpZWxkc2V0IHtcbiAgbWFyZ2luOiAkZmllbGRzZXQtbWFyZ2luO1xuICBwYWRkaW5nOiAkZmllbGRzZXQtcGFkZGluZztcbiAgYm9yZGVyOiAkZmllbGRzZXQtYm9yZGVyO1xuXG4gIGxlZ2VuZCB7XG4gICAgLy8gQ292ZXJzIHVwIHRoZSBmaWVsZHNldCdzIGJvcmRlciB0byBjcmVhdGUgYXJ0aWZpY2lhbCBwYWRkaW5nXG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IHJlbS1jYWxjKC0zKTtcbiAgICBwYWRkaW5nOiAkbGVnZW5kLXBhZGRpbmc7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1maWVsZHNldCB7XG4gIGZpZWxkc2V0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICBsZWdlbmQge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nICogMC41O1xuICB9XG5cbiAgLmZpZWxkc2V0IHtcbiAgICBAaW5jbHVkZSBmaWVsZHNldDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0aGUgZHJvcGRvd24gdHJpYW5nbGUgaW5zaWRlIHNlbGVjdCBtZW51cy4gU2V0IHRvIGB0cmFuc3BhcmVudGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5LlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXRyaWFuZ2xlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNlbGVjdCBtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJHNlbGVjdC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1zZWxlY3Qge1xuICAkaGVpZ2h0OiAoJGlucHV0LWZvbnQtc2l6ZSAqIHVuaXRsZXNzLWNhbGMoJGlucHV0LWxpbmUtaGVpZ2h0KSkgKyAoZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICd0b3AnKSArIGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAnYm90dG9tJykpIC0gcmVtLWNhbGMoMSk7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcblxuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRzZWxlY3QtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2VsZWN0LWJhY2tncm91bmQ7XG5cbiAgZm9udC1mYW1pbHk6ICRpbnB1dC1mb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkaW5wdXQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGlucHV0LWxpbmUtaGVpZ2h0O1xuICBjb2xvcjogJGlucHV0LWNvbG9yO1xuXG4gIEBpZiAkc2VsZWN0LXRyaWFuZ2xlLWNvbG9yICE9IHRyYW5zcGFyZW50IHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRzZWxlY3QtdHJpYW5nbGUtY29sb3IpO1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkZ2xvYmFsLXJpZ2h0ICgtJGZvcm0tc3BhY2luZykgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiA5cHggNnB4O1xuXG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAoJGZvcm0tc3BhY2luZyAqIDEuNSk7XG4gIH1cblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgJjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGlucHV0LWJhY2tncm91bmQtZGlzYWJsZWQ7XG4gICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gSGlkZSB0aGUgZHJvcGRvd24gYXJyb3cgc2hvd24gaW4gbmV3ZXIgSUUgdmVyc2lvbnNcbiAgJjo6LW1zLWV4cGFuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbbXVsdGlwbGVdIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXNlbGVjdCB7XG4gIHNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS1zZWxlY3Q7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHNsaWRlclxuLy8vL1xuXG4vLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItaGVpZ2h0OiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHNsaWRlcidzIHRyYWNrLlxuLy8vIEB0eXBlIENvbG9yXG4kc2xpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgYWN0aXZlIGZpbGwgY29sb3Igb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1maWxsLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBoYW5kbGUgb2YgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItaGFuZGxlLWhlaWdodDogMS40cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3aWR0aCBvZiB0aGUgaGFuZGxlIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhhbmRsZS13aWR0aDogMS40cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgaGFuZGxlIGZvciB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmFkZSBhbW91bnQgb2YgYSBkaXNhYmxlZCBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3Igc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm91bmRhdGlvbi1yYW5nZS1pbnB1dCB7XG4gIGlucHV0W3R5cGU9J3JhbmdlJ10geyAgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgJG1hcmdpbjogKCRzbGlkZXItaGFuZGxlLWhlaWdodCAtICRzbGlkZXItaGVpZ2h0KSAvIDI7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICBvdXRsaW5lOiAwO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIG9wYWNpdHk6ICRzbGlkZXItb3BhY2l0eS1kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby12ZW5kb3ItcHJlZml4XG5cbiAgICAvLyBDaHJvbWUvU2FmYXJpXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sge1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhlaWdodDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIG1hcmdpbi10b3A6IC0kbWFyZ2luO1xuXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpcmVmb3hcbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIG1hcmdpbi10b3A6IC0kbWFyZ2luO1xuXG4gICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWhhbmRsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRzbGlkZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEludGVybmV0IEV4cGxvcmVyXG4gICAgJjo6LW1zLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvcmRlci10b3A6ICRtYXJnaW4gc29saWQgJGJvZHktYmFja2dyb3VuZDtcbiAgICAgIGJvcmRlci1ib3R0b206ICRtYXJnaW4gc29saWQgJGJvZHktYmFja2dyb3VuZDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItYmFja2dyb3VuZDtcblxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLXRodW1iIHtcbiAgICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWZpbGwtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAmOjotbXMtZmlsbC11cHBlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgb3V0cHV0IHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogJHNsaWRlci1oYW5kbGUtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvZ3Jlc3MtYmFyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyJ3MgbWV0ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb2dyZXNzLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWVsZW1lbnQge1xuICBwcm9ncmVzcyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkcHJvZ3Jlc3MtaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcblxuICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICB9XG5cbiAgICAvLyBGb3IgRmlyZWZveFxuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkZm91bmRhdGlvbi1wYWxldHRlIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3JlciBzZXRzIHRoZSBmaWxsIHdpdGggY29sb3JcbiAgICAgICAgY29sb3I6ICRjb2xvcjtcblxuICAgICAgICAmOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotbW96LXByb2dyZXNzLWJhciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIElFIGFuZCBFZGdlXG4gICAgJjo6LW1zLWZpbGwgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1ldGVyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIG9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBhdmVyYWdlIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhIHN1Ym9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1ldGVyLWVsZW1lbnQge1xuICBtZXRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAvLyBEaXNhYmxlIGAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmVgIGZyb20gZ2V0dGluZyBwcmVmaXhlZCxcbiAgICAvLyBXZSBoYXZlIGRpc2FibGVkIGF1dG9wcmVmaXhlciBmaXJzdCBhbmQgYXJlIGp1c3Qgb25seSB1c2luZyBcbiAgICAvLyBgLW1vei1hcHBlYXJhbmNlOiBub25lYCBhcyBhIHByZWZpeCBhbmQgbmVnbGVjdGluZyB0aGUgd2Via2l0LlxuICAgIFxuICAgIC8qISBhdXRvcHJlZml4ZXI6IG9mZiAqL1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgLy8gQ2hyb21lL1NhZmFyaS9FZGdlXG4gICAgJjo6LXdlYmtpdC1tZXRlci1iYXIge1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCB7XG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhYmlkZVxuLy8vL1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGlucHV0cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtaW5wdXRzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBlcnJvciBzdHlsZXMgc2hvdWxkIGJlIGFkZGVkIHRvIGxhYmVscy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWJpZGUtbGFiZWxzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciB0byB1c2UgZm9yIGludmFsaWQgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB0byB1c2UgZm9yIGxhYmVscyBvZiBpbnZhbGlkIGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWVycm9yLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3IgZm9ybSBlcnJvciB0ZXh0LlxuLy8vIEB0eXBlIEtleXdvcmRcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFN0eWxlcyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGFuIGlucHV0IGZpZWxkIHRvIGhhdmUgYW4gZXJyb3Igc3RhdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGFsZXJ0LWNvbG9yXSAtIENvbG9yIHRvIHVzZSBmb3IgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhY2tncm91bmQtbGlnaHRlbiBbMTAlXSAtIExpZ2h0bmVzcyBsZXZlbCBvZiB0aGUgYmFja2dyb3VuZCBjb2xvci5cbkBtaXhpbiBmb3JtLWlucHV0LWVycm9yKFxuICAkYmFja2dyb3VuZDogJGlucHV0LWJhY2tncm91bmQtaW52YWxpZCxcbiAgJGJhY2tncm91bmQtbGlnaHRlbjogMTAlXG4pIHtcbiAgJjpub3QoOmZvY3VzKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGJhY2tncm91bmQsICR3aGl0ZSwgJGJhY2tncm91bmQtbGlnaHRlbik7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogJGJhY2tncm91bmQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGVycm9yIHN0eWxlcyB0byBhIGZvcm0gZWxlbWVudCwgdXNpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc2V0dGluZ3MgZmlsZS5cbkBtaXhpbiBmb3JtLWVycm9yIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luLXRvcDogJGZvcm0tc3BhY2luZyAqIC0wLjU7XG4gIG1hcmdpbi1ib3R0b206ICRmb3JtLXNwYWNpbmc7XG5cbiAgZm9udC1zaXplOiAkaW5wdXQtZXJyb3ItZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGlucHV0LWVycm9yLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGlucHV0LWVycm9yLWNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLWVycm9yIHtcbiAgQGlmICRhYmlkZS1pbnB1dHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBpbnZhbGlkIGlucHV0c1xuICAgIC5pcy1pbnZhbGlkLWlucHV0IHtcbiAgICAgIEBpbmNsdWRlIGZvcm0taW5wdXQtZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgQGlmICRhYmlkZS1sYWJlbHMge1xuICAgIC8vIEVycm9yIGNsYXNzIGZvciBsYWJlbHMgb2YgaW52YWxpZCBvdXRwdXRzXG4gICAgLmlzLWludmFsaWQtbGFiZWwge1xuICAgICAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBlcnJvciBlbGVtZW50XG4gIC5mb3JtLWVycm9yIHtcbiAgICBAaW5jbHVkZSBmb3JtLWVycm9yO1xuXG4gICAgJi5pcy12aXNpYmxlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdHlwb2dyYXBoeVxuLy8vL1xuXG4vLyBCYXNlIHR5cG9ncmFwaHkgc3R5bGVzICh0YWdzIG9ubHkpXG5AaW1wb3J0ICdiYXNlJztcblxuLy8gVHlwb2dyYXBoeSBoZWxwZXIgY2xhc3NlcyAoY2xhc3NlcyBvbmx5KVxuQGltcG9ydCAnaGVscGVycyc7XG5cbi8vIFRleHQgYWxpZ25tZW50IGNsYXNzZXNcbkBpbXBvcnQgJ2FsaWdubWVudCc7XG5cbi8vIFByaW50IHN0eWxlc1xuQGltcG9ydCAncHJpbnQnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi10eXBvZ3JhcGh5IHtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWJhc2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRleHQtYWxpZ25tZW50O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByaW50LXN0eWxlcztcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxuLy8vL1xuXG4vLyBCYXNlIFR5cG9ncmFwaHlcbi8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cbi8vICAgLSBCb2xkL2l0YWxpY3MgPGI+IDxzdHJvbmc+IDxpPiA8ZW0+XG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XG4vLyAgIC0gSGVhZGluZ3MgPGgxPi08aDY+XG4vLyAgIC0gQW5jaG9ycyA8YT5cbi8vICAgLSBEaXZpZGVycyA8aHI+XG4vLyAgIC0gTGlzdHMgPHVsPiA8b2w+IDxkbD5cbi8vICAgLSBCbG9ja3F1b3RlcyA8YmxvY2txdW90ZT5cbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cbi8vICAgLSBBYmJyZXZpYXRpb25zIDxhYmJyPlxuLy8gICAtIENpdGF0aW9ucyA8Y2l0ZT5cbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XG5cbi8vLyBGb250IGZhbWlseSBmb3IgaGVhZGVyIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3R5bGUgKGUuZy4gaXRhbGljaXplZCkgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdGFjayB1c2VkIGZvciBlbGVtZW50cyB0aGF0IHVzZSBtb25vc3BhY2VkIHR5cGUsIHN1Y2ggYXMgY29kZSBzYW1wbGVzXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgZm9yIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc3R5bGVzLlxuLy8vIEB0eXBlIE1hcFxuJGhlYWRlci1zdHlsZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4pICFkZWZhdWx0O1xuXG4vLyAkaGVhZGVyLXN0eWxlcyBtYXAgaXMgYnVpbHQgZnJvbSAkaGVhZGVyLXNpemVzIGluIG9yZGVyIHRvIGVuc3VyZSBkb3dud2FyZCBjb21wYXRpYmlsaXR5XG4vLyB3aGVuICRoZWFkZXItc2l6ZXMgaXMgZGVwcmVjaWF0ZWQsICRoZWFkZXItc3R5bGVzIG5lZWRzIHRvIGdldCAhZGVmYXVsdCB2YWx1ZXMgbGlrZSBzZXR0aW5ncy5zY3NzXG5AZnVuY3Rpb24gYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcykge1xuICBAd2FybiAnTm90ZSwgdGhhdCAkaGVhZGVyLXNpemVzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJGhlYWRlci1zdHlsZXMuICRoZWFkZXItc2l6ZXMgc3RpbGwgd29ya3MsIGJ1dCBpdCBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZC4nO1xuICAkaGVhZGVyLXN0eWxlczogKCk7XG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXNpemVzIHtcbiAgICAkaGVhZGVyLW1hcDogKCk7XG4gICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XG4gICAgICAkaGVhZGVyLW1hcDogbWFwLW1lcmdlKCRoZWFkZXItbWFwLCAoJGhlYWRlcjogKCdmb250LXNpemUnOiAkZm9udC1zaXplKSkpO1xuICAgIH1cbiAgICAkaGVhZGVyLXN0eWxlczogbWFwLW1lcmdlKCRoZWFkZXItc3R5bGVzLCAoJHNpemU6ICRoZWFkZXItbWFwKSk7XG4gIH1cbiAgQHJldHVybiAkaGVhZGVyLXN0eWxlcztcbn1cblxuLy8gSWYgaXQgZXhpc3RzICRoZWFkZXJzLXNpemVzIGlzIHVzZWQgdG8gYnVpbGQgJGhlYWRlci1zdHlsZXMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoaGVhZGVyLXNpemVzKSB7XG4gICRoZWFkZXItc3R5bGVzOiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKTtcbn1cblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbWFsbC1mb250LXNpemU6IDgwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGA8c21hbGw+YCBlbGVtZW50cyB3aGVuIHBsYWNlZCBpbnNpZGUgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGluc2lkZSBgPHA+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIGZvciBwYXJhZ3JhcGggdGV4dC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgY29kZSBzYW1wbGVzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBhcm91bmQgdGV4dCBvZiBjb2RlIHNhbXBsZXMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGNvZGUtcGFkZGluZzogcmVtLWNhbGMoMiA1IDEpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRhbmNob3ItY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRhbmNob3ItY29sb3IsICRsaWdodG5lc3M6IC0xNCUpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGRlY29yYXRpb24gZm9yIGxpbmtzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3Zlcjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGhyLXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBMaXN0XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gZm9yIGEgZGl2aWRlci5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kaHItbWFyZ2luOiByZW0tY2FsYygyMCkgYXV0byAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBpdGVtcyBpbiBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b20gIWRlZmF1bHQ7XG5cbi8vLyBCdWxsZXQgdHlwZSB0byB1c2UgZm9yIHVub3JkZXJlZCBsaXN0cyAoZS5nLiwgYHNxdWFyZWAsIGBjaXJjbGVgLCBgZGlzY2ApLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYyAhZGVmYXVsdDtcblxuLy8vIFBvc2l0aW9uaW5nIGZvciBidWxsZXRzIG9uIHVub3JkZXJlZCBsaXN0IGl0ZW1zLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGUgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBsaXN0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gTGVmdCAob3IgcmlnaHQpIG1hcmdpbiBmb3IgYSBsaXN0IGluc2lkZSBhIGxpc3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciBgPGRsPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtbWFyZ2luLWJvdHRvbTogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IGZvciBgPGR0PmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYDxkdD5gIGFuZCBgPGRkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZGVmbmxpc3QtdGVybS1tYXJnaW4tYm90dG9tOiAwLjNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmxvY2txdW90ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGEgYDxibG9ja3F1b3RlPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpICFkZWZhdWx0O1xuXG4vLy8gU2lkZSBib3JkZXIgZm9yIGA8YmxvY2txdW90ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBmb3IgYDxjaXRlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2l0ZS1mb250LXNpemU6IHJlbS1jYWxjKDEzKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3IgZm9yIGA8Y2l0ZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBzZXVkbyBjb250ZW50IGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjaXRlLXBzZXVkby1jb250ZW50OiAnXFwyMDE0IFxcMDAyMCcgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGZhbWlseSBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNCAwKSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIGJvcmRlciBzdHlsZSBmb3IgYDxhYmJyPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjayAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlIHtcbiAgLy8gVHlwb2dyYXBoeSByZXNldHNcbiAgZGl2LFxuICBkbCxcbiAgZHQsXG4gIGRkLFxuICB1bCxcbiAgb2wsXG4gIGxpLFxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2LFxuICBwcmUsXG4gIGZvcm0sXG4gIHAsXG4gIGJsb2NrcXVvdGUsXG4gIHRoLFxuICB0ZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBQYXJhZ3JhcGhzXG4gIHAge1xuICAgIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgIHRleHQtcmVuZGVyaW5nOiAkcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nO1xuICB9XG5cbiAgLy8gRW1waGFzaXplZCB0ZXh0XG4gIGVtLFxuICBpIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTdHJvbmcgdGV4dFxuICBzdHJvbmcsXG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU21hbGwgdGV4dFxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSGVhZGluZ3NcbiAgaDEsIC5oMSxcbiAgaDIsIC5oMixcbiAgaDMsIC5oMyxcbiAgaDQsIC5oNCxcbiAgaDUsIC5oNSxcbiAgaDYsIC5oNiB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkZXItZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJGhlYWRlci1mb250LXN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xuXG4gICAgc21hbGwge1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlYWRpbmcgc3R5bGVzXG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXN0eWxlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGhlYWRlciwgJGhlYWRlci1kZWZzIGluICRoZWFkZXJzIHtcbiAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiAxcmVtO1xuICAgICAgICAjeyRoZWFkZXJ9LCAuI3skaGVhZGVyfSB7XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmb250LXNpemUpIHtcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZzKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmcykpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCksICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxoKSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGgpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMoJGhlYWRlci1saW5laGVpZ2h0LCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi10b3ApIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG10KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbXQpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1iKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWIpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRoZWFkZXItbWFyZ2luLWJvdHRvbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlua3NcbiAgYSB7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICRhbmNob3ItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIGNsZWFyOiBib3RoO1xuXG4gICAgbWF4LXdpZHRoOiAkaHItd2lkdGg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcblxuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1ib3R0b206ICRoci1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cblxuICAvLyBMaXN0c1xuICB1bCxcbiAgb2wsXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246ICRsaXN0LXN0eWxlLXBvc2l0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gTGlzdCBpdGVtc1xuICBsaSB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6ICRsaXN0LXN0eWxlLXR5cGU7XG4gIH1cblxuICAvLyBPcmRlcmVkIGxpc3RzXG4gIG9sIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE5lc3RlZCB1bm9yZGVyZWQvb3JkZXJlZCBsaXN0c1xuICB1bCwgb2wge1xuICAgICYgJiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW47XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmluaXRpb24gbGlzdHNcbiAgZGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZHQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZGVmbmxpc3QtdGVybS13ZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2txdW90ZXNcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwIDAgJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuICAgIHBhZGRpbmc6ICRibG9ja3F1b3RlLXBhZGRpbmc7XG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xuXG4gICAgJiwgcCB7XG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgICAgY29sb3I6ICRibG9ja3F1b3RlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIENpdGF0aW9uc1xuICBjaXRlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6ICRjaXRlLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGNpdGUtY29sb3I7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY2l0ZS1wc2V1ZG8tY29udGVudDtcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIsIGFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBoZWxwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIEZpZ3VyZXNcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb2RlXG4gIGNvZGUge1xuICAgIHBhZGRpbmc6ICRjb2RlLXBhZGRpbmc7XG5cbiAgICBib3JkZXI6ICRjb2RlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRjb2RlLWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkY29kZS1mb250LXdlaWdodDtcbiAgICBjb2xvcjogJGNvZGUtY29sb3I7XG4gIH1cblxuICAvLyBLZXlzdHJva2VzXG4gIGtiZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6ICRrZXlzdHJva2UtcGFkZGluZztcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAka2V5c3Ryb2tlLWZvbnQ7XG4gICAgY29sb3I6ICRrZXlzdHJva2UtY29sb3I7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRrZXlzdHJva2UtcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAka2V5c3Ryb2tlLXJhZGl1cztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktaGVscGVyc1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsZWFkLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemUgKiAxLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3IgbGVhZCBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGxlYWQtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBsaW5lIGhlaWdodCBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kc3ViaGVhZGVyLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHdlaWdodCBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdG9wIG1hcmdpbiBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIGZvciBzdWJoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3Igc3RhdGlzdGljIG51bWJlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3RhdC1mb250LXNpemU6IDIuNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1oZWxwZXJzIHtcbiAgLy8gVXNlIHRvIGNyZWF0ZSBhIHN1YmhlYWRpbmcgdW5kZXIgYSBtYWluIGhlYWRlclxuICAvLyBNYWtlIHN1cmUgeW91IHBhaXIgdGhlIHR3byBlbGVtZW50cyBpbiBhIDxoZWFkZXI+IGVsZW1lbnQsIGxpa2UgdGhpczpcbiAgLy8gPGhlYWRlcj5cbiAgLy8gICA8aDE+SGVhZGluZzwvaDE+XG4gIC8vICAgPGgyPlN1YmhlYWRpbmc8L2gyPlxuICAvLyA8L2hlYWRlcj5cbiAgLnN1YmhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogJHN1YmhlYWRlci1tYXJnaW4tdG9wO1xuICAgIG1hcmdpbi1ib3R0b206ICRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtd2VpZ2h0OiAkc3ViaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkc3ViaGVhZGVyLWxpbmVoZWlnaHQ7XG4gICAgY29sb3I6ICRzdWJoZWFkZXItY29sb3I7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYW4gaW50cm9kdWN0b3J5IGxlYWQsIGRlY2ssIGJsdXJiLCBldGMuXG4gIC5sZWFkIHtcbiAgICBmb250LXNpemU6ICRsZWFkLWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGxlYWQtbGluZWhlaWdodDtcbiAgfVxuXG4gIC8vIFVzZSB0byBzdHlsZSBhIGxhcmdlIG51bWJlciB0byBkaXNwbGF5IGEgc3RhdGlzdGljXG4gIC5zdGF0IHtcbiAgICBmb250LXNpemU6ICRzdGF0LWZvbnQtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIHAgKyAmIHtcbiAgICAgIG1hcmdpbi10b3A6IC0xcmVtO1xuICAgIH1cbiAgfVxuXG4gIHVsLCBvbCB7XG4gICAgLy8gVXNlIHRvIHJlbW92ZSBudW1iZXJzIGZyb20gb3JkZXJlZCBsaXN0ICYgYnVsbGV0cyBmcm9tIHVub3JkZXJlZCBsaXN0XG4gICAgJi5uby1idWxsZXQge1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQge1xuICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICBAZWFjaCAkYWxpZ24gaW4gKGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnkpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgLnRleHQtI3skYWxpZ259IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246ICRhbGlnbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSWYgYHRydWVgLCBhbGwgZWxlbWVudHMgd2lsbCBoYXZlIHRyYW5zcGFyZW50IGJhY2tncm91bmRzIHdoZW4gcHJpbnRlZCwgdG8gc2F2ZSBvbiBpbmsuXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBncm91cCBnbG9iYWxcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheXMgbmV4dCB0byBhbGwgbGlua3MgdGhlaXIgXCJocmVmXCIgd2hlbiBwcmludGVkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtaHJlZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHNhc3MtbGludDpkaXNhYmxlLWFsbFxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgQGlmICRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcblxuICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7IC8vIEJsYWNrIHByaW50cyBmYXN0ZXI6IGg1YnAuY29tL3NcbiAgICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIC5oaWRlLWZvci1wcmludCB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4gICAgdGFibGUuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9XG4gICAgdGhlYWQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXAgIWltcG9ydGFudDsgfVxuICAgIHRib2R5LnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0ci5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9XG4gICAgdGQuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cbiAgICB0aC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfVxuXG4gICAgLy8gRGlzcGxheSB0aGUgVVJMIG9mIGEgbGluayBhZnRlciB0aGUgdGV4dFxuICAgIGEsXG4gICAgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fVxuICAgIEBpZiAkcHJpbnQtaHJlZnMge1xuICAgICAgYVtocmVmXTphZnRlciB7IGNvbnRlbnQ6ICcgKCcgYXR0cihocmVmKSAnKSc7IH1cbiAgICB9XG5cbiAgICAvLyBEb24ndCBkaXNwbGF5IHRoZSBVUkwgZm9yIGltYWdlcyBvciBKYXZhU2NyaXB0L2ludGVybmFsIGxpbmtzXG4gICAgLmlyIGE6YWZ0ZXIsXG4gICAgYVtocmVmXj0namF2YXNjcmlwdDonXTphZnRlcixcbiAgICBhW2hyZWZePScjJ106YWZ0ZXIgeyBjb250ZW50OiAnJzsgfVxuXG4gICAgLy8gRGlzcGxheSB3aGF0IGFuIGFiYnJldmlhdGlvbiBzdGFuZHMgZm9yIGFmdGVyIHRoZSB0ZXh0XG4gICAgYWJiclt0aXRsZV06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIodGl0bGUpICcpJzsgfVxuXG4gICAgLy8gUHJldmVudCBwYWdlIGJyZWFrcyBpbiB0aGUgbWlkZGxlIG9mIGEgYmxvY2txdW90ZSBvciBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLy8gaDVicC5jb20vdFxuICAgIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG5cbiAgICB0cixcbiAgICBpbWcgeyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cblxuICAgIGltZyB7IG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICBAcGFnZSB7IG1hcmdpbjogMC41Y207IH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgb3JwaGFuczogMztcbiAgICAgIHdpZG93czogMztcbiAgICB9XG5cbiAgICAvLyBBdm9pZCBwYWdlIGJyZWFrcyBhZnRlciBhIGhlYWRpbmdcbiAgICBoMixcbiAgICBoMyB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9XG5cbiAgICAvLyBIZWxwZXIgdG8gcmUtYWxsb3cgcGFnZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBjZXJ0YWluIGVsZW1lbnRzIChlLmcuIHByZSwgYmxvY2txdW90ZSwgdHIpXG4gICAgLnByaW50LWJyZWFrLWluc2lkZSB7XG4gICAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIGEgcm93LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gVGhlIGRlZmF1bHQgY29sdW1uIGNvdW50IG9mIGEgZ3JpZC4gQ2hhbmdpbmcgdGhpcyB2YWx1ZSBhZmZlY3RzIHRoZSBsb2dpYyBvZiB0aGUgZ3JpZCBtaXhpbnMsIGFuZCB0aGUgbnVtYmVyIG9mIENTUyBjbGFzc2VzIG91dHB1dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbHVtbi1jb3VudDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gY29sdW1ucyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuLy8vIEBzaW5jZSA2LjEuMFxuJGdyaWQtY29sdW1uLWd1dHRlcjogKFxuICBzbWFsbDogMjBweCxcbiAgbWVkaXVtOiAzMHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgdGhlIGxhc3QgY29sdW1uIGluIGEgcm93IHdpbGwgYWxpZ24gdG8gdGhlIG9wcG9zaXRlIGVkZ2Ugb2YgdGhlIHJvdy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNlbGVjdG9yIHVzZWQgZm9yIGFuIGFsaWFzIG9mIGNvbHVtbiAod2l0aCBAZXh0ZW5kKS4gSWYgYGZhbHNlYCwgbm8gYWxpYXMgaXMgY3JlYXRlZC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRncmlkLWNvbHVtbi1hbGlhczogJ2NvbHVtbnMnICFkZWZhdWx0O1xuXG4vLy8gVGhlIGhpZ2hlc3QgbnVtYmVyIG9mIGAueC11cGAgY2xhc3NlcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUgYmxvY2sgZ3JpZCBDU1MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmxvY2stZ3JpZC1tYXg6IDggIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhbHVlIHRvIHN0b3JlIHRoZSBlbmQgY29sdW1uIGZsb2F0IGRpcmVjdGlvblxuJC16Zi1lbmQtZmxvYXQ6IGlmKCRncmlkLWNvbHVtbi1hbGlnbi1lZGdlLCAkZ2xvYmFsLXJpZ2h0LCAkZ2xvYmFsLWxlZnQpO1xuXG5AaW1wb3J0ICdyb3cnO1xuQGltcG9ydCAnY29sdW1uJztcbkBpbXBvcnQgJ3NpemUnO1xuQGltcG9ydCAncG9zaXRpb24nO1xuQGltcG9ydCAnZ3V0dGVyJztcbkBpbXBvcnQgJ2NsYXNzZXMnO1xuQGltcG9ydCAnbGF5b3V0JztcblxuQGltcG9ydCAnZmxleC1ncmlkJztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENoYW5nZSB0aGUgYmVoYXZpb3Igb2YgY29sdW1ucyBkZWZpbmVkIGluc2lkZSB0aGlzIG1peGluIHRvIHVzZSBhIGRpZmZlcmVudCBjb2x1bW4gY291bnQuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRyb290IFtmYWxzZV1cbi8vLyAgIElmIGBmYWxzZWAsIHNlbGVjdG9ycyBpbnNpZGUgdGhpcyBtaXhpbiB3aWxsIG5lc3QgaW5zaWRlIHRoZSBwYXJlbnQgc2VsZWN0b3IuXG4vLy8gICBJZiBgdHJ1ZWAsIHNlbGVjdG9ycyB3aWxsIG5vdCBuZXN0LlxuQG1peGluIGdyaWQtY29udGV4dChcbiAgJGNvbHVtbnMsXG4gICRyb290OiBmYWxzZVxuKSB7XG4gIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNvbHVtbiBjb3VudCBzbyBpdCBjYW4gYmUgcmUtc2V0IGxhdGVyXG4gICRvbGQtZ3JpZC1jb2x1bW4tY291bnQ6ICRncmlkLWNvbHVtbi1jb3VudDtcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkY29sdW1ucyAhZ2xvYmFsO1xuXG4gIEBpZiAkcm9vdCB7XG4gICAgQGF0LXJvb3QgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgdGhlIG9sZCBjb2x1bW4gY291bnRcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkb2xkLWdyaWQtY29sdW1uLWNvdW50ICFnbG9iYWw7XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCByb3cuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBDb2x1bW4gY291bnQgZm9yIHRoaXMgcm93LiBgbnVsbGAgd2lsbCB1c2UgdGhlIGRlZmF1bHQgY29sdW1uIGNvdW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZHN9ICRiZWhhdmlvciBbbnVsbF1cbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRjZiBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIGEgY2xlYXJmaXguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdyhcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiZWhhdmlvcjogbnVsbCxcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNmOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG5cbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIEBpZiAkY2Yge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICRtYXJnaW46IHJlbS1jYWxjKC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXNpemUpKSAvIDIgKiAtMTtcblxuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxufVxuXG4vLy8gU2V0IGEgZ3JpZCByb3cgc2l6ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuQG1peGluIGdyaWQtcm93LXNpemUoJHNpemU6ICRncmlkLXJvdy13aWR0aCkge1xuICBAaWYgJHNpemUgPT0gZXhwYW5kIHtcbiAgICAkc2l6ZTogbm9uZTtcbiAgfVxuXG4gIG1heC13aWR0aDogJHNpemU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIGNvbHVtbiBiYXNlZCBvbiBhIG51bWJlciBvZiBmYWN0b3JzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGNvbHVtbnNcbi8vLyAgIFdpZHRoIG9mIHRoZSBjb2x1bW4uIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHBlcmNlbnRhZ2UgdmFsdWUgd2lsbCBtYWtlIHRoZSBjb2x1bW4gdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIHNpbmdsZSBkaWdpdCB3aWxsIG1ha2UgdGhlIGNvbHVtbiBzcGFuIHRoYXQgbnVtYmVyIG9mIGNvbHVtbnMgd2lkZSwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSBwYXJlbnQgcm93LlxuLy8vICAgLSBBIGxpc3Qgb2YgdGhlIGZvcm1hdCBcInggb2YgeVwiICh3aXRob3V0IHF1b3Rlcykgd2lsbCBtYWtlIGEgY29sdW1uIHRoYXQgaXMgKngqIGNvbHVtbnMgd2lkZSwgYXNzdW1pbmcgKnkqIHRvdGFsIGNvbHVtbnMgZm9yIHRoZSBwYXJlbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIGNhbGN1bGF0ZWQgcGVyY2VudGFnZSB2YWx1ZS5cbkBmdW5jdGlvbiBncmlkLWNvbHVtbigkY29sdW1ucykge1xuICAkd2lkdGg6IDAlO1xuXG4gIC8vIFBhcnNpbmcgcGVyY2VudHMsIGRlY2ltYWxzLCBhbmQgY29sdW1uIGNvdW50c1xuICBAaWYgdHlwZS1vZigkY29sdW1ucykgPT0gJ251bWJlcicge1xuICAgIEBpZiB1bml0KCRjb2x1bW5zKSA9PSAnJScge1xuICAgICAgJHdpZHRoOiAkY29sdW1ucztcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNvbHVtbnMgPCAxIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyAvICRncmlkLWNvbHVtbi1jb3VudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2luZyBcIm4gb2YgblwiIGV4cHJlc3Npb25zXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGNvbHVtbnMpID09ICdsaXN0JyB7XG4gICAgQGlmIGxlbmd0aCgkY29sdW1ucykgIT0gMyB7XG4gICAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4oKS4gVXNlIHRoZSBmb3JtYXQgXCJuIG9mIG5cIi4nO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UobnRoKCRjb2x1bW5zLCAxKSAvIG50aCgkY29sdW1ucywgMykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFueXRoaW5nIGVsc2UgaXMgaW5jb3JyZWN0XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4oKS4gVXNlIGEgbnVtYmVyLCBkZWNpbWFsLCBwZXJjZW50YWdlLCBvciBcIm4gb2YgblwiLic7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRjb2x1bW5zIFskZ3JpZC1jb2x1bW4tY291bnRdIC0gV2lkdGggb2YgdGhlIGNvbHVtbi4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zLiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGdyaWQtY29sdW1uKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50LFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXNpemUoJGNvbHVtbnMpO1xuICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuXG4gIC8vIEd1dHRlcnNcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgLy8gUG9zaXRpb25cbiAgQGluY2x1ZGUgZ3JpZC1jb2wtcG9zKGF1dG8pO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGdyaWQgY29sdW1uIHJvdy4gVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBhZGRpbmcgYC5yb3dgIGFuZCBgLmNvbHVtbmAgdG8gdGhlIHNhbWUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIFdpZHRoIG9mIHRoZSBndXR0ZXJzIG9uIGVpdGhlciBzaWRlIG9mIHRoZSBjb2x1bW4gcm93LiBSZWZlciB0byB0aGUgYGdyaWQtY29sdW1uLWd1dHRlcigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuQG1peGluIGdyaWQtY29sdW1uLXJvdyhcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLXJvdztcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAmLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW5cbkBmdW5jdGlvbiBncmlkLWNvbChcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudFxuKSB7XG4gIEByZXR1cm4gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AbWl4aW4gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnQsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4oJGNvbHVtbnMsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXJvdygpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tcm93XG5AbWl4aW4gZ3JpZC1jb2wtcm93KFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLXJvdygkZ3V0dGVycyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTZXQgdGhlIHdpZHRoIG9mIGEgZ3JpZCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkd2lkdGggWyRncmlkLWNvbHVtbi1jb3VudF0gLSBXaWR0aCB0byBtYWtlIHRoZSBjb2x1bW4uIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGBncmlkLWNvbHVtbigpYCBmdW5jdGlvbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbkBtaXhpbiBncmlkLWNvbHVtbi1zaXplKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgd2lkdGg6IGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLXNpemUoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXNpemVcbkBtaXhpbiBncmlkLWNvbC1zaXplKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50XG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tc2l6ZSgkY29sdW1ucyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBSZXBvc2l0aW9uIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJHBvc2l0aW9uIC0gSXQgY2FuIGJlOlxuLy8vICAgKiBBIG51bWJlcjogVGhlIGNvbHVtbiB3aWxsIG1vdmUgZXF1YWwgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gY291bnRcbi8vLyAgICAgc3BlY2lmaWVkLiBBIHBvc2l0aXZlIG51bWJlciB3aWxsIHB1c2ggdGhlIGNvbHVtbiB0byB0aGUgcmlnaHQsIHdoaWxlXG4vLy8gICAgIGEgbmVnYXRpdmUgbnVtYmVyIHdpbGwgcHVsbCBpdCB0byB0aGUgbGVmdC5cbi8vLyAgICogYGNlbnRlcmA6IENvbHVtbiB3aWxsIGJlIGNlbnRlcmVkXG4vLy8gICAqIGBhdXRvYDogQ29sdW1uIHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBsZWZ0IChvciB0byB0aGUgcmlnaHQgZm9yIHRoZSBsYXN0IGNvbHVtbikuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKSB7XG4gIC8vIEF1dG8gcG9zaXRpb25pbmdcbiAgQGlmICRwb3NpdGlvbiA9PSBhdXRvIHtcbiAgICAmLCAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgIC8vIExhc3QgY29sdW1uIGFsaWdubWVudFxuICAgIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XG4gICAgICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBmbG9hdDogJGdsb2JhbC1yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQdXNoL3B1bGxcbiAgQGVsc2UgaWYgdHlwZS1vZigkcG9zaXRpb24pID09ICdudW1iZXInIHtcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG5cbiAgLy8gQ2VudGVyIHBvc2l0aW9uaW5nXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKS4gRW50ZXIgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIFwiY2VudGVyXCIgb3IgXCJhdXRvXCIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbihhdXRvKTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgZ3V0dGVycyBvbiBhIGNvbHVtblxuLy8vIEBwYXJhbSB7TnVtYmVyfEtleXdvcmR9ICRndXR0ZXIgW2F1dG9dXG4vLy8gICBTcGFjaW5nIGJldHdlZW4gY29sdW1ucywgYWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgc2luZ2xlIHZhbHVlIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoYXQgZXhhY3Qgc2l6ZS5cbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBndXR0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJGd1dHRlcnMgbWFwLlxuLy8vICAgLSBcImF1dG9cIiB3aWxsIG1ha2UgdGhlIGd1dHRlciByZXNwb25zaXZlLCB1c2luZyB0aGUgJGd1dHRlcnMgbWFwIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIEd1dHRlciBtYXAgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZS4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLWNvbHVtbi1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJGd1dHRlciwgJGd1dHRlcnMpIHtcbiAgICAkcGFkZGluZzogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxufVxuXG4vLy8gQ29sbGFwc2UgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW4gYnkgcmVtb3ZpbmcgdGhlIHBhZGRpbmcuICoqTm90ZToqKiBvbmx5IHVzZSB0aGlzIG1peGluIHdpdGhpbiBhIGJyZWFrcG9pbnQuIFRvIGNvbGxhcHNlIGEgY29sdW1uJ3MgZ3V0dGVycyBvbiBhbGwgc2NyZWVuIHNpemVzLCB1c2UgdGhlIGAkZ3V0dGVyYCBwYXJhbWV0ZXIgb2YgdGhlIGBncmlkLWNvbHVtbigpYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIGdyaWQtY29sdW1uLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKDApO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tZ3V0dGVyKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1ndXR0ZXJcbkBtaXhpbiBncmlkLWNvbC1ndXR0ZXIoXG4gICRndXR0ZXI6IGF1dG8sXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3V0dGVyKCRndXR0ZXIsICRndXR0ZXJzKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWNvbGxhcHNlKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtbi1jb2xsYXBzZVxuQG1peGluIGdyaWQtY29sLWNvbGxhcHNlIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tY29sbGFwc2U7XG59XG5cbi8vLyBTZXRzIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zIHRvIG1hdGNoIGd1dHRlcnNcbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkbWFyZ2luIFthdXRvXVxuLy8vICAgVGhlIGJvdHRvbSBtYXJnaW4gb24gZ3JpZCBjb2x1bW5zLCBhY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gQSBzaW5nbGUgdmFsdWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhhdCBleGFjdCBzaXplLlxuLy8vICAgLSBBIGJyZWFrcG9pbnQgbmFtZSB3aWxsIG1ha2UgdGhlIG1hcmdpbiB0aGUgY29ycmVzcG9uZGluZyBzaXplIGluIHRoZSAkbWFyZ2lucyBtYXAuXG4vLy8gICAtIFwiYXV0b1wiIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHJlc3BvbnNpdmUsIHVzaW5nIHRoZSAkbWFyZ2lucyBtYXAgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcmdpbnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tbWFyZ2luIChcbiAgJG1hcmdpbjogYXV0byxcbiAgJG1hcmdpbnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkbWFyZ2luLCAkbWFyZ2lucykge1xuICAgICRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKTtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIE91dHB1dHMgQ1NTIGNsYXNzZXMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuQG1peGluIGZvdW5kYXRpb24tZ3JpZChcbiAgJHJvdzogJ3JvdycsXG4gICRjb2x1bW46ICdjb2x1bW4nLFxuICAkY29sdW1uLXJvdzogJ2NvbHVtbi1yb3cnLFxuICAkZ3V0dGVyOiAnZ3V0dGVyJyxcbiAgJHB1c2g6ICdwdXNoJyxcbiAgJHB1bGw6ICdwdWxsJyxcbiAgJGNlbnRlcjogJ2NlbnRlcmVkJyxcbiAgJHVuY2VudGVyOiAndW5jZW50ZXJlZCcsXG4gICRjb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgJHVuY29sbGFwc2U6ICd1bmNvbGxhcHNlJyxcbiAgJG9mZnNldDogJ29mZnNldCcsXG4gICRlbmQ6ICdlbmQnLFxuICAkZXhwYW5kZWQ6ICdleHBhbmRlZCcsXG4gICRibG9jazogJ2Jsb2NrJ1xuKSB7XG4gIC8vIFJvd1xuICAuI3skcm93fSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3c7XG5cbiAgICAvLyBDb2xsYXBzaW5nXG4gICAgJi4jeyRjb2xsYXBzZX0ge1xuICAgICAgPiAuI3skY29sdW1ufSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWNvbGxhcHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RpbmdcbiAgICAmIC4jeyRyb3d9IHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGdyaWQtY29sdW1uLWd1dHRlcik7XG5cbiAgICAgICYuI3skY29sbGFwc2V9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCAoZnVsbC13aWR0aCkgcm93XG4gICAgJi4jeyRleHBhbmRlZH0ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuXG4gICAgICAuI3skcm93fSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLiN7JGV4cGFuZGVkfSkgLiN7JHJvd30ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctc2l6ZShleHBhbmQpO1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRncmlkLWNvbHVtbi1ndXR0ZXIpID09ICdtYXAnIHtcbiAgICAgIC8vIFN0YXRpYyAodW5yZXNwb25zaXZlKSByb3cgZ3V0dGVyc1xuICAgICAgLy9cbiAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGdyaWQtY29sdW1uLWd1dHRlciB7XG4gICAgICAgICYuI3skZ3V0dGVyfS0jeyRicmVha3BvaW50fSB7XG4gICAgICAgICAgPiAuI3skY29sdW1ufSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW5cbiAgLiN7JGNvbHVtbn0ge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sO1xuXG4gICAgQGlmICRncmlkLWNvbHVtbi1hbGlnbi1lZGdlIHtcbiAgICAgICYuI3skZW5kfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWVuZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb2x1bW4gcm93XG4gIC8vIFRoZSBkb3VibGUgLnJvdyBjbGFzcyBpcyBuZWVkZWQgdG8gYnVtcCB1cCB0aGUgc3BlY2lmaWNpdHlcbiAgLiN7JGNvbHVtbn0uI3skcm93fS4jeyRyb3d9IHtcbiAgICBmbG9hdDogbm9uZTtcbiAgfVxuXG4gIC8vIFRvIHByb3Blcmx5IG5lc3QgYSBjb2x1bW4gcm93LCBwYWRkaW5nIGFuZCBtYXJnaW4gaXMgcmVtb3ZlZFxuICAuI3skcm93fSAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgIC8vIENvbHVtbiB3aWR0aFxuICAgICAgLiN7JC16Zi1zaXplfS0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXNpemUoJGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBTb3VyY2Ugb3JkZXJpbmdcbiAgICAgIEBpZiAkaSA8ICRncmlkLWNvbHVtbi1jb3VudCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygkaSk7XG4gICAgICAgIH1cblxuICAgICAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoLSRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LSN7JG9mZnNldH0tI3skb30ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1vZmYoJG8pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsb2NrIGdyaWRcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1sYXlvdXQoJGksICcuI3skY29sdW1ufScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xuICAgIC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuXG4gICAgICAuI3skcm93fSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLiN7JGV4cGFuZGVkfS4jeyRyb3d9IC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9LiN7JHJvd30ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbmluZ1xuICAgIC4jeyQtemYtc2l6ZX0tI3skY2VudGVyfSB7XG4gICAgICBAaW5jbHVkZSBncmlkLWNvbC1wb3MoY2VudGVyKTtcbiAgICB9XG5cbiAgICAvLyBHdXR0ZXIgYWRqdXN0bWVudFxuICAgIC4jeyQtemYtc2l6ZX0tI3skdW5jZW50ZXJ9LFxuICAgIC4jeyQtemYtc2l6ZX0tI3skcHVzaH0tMCxcbiAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LTAge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtdW5wb3M7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC4jeyRjb2x1bW59LSN7JGJsb2NrfSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tbWFyZ2luO1xuICB9XG5cbiAgQGlmICRjb2x1bW4gPT0gJ2NvbHVtbicgYW5kIGhhcy12YWx1ZSgkZ3JpZC1jb2x1bW4tYWxpYXMpIHtcbiAgICAuI3skZ3JpZC1jb2x1bW4tYWxpYXN9IHtcbiAgICAgIC8vIHNhc3MtbGludDpkaXNhYmxlLWJsb2NrIHBsYWNlaG9sZGVyLWluLWV4dGVuZFxuICAgICAgQGV4dGVuZCAuY29sdW1uO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gU2l6ZXMgY2hpbGQgZWxlbWVudHMgc28gdGhhdCBgJG5gIG51bWJlciBvZiBpdGVtcyBhcHBlYXIgb24gZWFjaCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWycuY29sdW1uJ10gLSBTZWxlY3RvcihzKSB0byB1c2UgZm9yIGNoaWxkIGVsZW1lbnRzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRndXR0ZXJcbi8vLyAgIFRoZSBndXR0ZXIgdG8gYXBwbHkgdG8gY2hpbGQgZWxlbWVudHMuIEFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHdpbGwgdXNlIHRoZSB2YWx1ZXMgaW4gdGhlICRncmlkLWNvbHVtbi1ndXR0ZXIgbWFwLCBpbmNsdWRpbmcgYnJlYWtwb2ludCBzaXplcy5cbi8vLyAgIC0gQSBmaXhlZCBudW1lcmljIHZhbHVlIHdpbGwgYXBwbHkgdGhpcyBndXR0ZXIgdG8gYWxsIGJyZWFrcG9pbnRzLlxuQG1peGluIGdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNvbHVtbicsXG4gICRndXR0ZXI6IG51bGxcbikge1xuICAmID4gI3skc2VsZWN0b3J9IHtcbiAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICAgLy8gSWYgYSAkZ3V0dGVyIHZhbHVlIGlzIHBhc3NlZFxuICAgIEBpZigkZ3V0dGVyKSB7XG4gICAgICAvLyBHdXR0ZXJzXG4gICAgICBAaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbWFwJyB7XG4gICAgICAgIEBlYWNoICRicmVha3BvaW50LCAkdmFsdWUgaW4gJGd1dHRlciB7XG4gICAgICAgICAgJHBhZGRpbmc6IHJlbS1jYWxjKCR2YWx1ZSkgLyAyO1xuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkYnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgdHlwZS1vZigkZ3V0dGVyKSA9PSAnbnVtYmVyJyBhbmQgc3RyaXAtdW5pdCgkZ3V0dGVyKSA+IDAge1xuICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJGd1dHRlcikgLyAyO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm50aC1vZi10eXBlKDFuKSB7XG4gICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG5cbiAgICAmOm50aC1vZi10eXBlKCN7JG59bisxKSB7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgZXh0cmEgQ1NTIHRvIGJsb2NrIGdyaWQgY2hpbGRyZW4gc28gdGhlIGxhc3QgaXRlbXMgaW4gdGhlIHJvdyBjZW50ZXIgYXV0b21hdGljYWxseS4gQXBwbHkgdGhpcyB0byB0aGUgY29sdW1ucywgbm90IHRoZSByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgaXRlbXMgdGhhdCBhcHBlYXIgaW4gZWFjaCByb3cuXG5AbWl4aW4gZ3JpZC1sYXlvdXQtY2VudGVyLWxhc3QoJG4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdG8gJG4ge1xuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICgxMDAgLSAxMDAvJG4gKiAkaSkgLyAyICogMSU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICY6bnRoLWNoaWxkKCN7JG59bisxKTpudGgtbGFzdC1jaGlsZCgjeyRpfSkge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsZXgtZ3JpZFxuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgYSBmbGV4IGdyaWQgcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfExpc3R9ICRiZWhhdmlvciBbbnVsbF1cbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGZvciB0aGlzIHJvdy4gSWYgc2V0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpLCB0aGUgZ2xvYmFsIGNvbHVtbiBjb3VudCB3aWxsIGJlIHVzZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYmFzZSBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IGJhc2ljIHN0eWxlcyBmcm9tIGJlaW5nIG91dHB1dC4gVXNlZnVsIGlmIHlvdSdyZSBjYWxsaW5nIHRoaXMgbWl4aW4gb24gdGhlIHNhbWUgZWxlbWVudCB0d2ljZSwgYXMgaXQgcHJldmVudHMgZHVwbGljYXRlIENTUyBvdXRwdXQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBoYXZlIHJvdyB3cmFwcGluZyBiZWhhdmlvciBzZXQgdG8gbm93cmFwXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucywgaW4gY2FzZSB0aGUgcm93IGlzIG5lc3RlZC4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBmbGV4LWdyaWQtcm93KFxuICAkYmVoYXZpb3I6IG51bGwsXG4gICRzaXplOiAkZ3JpZC1yb3ctd2lkdGgsXG4gICRjb2x1bW5zOiBudWxsLFxuICAkYmFzZTogdHJ1ZSxcbiAgJHdyYXA6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xuXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcnMpO1xuXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKCRzaXplKTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAaWYgJGJhc2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgJHdyYXA7XG4gIH1cblxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zLCAkYmFzZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBgZmxleGAgcHJvcGVydHkgZm9yIGEgZmxleCBncmlkIGNvbHVtbi4gSXQgYWNjZXB0cyBhbGwgb2YgdGhlIHNhbWUgdmFsdWVzIGFzIHRoZSBiYXNpYyBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24sIGFsb25nIHdpdGggdHdvIGV4dHJhczpcbi8vLyAgIC0gYGV4cGFuZGAgKHRoZSBkZWZhdWx0KSB3aWxsIG1ha2UgdGhlIGNvbHVtbiBleHBhbmQgdG8gZmlsbCBzcGFjZS5cbi8vLyAgIC0gYHNocmlua2Agd2lsbCBtYWtlIHRoZSBjb2x1bW4gY29udHJhY3QsIHNvIGl0IG9ubHkgdGFrZXMgdXAgdGhlIGhvcml6b250YWwgc3BhY2UgaXQgbmVlZHMuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uXG5AZnVuY3Rpb24gZmxleC1ncmlkLWNvbHVtbigkY29sdW1uczogZXhwYW5kKSB7XG4gICRmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuXG4gIEBpZiAkY29sdW1ucyA9PSBzaHJpbmsge1xuICAgICRmbGV4OiAwIDAgYXV0bztcbiAgfVxuICBAZWxzZSBpZiAkY29sdW1ucyAhPSBleHBhbmQge1xuICAgICRmbGV4OiAwIDAgZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG5cbiAgQHJldHVybiAkZmxleDtcbn1cblxuLy8vIENyZWF0ZXMgYSBjb2x1bW4gZm9yIGEgZmxleCBncmlkLiBCeSBkZWZhdWx0LCB0aGUgY29sdW1uIHdpbGwgc3RyZXRjaCB0byB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHNpemluZyBjbGFzc2VzLCBvciBieSB1c2luZyB0aGUgYHVuc3RhY2tgIGNsYXNzIG9uIHRoZSBwYXJlbnQgZmxleCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycyB3aWR0aC4gU2VlIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyYCBtaXhpbi5cbkBtaXhpbiBmbGV4LWdyaWQtY29sdW1uKFxuICAkY29sdW1uczogZXhwYW5kLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIC8vIEJhc2UgcHJvcGVydGllc1xuICBAaW5jbHVkZSBmbGV4LWdyaWQtc2l6ZSgkY29sdW1ucyk7XG5cbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAvLyBmaXhlcyByZWNlbnQgQ2hyb21lIHZlcnNpb24gbm90IGxpbWl0aW5nIGNoaWxkIHdpZHRoXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0OTM0NTg2L3doaXRlLXNwYWNlLW5vd3JhcC1hbmQtZmxleGJveC1kaWQtbm90LXdvcmstaW4tY2hyb21lXG4gIEBpZiAkY29sdW1ucyA9PSBleHBhbmQge1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGJsb2NrIGdyaWQgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBjb2x1bW5zIHRvIGRpc3BsYXkgb24gZWFjaCByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHVzZSB0byB0YXJnZXQgY29sdW1ucyB3aXRoaW4gdGhlIHJvdy5cbkBtaXhpbiBmbGV4LWdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNvbHVtbidcbikge1xuICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICRwY3Q6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICBmbGV4OiAwIDAgJHBjdDtcbiAgICBtYXgtd2lkdGg6ICRwY3Q7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHdpZHRoIGZsZXggZ3JpZCBjb2x1bW4uXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbkBtaXhpbiBmbGV4LWdyaWQtc2l6ZSgkY29sdW1uczogbnVsbCkge1xuICAkY29sdW1uczogJGNvbHVtbnMgb3IgZXhwYW5kO1xuXG4gIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuXG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxuICBAaWYgJGNvbHVtbnMgIT0gZXhwYW5kIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xuICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG59XG5cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC1ncmlkIHtcbiAgLy8gUm93XG4gIC5yb3cge1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3c7XG5cbiAgICAvLyBOZXN0aW5nIGJlaGF2aW9yXG4gICAgJiAucm93IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3cobmVzdCwgJGJhc2U6IGZhbHNlKTtcblxuICAgICAgJi5jb2xsYXBzZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgcm93XG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG5cbiAgICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5leHBhbmRlZCkgLnJvdyB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG4gICAgfVxuXG4gICAgJi5jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRvIG5lZ2F0aXZlIG1hcmdpbnNcbiAgICAvLyBGcm9tIGNvbGxhcHNlZCBjaGlsZFxuICAgICYuaXMtY29sbGFwc2UtY2hpbGQsXG4gICAgJi5jb2xsYXBzZSA+IC5jb2x1bW4gPiAucm93IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuY29sdW1uIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uO1xuICB9XG5cbiAgLy8gQ29sdW1uIHJvd1xuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XG4gIC5jb2x1bW4ucm93LnJvdyB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAvLyBUbyBwcm9wZXJseSBuZXN0IGEgY29sdW1uIHJvdywgcGFkZGluZyBhbmQgbWFyZ2luIGlzIHJlbW92ZWRcbiAgLnJvdyAuY29sdW1uLnJvdy5yb3cge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRpKTtcbiAgICAgICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tb2Zmc2V0KCRvKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCbG9jayBncmlkXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xuICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1sYXlvdXQoJGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLy8gU2l6aW5nIChleHBhbmQpXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAuI3skLXpmLXNpemV9LWV4cGFuZCB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xuICAgICAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XG4gICAgICAgIC5yb3cuI3skLXpmLXNpemV9LXVuc3RhY2sge1xuICAgICAgICAgID4gLmNvbHVtbiB7XG4gICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKDEwMCUpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS1jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tdW5jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNpemluZyAoc2hyaW5rKVxuICAuc2hyaW5rIHtcbiAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKHNocmluayk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC5jb2x1bW4tYmxvY2sge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW1hcmdpbjtcbiAgfVxuXG4gIC5jb2x1bW5zIHtcbiAgICBAZXh0ZW5kIC5jb2x1bW47IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG5cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gRW5hYmxlcyB0aGUgWFkgZ3JpZC5cbi8vLyBAdHlwZSBCb29sZWFuXG4keHktZ3JpZDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIG9mIGEgZ3JpZCBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb250YWluZXI6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgZ3JpZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBtYXJnaW4gYmV0d2VlbiBjZWxscyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIHdoZW4gdXNpbmcgdGhlIG1hcmdpbiBncmlkLiBUbyB1c2UganVzdCBvbmUgc2l6ZSwgc2V0IHRoZSB2YXJpYWJsZSB0byBhIG51bWJlciBpbnN0ZWFkIG9mIGEgbWFwLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtbWFyZ2luLWd1dHRlcnM6IChcbiAgc21hbGw6IDIwcHgsXG4gIG1lZGl1bTogMzBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2YgcGFkZGluZyBpbiBjZWxscyBhdCBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIHdoZW4gdXNpbmcgdGhlIHBhZGRpbmcgZ3JpZC4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbiRncmlkLXBhZGRpbmctZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIHBhZGRpbmcgdG8gdXNlIHdoZW4gcGFkZGluZyB0aGUgZ3JpZC1jb250YWluZXIuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1jb250YWluZXItcGFkZGluZzogJGdyaWQtcGFkZGluZy1ndXR0ZXJzICFkZWZhdWx0O1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggdG8gYXBwbHkgdG8gYSBncmlkIGNvbnRhaW5lclxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29udGFpbmVyLW1heDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjZWxscyBpbiBhbiBYWSBibG9jayBncmlkLlxuLy8vIEB0eXBlIE51bWJlclxuJHh5LWJsb2NrLWdyaWQtbWF4OiA4ICFkZWZhdWx0O1xuXG5AaW1wb3J0ICdndXR0ZXJzJztcbkBpbXBvcnQgJ2dyaWQnO1xuQGltcG9ydCAnY2VsbCc7XG5AaW1wb3J0ICdmcmFtZSc7XG5AaW1wb3J0ICdwb3NpdGlvbic7XG5AaW1wb3J0ICdsYXlvdXQnO1xuQGltcG9ydCAnY29sbGFwc2UnO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGUgZ3V0dGVycyBmb3IgYSBjZWxsL2NvbnRhaW5lci5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgZWl0aGVyIG1hcmdpbiBvciBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbmVnYXRpdmUgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIGd1dHRlciBhcyBhIG5lZ2F0aXZlIHZhbHVlLiBDb21tb25seSB1c2VkIGZvciBuZXN0ZWQgZ3JpZHMuXG5AbWl4aW4geHktZ3V0dGVycyhcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG5lZ2F0aXZlOiBmYWxzZVxuKSB7XG4gICRvcGVyYXRvcjogaWYoJG5lZ2F0aXZlLCAnLScsICcnKTtcblxuICAvLyBJZiB3ZSBoYXZlIGRlY2xhcmVkIG5lZ2F0aXZlIGd1dHRlcnMsIGZvcmNlIHR5cGUgdG8gYG1hcmdpbi5cbiAgJGd1dHRlci10eXBlOiBpZigkbmVnYXRpdmUsICdtYXJnaW4nLCAkZ3V0dGVyLXR5cGUpO1xuXG4gIC8vIE91dHB1dCBvdXIgbWFyZ2luIGd1dHRlcnMuXG4gIEBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcpIHtcbiAgICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZShhdXRvLCAkZ3V0dGVycykge1xuICAgICAgJGd1dHRlcjogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSkgLyAyO1xuXG4gICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgI3skZ3V0dGVyLXR5cGV9LSN7JHZhbHVlfTogdW5xdW90ZShcIiN7JG9wZXJhdG9yfSN7JGd1dHRlcn1cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbnVtYmVyJykge1xuICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXJzKSAvIDI7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBtYXggd2lkdGggY29udGFpbmVyLCBkZXNpZ25lZCB0byBob3VzZSB5b3VyIGdyaWQgY29udGVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRncmlkLWNvbnRhaW5lcl0gLSBhIHdpZHRoIHRvIGxpbWl0IHRoZSBjb250YWluZXIgdG8uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskZ3JpZC1jb250YWluZXItcGFkZGluZ10gLSBwYWRkaW5ncyBvZiB0aGUgY29udGFpbmVyLlxuQG1peGluIHh5LWdyaWQtY29udGFpbmVyKFxuICAkd2lkdGg6ICRncmlkLWNvbnRhaW5lcixcbiAgJHBhZGRpbmc6ICRncmlkLWNvbnRhaW5lci1wYWRkaW5nXG4pIHtcbiAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJHBhZGRpbmcsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG5cbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB5b3VyIGZsZXggY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW2hvcml6b250YWxdIC0gRWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uIG9mIGNlbGxzIHdpdGhpbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR3cmFwIFt0cnVlXSAtIElmIHRoZSBjZWxscyB3aXRoaW4gc2hvdWxkIHdyYXAgb3Igbm90LlxuQG1peGluIHh5LWdyaWQoXG4gICRkaXJlY3Rpb246IGhvcml6b250YWwsXG4gICR3cmFwOiB0cnVlXG4pIHtcbiAgJGRpcmVjdGlvbjogaWYoJGRpcmVjdGlvbiA9PSAnaG9yaXpvbnRhbCcsIHJvdywgY29sdW1uKTtcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogJGRpcmVjdGlvbiAkd3JhcDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBzaXplIG9mIGEgY2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRzaXplIFskZ3JpZC1jb2x1bW5zXSAtIFNpemUgdG8gbWFrZSB0aGUgY2VsbC4gWW91IGNhbiBwYXNzIGEgdmFsdWUgaW4gbXVsdGlwbGUgZm9ybWF0cywgc3VjaCBhcyBgNmAsIGA1MCVgLCBgMSBvZiAyYCBvciBgMS8zYC5cbkBmdW5jdGlvbiB4eS1jZWxsLXNpemUoXG4gICRzaXplOiAkZ3JpZC1jb2x1bW5zXG4pIHtcbiAgLy8gUGFyc2luZyBwZXJjZW50cywgZGVjaW1hbHMsIG4gb2YgbiBhbmQgbnVtYmVyIGNvdW50c1xuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gJ251bWJlcicge1xuICAgIEBpZiB1bml0KCRzaXplKSA9PSAnJScge1xuICAgICAgJHNpemU6ICRzaXplO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkc2l6ZSA8IDEge1xuICAgICAgJHNpemU6IHBlcmNlbnRhZ2UoJHNpemUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkc2l6ZTogcGVyY2VudGFnZSgkc2l6ZSAvICRncmlkLWNvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNpbmcgXCJuIG9mIG5cIiBvciBcIm4vblwiIGV4cHJlc3Npb25zXG4gIEBlbHNlIGlmIHR5cGUtb2YoJHNpemUpID09ICdsaXN0JyB7XG4gICAgQGlmIGxlbmd0aCgkc2l6ZSkgIT0gMyB7XG4gICAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSB0aGUgZm9ybWF0IFwibiBvZiBuXCIgb3IgXCJuL25cIi4nO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkc2l6ZTogcGVyY2VudGFnZShudGgoJHNpemUsIDEpIC8gbnRoKCRzaXplLCAzKSk7XG4gICAgfVxuICB9XG4gIC8vIEFueXRoaW5nIGVsc2UgaXMgaW5jb3JyZWN0XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgeHktY2VsbC1zaXplKCkuIFVzZSBhIG51bWJlciwgZGVjaW1hbCwgcGVyY2VudGFnZSwgb3IgXCJuIG9mIG5cIiAvIFwibi9uXCIuJztcbiAgfVxuXG4gIEByZXR1cm4gJHNpemU7XG59XG5cbi8vLyBTZXRzIGJhc2UgZmxleCBwcm9wZXJ0aWVzIGZvciBjZWxscy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCBvciBgZ3Jvd2AuXG5AbWl4aW4geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcbiAgICAvLyBUaGlzIGlzIHRoZSBiYXNlIHN0eWxlLCBhbGwgb3RoZXJzIGluaGVyaXQgZnJvbSBpdFxuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IDBweDtcbiAgICBtaW4td2lkdGg6IDBweDtcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ2F1dG8nKSB7XG4gICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ3NocmluaycpIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ2dyb3cnKSB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gIH1cbn1cblxuLy8vIFJlc2V0cyBhIGNlbGxzIHdpZHRoIChvciBoZWlnaHQgaWYgdmVydGljYWwgaXMgdHJ1ZSkgYXMgd2VsbCBhcyBzdHJpcHMgaXRzIGd1dHRlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1yZXNldCgkdmVydGljYWw6IHRydWUpIHtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIHdpZHRoLCBoZWlnaHQpO1xuICAjeyRkaXJlY3Rpb259OiBhdXRvO1xuICBtYXgtI3skZGlyZWN0aW9ufTogbm9uZTtcbn1cblxuLy8gU2V0cyBvdXIgY2VsbCB3aWR0aHMgb3IgaGVpZ2h0cyBkZXBlbmRpbmcgb24gZ3V0dGVyIHR5cGUuXG5AbWl4aW4gLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJG1hcmdpbi1ndXR0ZXIsICR2ZXJ0aWNhbCkge1xuICAkZGlyZWN0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgaGVpZ2h0LCB3aWR0aCk7XG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcbiAgICAkdmFsOiBpZigkbWFyZ2luLWd1dHRlciA9PSAwLCAxMDAlLCBjYWxjKDEwMCUgLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcbiAgICAjeyRkaXJlY3Rpb259OiAkdmFsO1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnYXV0bycpIHtcbiAgICAjeyRkaXJlY3Rpb259OiBhdXRvO1xuICAgICR2YWw6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsIDEwMCUsIGNhbGMoMTAwJSAtICN7cmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpfSkpO1xuICB9XG4gIEBlbHNlIGlmICgkc2l6ZSA9PSAnc2hyaW5rJykge1xuICAgICN7JGRpcmVjdGlvbn06IGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2YWw6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsICN7eHktY2VsbC1zaXplKCRzaXplKX0sIGNhbGMoI3t4eS1jZWxsLXNpemUoJHNpemUpfSAtICN7cmVtLWNhbGMoJG1hcmdpbi1ndXR0ZXIpfSkpO1xuICAgICN7JGRpcmVjdGlvbn06ICR2YWw7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBjZWxsIGZvciB5b3VyIGdyaWQuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKGRlZmF1bHQpIGZvciAxMDAlIHdpZHRoLCBgYXV0b2AgdG8gdXNlIHVwIGF2YWlsYWJsZSBzcGFjZSBhbmQgYHNocmlua2AgdG8gdXNlIHVwIG9ubHkgcmVxdWlyZWQgc3BhY2UuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbkBtaXhpbiB4eS1jZWxsKFxuICAkc2l6ZTogZnVsbCxcbiAgJGd1dHRlci1vdXRwdXQ6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IHJpZ2h0IGxlZnQsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJGJwLWlzLWZhbGxiYWNrOiBmYWxzZTtcblxuICBAaWYoJGJyZWFrcG9pbnQgPT0gbnVsbCkge1xuICAgIC8vIElmIGAkYnAtc2l6ZWAgaXMgYXZhaWxhYmxlIHRoZW4gdXNlIHRoaXMsIG90aGVyd2lzZSByZXZlcnQgdG8gdGhlIHNtYWxsZXN0IGJwLlxuICAgIEBpZih2YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIGFuZCB0eXBlLW9mKCQtemYtc2l6ZSkgIT0gJ251bWJlcicpIGFuZCAkLXpmLXNpemUgIT0gbnVsbCB7XG4gICAgICAkYnJlYWtwb2ludDogJC16Zi1zaXplO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnJlYWtwb2ludDogJC16Zi16ZXJvLWJyZWFrcG9pbnQ7XG4gICAgICAkYnAtaXMtZmFsbGJhY2s6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IHRoZSBndXR0ZXIgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50L3ZhbHVlLlxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIGZhbGxiYWNrLCB1c2UgYSBmYWxsYmFjayBndXR0ZXIgYXMgd2VsbFxuICBAaWYgKCRicC1pcy1mYWxsYmFjayA9PSB0cnVlIGFuZCAkZ3V0dGVyID09IG51bGwpIHtcbiAgICAkZ3V0dGVyOiAwO1xuICB9XG5cbiAgQGlmKCRndXR0ZXIgIT0gbnVsbCkge1xuICAgIC8vIEJhc2UgZmxleCBwcm9wZXJ0aWVzXG4gICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCRzaXplKTtcblxuICAgIEBpZigkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcbiAgICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICRndXR0ZXIsICR2ZXJ0aWNhbCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsIDAsICR2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgQGlmICRndXR0ZXItb3V0cHV0IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuICd4eS1jZWxsOiBubyBndXR0ZXJzIHdlcmUgZm91bmQgaW4gYCRndXR0ZXJzYCBmb3IgXCIkYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIiwgY2VsbCB3YXMgbm90IGdlbmVyYXRlZGAnXG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCBzaXplZCBncmlkLiBVc2VkIHRvIGdlbmVyYXRlIG91ciBncmlkIGNsYXNzZXMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAgKGRlZmF1bHQpIGZvciAxMDAlIHdpZHRoLCBgYXV0b2AgdG8gdXNlIHVwIGF2YWlsYWJsZSBzcGFjZSBhbmQgYHNocmlua2AgdG8gdXNlIHVwIG9ubHkgcmVxdWlyZWQgc3BhY2UuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1zdGF0aWMoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcblxuICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAkZ3V0dGVyLXBvc2l0aW9uOiBpZigkdmVydGljYWwgPT0gdHJ1ZSwgdG9wIGJvdHRvbSwgbGVmdCByaWdodCk7XG5cbiAgQGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJykge1xuICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsICRndXR0ZXIsICR2ZXJ0aWNhbCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIC14eS1jZWxsLXByb3BlcnRpZXMoJHNpemUsIDAsICR2ZXJ0aWNhbCk7XG4gIH1cblxuICAvLyBJZiB3ZSB3YW50IHRvIG91dHB1dCB0aGUgZ3V0dGVyc1xuICBAaWYoJGd1dHRlci1vdXRwdXQpIHtcbiAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8gcGFzcyBicmVha3BvaW50IGluIGhlcmUgdG9vLlxuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgfVxufVxuIiwiLy8vIE1vZGlmaWVzIGEgZ3JpZCB0byBnaXZlIGl0IFwiZnJhbWVcIiBiZWhhdmlvciAobm8gb3ZlcmZsb3csIG5vIHdyYXAsIHN0cmV0Y2ggYmVoYXZpb3IpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0ZWQgW2ZhbHNlXSAtIElzIGdyaWQgbmVzdGVkIG9yIG5vdC4gSWYgbmVzdGVkIGlzIHRydWUgdGhpcyBzZXRzIHRoZSBmcmFtZSB0byAxMDAlIGhlaWdodCwgb3RoZXJ3aXNlIHdpbGwgYmUgMTAwdmguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbbnVsbF0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlIFt0cnVlXSAtIEluY2x1ZGUgdGhlIGJhc2Ugc3R5bGVzIHRoYXQgZG9uJ3QgdmFyeSBwZXIgYnJlYWtwb2ludC5cbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkbmVzdGVkOiBmYWxzZSxcbiAgJGd1dHRlcnM6IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkaW5jbHVkZS1iYXNlOiB0cnVlXG4pIHtcblxuICBAaWYgJGluY2x1ZGUtYmFzZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cblxuICBAaWYgJGJyZWFrcG9pbnQgPT0gbnVsbCBhbmQgdHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKCR2ZXJ0aWNhbCwgJG5lc3RlZCwgJGd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gR2V0IG91ciBndXR0ZXJzIGlmIGFwcGxpY2FibGVcbiAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBhIGd1dHRlciwgYWRkIGl0IHRvIHRoZSB3aWR0aC9oZWlnaHRcbiAgICBAaWYgJGd1dHRlciB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICB3aWR0aDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHdpZHRoOiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG5AbWl4aW4geHktY2VsbC1ibG9jayhcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcblxuICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9IEBlbHNlIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7XG59XG5cbi8vLyBDb250YWluZXIgZm9yIGluc2lkZSBhIGdyaWQgZnJhbWUgY29udGFpbmluZyBtdWx0aXBsZSBibG9ja3MuIFR5cGljYWxseSB1c2VkXG4vLy8gYXMgYSBtb2RpZmllciBmb3IgYSBgLmNlbGxgIHRvIGFsbG93IHRoZSBjZWxsIHRvIHBhc3MgYWxvbmcgZmxleCBzaXppbmdcbi8vLyBjb25zdHJhaW50cyAvIGZyb20gcGFyZW50cyB0byBjaGlsZHJlbi5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcblxuICA+IC5ncmlkLXgge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0L2JvdHRvbSBieSBgJG5gIGNvbHVtbnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFNpemUgdG8gb2Zmc2V0IGJ5LiBZb3UgY2FuIHBhc3MgaW4gYW55IHZhbHVlIGFjY2VwdGVkIGJ5IHRoZSBgemYtY2VsbCgpYCBtaXhpbiwgc3VjaCBhcyBgNmAsIGA1MCVgLCBvciBgMSBvZiAyYC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gTWFwIG9mIGd1dHRlcnMgb3Igc2luZ2xlIHZhbHVlIHRvIHVzZSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIFRoZSB0eXBlIG9mIGd1dHRlciB0byB1c2UuIENhbiBiZSBgbWFyZ2luYCBvciBgcGFkZGluZ2Bcbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkYnJlYWtwb2ludCBbJC16Zi16ZXJvLWJyZWFrcG9pbnRdIC0gU2luZ2xlIHZhbHVlLCBicmVha3BvaW50IG5hbWUsIG9yIGxpc3Qgb2YgYnJlYWtwb2ludCBuYW1lcyB0byB1c2UgZm9yIGAkZ3V0dGVyc2AuIFNlZSBgLXpmLWJyZWFrcG9pbnQtdmFsdWUoKWAuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG9mZnNldC4gSWYgc2V0IHRvIHRydWUgd2lsbCBhcHBseSBtYXJnaW4tdG9wIGluc3RlYWQuXG5AbWl4aW4geHktY2VsbC1vZmZzZXQoXG4gJG4sXG4gJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICRicmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludCxcbiAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsLCAndG9wJywgJGdsb2JhbC1sZWZ0KTtcblxuICBAaW5jbHVkZSAtemYtYnJlYWtwb2ludC12YWx1ZSgkYnJlYWtwb2ludCwgJGd1dHRlcnMpIHtcbiAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XG4gICAgJGd1dHRlci1tYXJnaW46IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgJGd1dHRlciwgMCk7XG4gICAgJHNpemU6IGlmKCRndXR0ZXItbWFyZ2luID09IDAsICN7eHktY2VsbC1zaXplKCRuKX0sIGNhbGMoI3t4eS1jZWxsLXNpemUoJG4pfSArICN7JGd1dHRlci1tYXJnaW59KSk7XG5cbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogI3skc2l6ZX07XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFNpemVzIGNoaWxkIGVsZW1lbnRzIHNvIHRoYXQgYCRuYCBudW1iZXIgb2YgaXRlbXMgYXBwZWFyIG9uIGVhY2ggcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRuIC0gTnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRpc3BsYXkgcGVyIHJvdy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFsnLmNlbGwnXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZ3V0dGVyLW91dHB1dCBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAgb3IgYHBhZGRpbmdgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbcmlnaHQgbGVmdF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBicmVha3BvaW50IHRvIHVzZSBmb3IgdGhlIGNlbGwgZ2VuZXJhdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY2VsbCcsXG4gICRndXR0ZXItb3V0cHV0OiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRzaXplOiBwZXJjZW50YWdlKDEvJG4pO1xuXG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwoJHNpemUsICRndXR0ZXItb3V0cHV0LCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uLCAkYnJlYWtwb2ludCwgJHZlcnRpY2FsKTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gQ29sbGFwc2VzIHRoZSBncmlkIGEgY2VsbHMgd2l0aGluIGl0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbLmNlbGxdIC0gVGhlIGNoaWxkIGVsZW1lbnQgdG8gcmVtb3ZlIHRoZSBndXR0ZXIgZnJvbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFRoZSB0eXBlIG9mIGd1dHRlciB0byByZW1vdmUuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbnMgdG8gcmVtb3ZlIGd1dHRlcnMgZnJvbS4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbWluLWJyZWFrcG9pbnQgWyQtemYtemVyby1icmVha3BvaW50XSAtIE1pbmltdW0gYnJlYWtwb2ludCBpbiBgJGJyZWFrcG9pbnQtY2xhc3Nlc2AgZm9yIHdoaWNoIHRvIGNvbGxhcHNlIHRoZSBndXR0ZXIuXG5AbWl4aW4geHktZ3JpZC1jb2xsYXBzZShcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG1pbi1icmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludFxuKSB7XG4gIC8vIEZpcnN0LCBsZXRzIG5lZ2F0ZSBhbnkgbWFyZ2lucyBvbiB0aGUgdG9wIGxldmVsXG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGV4Y2x1ZGVkLWJwczogLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkbWluLWJyZWFrcG9pbnQpO1xuXG4gICAgLy8gT3V0cHV0IG5ldyB3aWR0aHMgdG8gbm90IGluY2x1ZGUgZ3V0dGVyc1xuICAgIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZihzbC1jb250YWluKCRleGNsdWRlZC1icHMsICRicCkpIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICAgICAgPiAuI3skYnB9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksICRndXR0ZXItb3V0cHV0OiBmYWxzZSwgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicCkge1xuICAgICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICAgICAvLyBTaXppbmcgKHBlcmNlbnRhZ2UpXG4gICAgICAgICAgICA+IC4jeyRicH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgJGd1dHRlci1vdXRwdXQ6IGZhbHNlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLSN7JHZhbHVlfTogMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLyBNYXJnaW4gR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmFzZS1ncmlkLWNsYXNzZXMge1xuXG4gIC8vIEdyaWQgQ29udGFpbmVyXG4gIC5ncmlkLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXI7XG5cbiAgICAmLmZsdWlkIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUpO1xuICAgIH1cblxuICAgICYuZnVsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigxMDAlLCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIC5ncmlkLXgge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQ7XG4gIH1cblxuICAuY2VsbCB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKCk7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGdyaWQtY29sdW1ucywgZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG5cbiAgICAmLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xuICAgIH1cblxuICAgICYuc2hyaW5rIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgIH1cblxuICB9XG4gIC5ncmlkLXgge1xuICAgID4gLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UpO1xuICAgIH1cblxuICAgID4gLnNocmluayB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhzaHJpbmssIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBBdXRvIHdpZHRoXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2svd29ya2Fyb3VuZCwgc2VlIHRoZXNlIGlzc3VlcyAmIFBScyBmb3IgdGhlIGJhY2tzdG9yeTpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvcHVsbC8xMDIyMiBhbmRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAxNjRcbiAgICAuZ3JpZC14IHtcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1hdXRvIHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJS14eS1jZWxsLWJhc2Utc2hyaW5rLWhvcml6b250YWwtI3skLXpmLXNpemV9IHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgXCJzaHJpbmtcIiBtb2RpZmllclxuICAgIEBpZiBub3QoJC16Zi1zaXplID09IHNtYWxsKSB7XG4gICAgICAuZ3JpZC14ID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay1ob3Jpem9udGFsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksIGZhbHNlLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHdpZHRoIHdoZW4gdXNpbmcgYC5ncmlkLW1hcmdpbi14YCBub3Qgb24gYC5ncmlkLXhgXG4gIC5ncmlkLW1hcmdpbi14Om5vdCguZ3JpZC14KSA+IC5jZWxsIHtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC8vIFJlc2V0IGhlaWdodCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teWAgbm90IG9uIGAuZ3JpZC15YFxuICAuZ3JpZC1tYXJnaW4teTpub3QoLmdyaWQteSkgPiAuY2VsbCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGNsYXNzLWJyZWFrcG9pbnQsICRndXR0ZXItYnJlYWtwb2ludCwgJHZlcnRpY2FsKSB7XG4gICRwcmVmaXg6IGlmKCRjbGFzcy1icmVha3BvaW50ID09ICQtemYtemVyby1icmVha3BvaW50LCAnJywgJyN7JGNsYXNzLWJyZWFrcG9pbnR9LScpO1xuICA+IC4jeyRwcmVmaXh9YXV0byB7XG4gICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoYXV0bywgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gID4gLiN7JHByZWZpeH1zaHJpbmsge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICRjbGFzc25hbWU6IGlmKCR2ZXJ0aWNhbCwgJy4jeyRjbGFzcy1icmVha3BvaW50fS0jeyRpfScsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nKTtcblxuICAgID4gI3skY2xhc3NuYW1lfSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkaSwgZmFsc2UsICRicmVha3BvaW50OiAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbDogJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWFyZ2luIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LW1hcmdpbi1ncmlkLWNsYXNzZXMoXG4gICRndXR0ZXItcG9zaXRpb246IGxlZnQgcmlnaHQsXG4gICR2ZXJ0aWNhbDogZmFsc2UsXG4gICR3cmFwcGluZy1zZWxlY3RvcjogJy5ncmlkLW1hcmdpbi14J1xuKXtcbiAgI3skd3JhcHBpbmctc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSwgJGd1dHRlci1wb3NpdGlvbjogJGd1dHRlci1wb3NpdGlvbik7XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgLy8gYmFzZSBzdHlsZXMgbmVlZCB0byBhbGwgYmUgYmVmb3JlIHRoZSBhdXRvIGFuZCBzaHJpbmsgc3R5bGVzXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkgYW5kICQtemYtc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC5jZWxsIHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYygkYnJlYWtwb2ludDogJC16Zi1zaXplLCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuXG4gICAgICAvLyBUaGlzIGlzIHB1cmVseSBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzIC0gdGhlIG1hcmdpbiBncmlkIGhhcyB0byBnbyBiYWNrIGFuZCBhZGp1c3Qgd2lkdGhzIChvciBoZWlnaHRzKVxuICAgICAgLy8gZm9yIGFsbCBwcmlvciBicmVha3BvaW50cy5cbiAgICAgIC8vIEFzIHRoZWlyIGd1dHRlciBpcyBkZWZpbmVkIHdpdGggdGhlaXIgd2lkdGgvaGVpZ2h0LCBldmVuIGJyZWFrcG9pbnQgd2l0aG91dCBhIG5ldyBtYXJnaW4gbXVzdCBiZVxuICAgICAgLy8gZ2VuZXJhdGVkIHRvIG5vdCBoYXZpbmcgdGhlaXIgd2lkdGgvaGVpZ2h0IG92ZXJyaWRlZCBieSByZS1hZGp1c3RlZCBzbWFsbGVyIGJyZWFrcG9pbnRzLlxuICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICBAaW5jbHVkZSAteHktYnJlYWtwb2ludC1jZWxsLWNsYXNzZXMoJGJwLCAkLXpmLXNpemUsICR2ZXJ0aWNhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCQtemYtc2l6ZSwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQYWRkaW5nIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LXBhZGRpbmctZ3JpZC1jbGFzc2VzIHtcbiAgLmdyaWQtcGFkZGluZy14IHtcblxuICAgIC8vIE5lZ2F0aXZlIG1hcmdpbiBmb3IgbmVzdGVkIGdyaWRzXG4gICAgLmdyaWQtcGFkZGluZy14IHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIGdyaWRzIHdpdGhpbiBgZ3JpZC1jb250YWluZXIvZ3JpZC1jb250YWluZXIuZmx1aWRgXG4gICAgLy8gVGhpcyBhbGxvd3MgbWFyZ2luIGFuZCBwYWRkaW5nIGdyaWRzIHRvIGxpbmUgdXAgd2l0aCBlYWNob3RoZXJcbiAgICAuZ3JpZC1jb250YWluZXI6bm90KC5mdWxsKSA+ICYge1xuICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuICAgIH1cblxuICAgIC8vIEJhc2UgY2VsbCBzdHlsZXNcbiAgICA+IC5jZWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQmxvY2sgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktYmxvY2stZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLW91dHB1dDogZmFsc2UsICRndXR0ZXItdHlwZTogcGFkZGluZywgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHh5LWJsb2NrLWdyaWQtbWF4IHtcbiAgICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgICAgLy8gZm9yIHByaW9yIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSByZXNwb25zaXZlIGd1dHRlci5cbiAgICAgICAgQGlmKHR5cGUtb2YoJGdyaWQtbWFyZ2luLWd1dHRlcnMpID09ICdtYXAnIGFuZCBtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJC16Zi1zaXplKSkge1xuICAgICAgICAgIEBlYWNoICRicCBpbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgQGlmKG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkYnApKSB7XG4gICAgICAgICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JGJwfS11cC0jeyRpfSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItb3V0cHV0OiBmYWxzZSwgJGd1dHRlci10eXBlOiBtYXJnaW4sICRicmVha3BvaW50OiAkLXpmLXNpemUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC5ncmlkLW1hcmdpbi14LiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1sYXlvdXQoJG46ICRpLCAkc2VsZWN0b3I6ICcuY2VsbCcsICRndXR0ZXItb3V0cHV0OiBmYWxzZSwgJGd1dHRlci10eXBlOiBtYXJnaW4sICRicmVha3BvaW50OiAkLXpmLXNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbGxhcHNlIGNsYXNzZXNcbkBtaXhpbiB4eS1jb2xsYXBzZS1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkOiB0cnVlLCAkcGFkZGluZy1ncmlkOiB0cnVlKSB7XG4gIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICAgIC4jeyRicH0tbWFyZ2luLWNvbGxhcHNlIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb2xsYXBzZSgkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAgIC4jeyRicH0tcGFkZGluZy1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkbWluLWJyZWFrcG9pbnQ6ICRicCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIE9mZnNldCBjbGFzc2VzXG5AbWl4aW4geHktb2Zmc2V0LWNlbGwtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvLCAkZ3V0dGVyczogJGdyaWQtcGFkZGluZy1ndXR0ZXJzLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcsICRicmVha3BvaW50OiAkLXpmLXNpemUpO1xuICAgICAgfVxuXG4gICAgICAuZ3JpZC1tYXJnaW4teCA+IC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1vZmZzZXQoJG8sICRicmVha3BvaW50OiAkLXpmLXNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBWZXJ0aWNhbCBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS12ZXJ0aWNhbC1ncmlkLWNsYXNzZXMoXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSBzbWFsbCkge1xuICAgIH1cbiAgfVxuXG4gIC5ncmlkLXkge1xuICAgIEBpbmNsdWRlIHh5LWdyaWQodmVydGljYWwsIGZhbHNlKTtcblxuXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXJlc2V0KCk7XG4gICAgfVxuXG4gICAgPiAuYXV0byB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICB9XG5cbiAgICA+IC5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoc2hyaW5rLCBmYWxzZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICB9XG5cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay93b3JrYXJvdW5kLCBzZWUgdGhlc2UgaXNzdWVzIGFuZCBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20venVyYi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMDI0NFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMjIyIGFuZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XG4gICAgICAkc3RyOiBcIj4gLiN7JC16Zi1zaXplfS1zaHJpbmssID4gLiN7JC16Zi1zaXplfS1mdWxsXCI7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAkc3RyOiAkc3RyICsgXCIsID4gLiN7JC16Zi1zaXplfS0jeyRpfVwiXG4gICAgICB9XG4gICAgICAjeyRzdHJ9IHtcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgICAgLy8gUmVzcG9uc2l2ZSBcImF1dG9cIiBtb2RpZmllclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LWF1dG8ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShhdXRvKTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXN0YXRpYyhhdXRvLCBmYWxzZSwgJGJyZWFrcG9pbnQ6ICQtemYtc2l6ZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlc3BvbnNpdmUgXCJzaHJpbmtcIiBtb2RpZmllclxuICAgICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gc21hbGwpIHtcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LXNocmluayB7XG4gICAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstdmVydGljYWwtI3skLXpmLXNpemV9O1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc3RhdGljKHNocmluaywgZmFsc2UsICRicmVha3BvaW50OiAkLXpmLXNpemUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zdGF0aWMoJGksIGZhbHNlLCAkdmVydGljYWw6IHRydWUsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcbiAgICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgICAgPiAuY2VsbCB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICB9XG5cbn1cblxuQG1peGluIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZDogdHJ1ZSwgJG1hcmdpbi1ncmlkOiB0cnVlKSB7XG4gIC8vIEZyYW1lZCBncmlkIHN0eWxlc1xuICAuZ3JpZC1mcmFtZSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcbiAgfVxuXG4gIC5jZWxsIC5ncmlkLWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgfVxuXG4gIC5jZWxsLWJsb2NrIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gIH1cblxuICAuY2VsbC1ibG9jay15IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICB9XG5cblxuICAuY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XG4gIH1cblxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcblxuICAgIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICAgIH1cblxuICAgIC5jZWxsIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2sge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2steSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdmVydGljYWwtZ3JpZCB7XG4gICAgLmdyaWQteSB7XG4gICAgICAmLmdyaWQtZnJhbWUge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAmLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgLmNlbGwge1xuICAgICAgLmdyaWQteS5ncmlkLWZyYW1lIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAuZ3JpZC15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKTtcbiAgICAuZ3JpZC1mcmFtZS5ncmlkLW1hcmdpbi15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkaW5jbHVkZS1iYXNlOiBmYWxzZSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgIC5ncmlkLW1hcmdpbi15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5hbCBjbGFzc2VzXG5AbWl4aW4gZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXMoXG4gICRiYXNlLWdyaWQ6IHRydWUsXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZSxcbiAgJGJsb2NrLWdyaWQ6IHRydWUsXG4gICRjb2xsYXBzZTogdHJ1ZSxcbiAgJG9mZnNldDogdHJ1ZSxcbiAgJHZlcnRpY2FsLWdyaWQ6IHRydWUsXG4gICRmcmFtZS1ncmlkOiB0cnVlXG4pIHtcblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIEBpZigkYmFzZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktYmFzZS1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIE1hcmdpbiBncmlkXG4gIEBpZigkbWFyZ2luLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBQYWRkaW5nIGdyaWRcbiAgQGlmKCRwYWRkaW5nLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZFxuICBAaWYoJGJsb2NrLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIC8vIENvbGxhcHNlIGd1dHRlcnNcbiAgQGlmKCRjb2xsYXBzZSkge1xuICAgIEBpbmNsdWRlIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gT2Zmc2V0IGd1dHRlcnNcbiAgQGlmKCRvZmZzZXQpIHtcbiAgICBAaW5jbHVkZSB4eS1vZmZzZXQtY2VsbC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBncmlkXG4gIEBpZigkdmVydGljYWwtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgQGlmICgkZnJhbWUtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZCwgJG1hcmdpbi1ncmlkKVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBidXR0b25cbi8vLy9cblxuLy8vIEZvbnQgZmFtaWx5IGZvciBidXR0b24gZWxlbWVudHMuXG4vLy8gQHR5cGUgRm9udFxuJGJ1dHRvbi1mb250LWZhbWlseTogaW5oZXJpdCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmlsbCBmb3IgYnV0dG9ucy4gQ2FuIGVpdGhlciBiZSBgc29saWRgIG9yIGBob2xsb3dgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIGZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHdpZHRoIGZvciBob2xsb3cgb3V0bGluZSBidXR0b25zXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGg6IDFweCAhZGVmYXVsdDtcblxuLy8vIFNpemVzIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJ1dHRvbi1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gb3BhY2l0eSBmb3IgYSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBsaWdodG5lc3Mgb24gaG92ZXIgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXItbGlnaHRuZXNzOiAtMjAlICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBob2xsb3cgYnV0dG9ucy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzczogLTUwJSAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWw6IGZsaXAgZnJvbSBtYXJnaW4tcmlnaHQgdG8gbWFyZ2luLWxlZnQgZm9yIGRlZmF1bHRzXG5AaWYgJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSAncnRsJyB7XG4gICRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG59XG5cbi8vLyB0cmFuc2l0aW9ucyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBMaXN0XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLy8gQWRkaXRpb25hbCByZXNwb25zaXZlIGNsYXNzZXMgZm9yIC5leHBhbmRlZFxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b24tcmVzcG9uc2l2ZS1leHBhbmRlZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRPRE86IERvY3VtZW50IGJ1dHRvbi1iYXNlKCkgbWl4aW5cbkBtaXhpbiBidXR0b24tYmFzZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuXG4gIEBpZiAodHlwZS1vZigkYnV0dG9uLXBhZGRpbmcpID09ICdtYXAnKSB7XG4gICAgQGVhY2ggJHNpemUsICRwYWRkaW5nIGluICRidXR0b24tcGFkZGluZyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIHBhZGRpbmc6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcGFkZGluZzogJGJ1dHRvbi1wYWRkaW5nO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICB0cmFuc2l0aW9uOiAkYnV0dG9uLXRyYW5zaXRpb247XG4gIGZvbnQtZmFtaWx5OiAkYnV0dG9uLWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vLy8gRXhwYW5kcyBhIGJ1dHRvbiB0byBtYWtlIGl0IGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkZXhwYW5kIFt0cnVlXSAtIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBleHBhbmQgYmVoYXZpb3IuIFNldCB0byBgZmFsc2VgIHRvIHJldmVyc2UgdGhpcyBiZWhhdmlvci5cbkBtaXhpbiBidXR0b24tZXhwYW5kKCRleHBhbmQ6IHRydWUpIHtcbiAgQGlmICRleHBhbmQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJGJ1dHRvbi1tYXJnaW47XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLXN0eWxlKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzc1xuKSB7XG4gIEBpZiAkY29sb3IgPT0gYXV0byB7XG4gICAgJGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYWNrZ3JvdW5kLCAoJGJ1dHRvbi1jb2xvciwgJGJ1dHRvbi1jb2xvci1hbHQpKTtcbiAgfVxuXG4gIEBpZiAkYmFja2dyb3VuZC1ob3ZlciA9PSBhdXRvIHtcbiAgICAkYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJhY2tncm91bmQsICRsaWdodG5lc3M6ICRiYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzcyk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vLyBSZW1vdmVzIGJhY2tncm91bmQgZmlsbCBvbiBob3ZlciBhbmQgZm9jdXMgZm9yIGhvbGxvdyBidXR0b25zLlxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xuICAmLFxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gICYuZGlzYWJsZWQsXG4gICZbZGlzYWJsZWRdIHtcbiAgICAmLFxuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidXR0b24taG9sbG93LXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzLFxuICAkYm9yZGVyLXdpZHRoOiAkYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhcbikge1xuICAkY29sb3ItaG92ZXI6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGhvdmVyLWxpZ2h0bmVzcyk7XG5cbiAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcbiAgY29sb3I6ICRjb2xvcjtcblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICAgICYuZGlzYWJsZWQsXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGNvbG9yOiAkY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGRpc2FibGVkIHN0eWxlcyB0byBhIGJ1dHRvbiBieSBmYWRpbmcgdGhlIGVsZW1lbnQsIHJlc2V0aW5nIHRoZSBjdXJzb3IsIGFuZCBkaXNhYmxpbmcgcG9pbnRlciBldmVudHMuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBkaXNhYmxlZCBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gYnV0dG9uLWRpc2FibGVkKFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRidXR0b24tY29sb3Jcbikge1xuICBAaWYgJGNvbG9yID09IGF1dG8ge1xuICAgICRjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRidXR0b24tY29sb3IsICRidXR0b24tY29sb3ItYWx0KSk7XG4gIH1cblxuICBvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cbiAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRjb2xvcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBhIGRyb3Bkb3duIGFycm93IHRvIGEgYnV0dG9uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSBbMC40ZW1dIC0gU2l6ZSBvZiB0aGUgYXJyb3cuIFdlIHJlY29tbWVuZCB1c2luZyBhbiBgZW1gIHZhbHVlIHNvIHRoZSB0cmlhbmdsZSBzY2FsZXMgd2hlbiB1c2VkIGluc2lkZSBkaWZmZXJlbnQgc2l6ZXMgb2YgYnV0dG9ucy5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgW3doaXRlXSAtIENvbG9yIG9mIHRoZSBhcnJvdy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9mZnNldCBbJGJ1dHRvbi1wYWRkaW5nXSAtIERpc3RhbmNlIGJldHdlZW4gdGhlIGFycm93IGFuZCB0aGUgdGV4dCBvZiB0aGUgYnV0dG9uLiBEZWZhdWx0cyB0byB3aGF0ZXZlciB0aGUgcmlnaHQgcGFkZGluZyBvZiBhIGJ1dHRvbiBpcy5cbkBtaXhpbiBidXR0b24tZHJvcGRvd24oXG4gICRzaXplOiAwLjRlbSxcbiAgJGNvbG9yOiAkd2hpdGUsXG4gICRvZmZzZXQ6IGdldC1zaWRlKCRidXR0b24tcGFkZGluZywgcmlnaHQpXG4pIHtcbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCBkb3duKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwLjRlbTsgLy8gQWxpZ25zIHRoZSBhcnJvdyB3aXRoIHRoZSB0ZXh0IG9mIHRoZSBidXR0b25cblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmbG9hdDogI3skZ2xvYmFsLXJpZ2h0fTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG59XG5cbi8vLyBBZGRzIGFsbCBzdHlsZXMgZm9yIGEgYnV0dG9uLiBGb3IgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgc3R5bGVzLCB1c2UgdGhlIGluZGl2aWR1YWwgYnV0dG9uIG1peGlucy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRleHBhbmQgW2ZhbHNlXSAtIFNldCB0byBgdHJ1ZWAgdG8gbWFrZSB0aGUgYnV0dG9uIGZ1bGwtd2lkdGguXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHN0eWxlIFtzb2xpZF0gLSBTZXQgdG8gYGhvbGxvd2AgdG8gY3JlYXRlIGEgaG9sbG93IGJ1dHRvbi4gVGhlIGNvbG9yIGRlZmluZWQgaW4gYCRiYWNrZ3JvdW5kYCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByaW1hcnkgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24oXG4gICRleHBhbmQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZDogJGJ1dHRvbi1iYWNrZ3JvdW5kLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLFxuICAkY29sb3I6ICRidXR0b24tY29sb3IsXG4gICRzdHlsZTogJGJ1dHRvbi1maWxsXG4pIHtcbiAgQGluY2x1ZGUgYnV0dG9uLWJhc2U7XG5cbiAgQGlmICRzdHlsZSA9PSBzb2xpZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcbiAgfVxuICBAZWxzZSBpZiAkc3R5bGUgPT0gaG9sbG93IHtcbiAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG5cbiAgQGlmICRleHBhbmQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uIHtcbiAgLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZXhwYW5kZWQgeyBAaW5jbHVkZSBidXR0b24tZXhwYW5kOyB9XG5cbiAgICBAaWYgJGJ1dHRvbi1yZXNwb25zaXZlLWV4cGFuZGVkIHtcbiAgICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9IG9ubHkpIHtcbiAgICAgICAgICAmLiN7JHNpemV9LW9ubHktZXhwYW5kZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9IGRvd24pIHtcbiAgICAgICAgICAgICYuI3skc2l6ZX0tZG93bi1leHBhbmRlZCB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgjeyRzaXplfSkge1xuICAgICAgICAgICAgJi4jeyRzaXplfS1leHBhbmRlZCB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sb3JzXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgQGlmICRidXR0b24tZmlsbCAhPSBob2xsb3cge1xuICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24tc3R5bGUoJGNvbG9yLCBhdXRvLCBhdXRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICAmLiN7JG5hbWV9LmRyb3Bkb3duOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZWQgc3R5bGVcbiAgICAmLmRpc2FibGVkLFxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kaXNhYmxlZDtcblxuICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZGlzYWJsZWQoJGNvbG9yLCBhdXRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvbGxvdyBzdHlsZVxuICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICYuaG9sbG93IHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdztcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZTtcblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlKCRjb2xvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgc3R5bGVcbiAgICBAaWYgJGJ1dHRvbi1maWxsICE9IGNsZWFyIHtcbiAgICAgICYuY2xlYXIge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93LXN0eWxlO1xuXG4gICAgICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICAgICYsICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYnV0dG9uLXBhbGV0dGUge1xuICAgICAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWhvbGxvdy1zdHlsZSgkY29sb3IpO1xuXG4gICAgICAgICAgICAmLCAmOmhvdmVyLFxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICYsXG4gICAgICAgICAgICAgICYuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRHJvcGRvd24gYXJyb3dcbiAgICAmLmRyb3Bkb3duIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1kcm9wZG93bjtcblxuICAgICAgQGlmICRidXR0b24tZmlsbCA9PSBob2xsb3cge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGJ1dHRvbi1iYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuaG9sbG93LCAmLmNsZWFyIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJ1dHRvbiB3aXRoIGRyb3Bkb3duIGFycm93IG9ubHlcbiAgICAmLmFycm93LW9ubHk6OmFmdGVyIHtcbiAgICAgIHRvcDogLTAuMWVtO1xuICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIH1cbiAgfVxuXG4gIGEuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJ1dHRvbi1ncm91cFxuLy8vL1xuXG4vLy8gTWFyZ2luIGZvciBidXR0b24gZ3JvdXBzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbmdyb3VwLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtc3BhY2luZzogMXB4ICFkZWZhdWx0O1xuXG4vLy8gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcjogJy5idXR0b24nICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSBudW1iZXIgb2YgYnV0dG9ucyB0aGF0IGNhbiBiZSBpbiBhbiBldmVuLXdpZHRoIGJ1dHRvbiBncm91cC4gKE9ubHkgbmVlZGVkIHdoZW4gJGdsb2JhbC1mbGV4Ym94OiBmYWxzZTspXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNiAhZGVmYXVsdDtcblxuLy8vIERldGVybWluZXMgaWYgJGJ1dHRvbi1yYWRpdXMgaXMgYXBwbGllZCB0byBlYWNoIGJ1dHRvbiBvciB0aGUgYnV0dG9uIGdyb3VwIGFzIGEgd2hvbGUuIFVzZSAkZ2xvYmFsLXJhZGl1cyBpbiBfc2V0dGluZ3Muc2NzcyB0byBjaGFuZ2UgcmFkaXVzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEFkZCBzdHlsZXMgZm9yIGEgYnV0dG9uIGdyb3VwIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGNoaWxkLXNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cChcbiAgJGNoaWxkLXNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRzcGFjaW5nOiAkYnV0dG9uZ3JvdXAtc3BhY2luZ1xuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW4tYm90dG9tOiAkYnV0dG9uZ3JvdXAtbWFyZ2luO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgfVxuXG4gICN7JGNoaWxkLXNlbGVjdG9yfSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC13aWR0aCBidXR0b24gZ3JvdXAsIG1ha2luZyBlYWNoIGJ1dHRvbiBlcXVhbCB3aWR0aC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNpbmcgWyRidXR0b25ncm91cC1zcGFjaW5nXSAtIFNwYWNpbmcgYmV0d2VlbiBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC1leHBhbmQoXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yLFxuICAkc3BhY2luZzogJGJ1dHRvbmdyb3VwLXNwYWNpbmcsXG4gICRjb3VudDogbnVsbFxuKSB7XG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogLSRzcGFjaW5nO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIE9uZSBjaGlsZFxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUd28gb3IgbW9yZSBjaGlsZHJlZW5cbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXgge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKDEgLyAkaSl9IC0gI3skc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuLy8vIFVuLXN0YWNrcyB0aGUgYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSB0aGUgYnV0dG9uIGdyb3VwLlxuQG1peGluIGJ1dHRvbi1ncm91cC11bnN0YWNrKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvclxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uLWdyb3VwIHtcbiAgLmJ1dHRvbi1ncm91cCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwO1xuXG4gICAgLy8gU2l6ZXNcbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluIG1hcC1yZW1vdmUoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCkge1xuICAgICAgJi4jeyRzaXplfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICBmb250LXNpemU6ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFdmVuLXdpZHRoIEdyb3VwXG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kO1xuICAgIH1cblxuICAgIC8vIENvbG9yc1xuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgIT0gaG9sbG93IHtcbiAgICAgICAgJi4jeyRuYW1lfSAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1zdHlsZSgkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBidXR0b24taG9sbG93O1xuICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZCxcbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLFxuICAgICYuc3RhY2tlZC1mb3ItbWVkaXVtIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1zdGFjaztcblxuICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC11bnN0YWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bS5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGNsb3NlLWJ1dHRvblxuLy8vL1xuXG4vLy8gRGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgY2xvc2UgYnV0dG9uLiBUaGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGByaWdodGAgb3IgYGxlZnRgLCBhbmQgdGhlIHNlY29uZCB2YWx1ZSBzaG91bGQgYmUgYHRvcGAgb3IgYGJvdHRvbWAuXG4vLy8gQHR5cGUgTGlzdFxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3AgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCAob3IgbGVmdCkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWw6IChcbiAgc21hbGw6IDAuNjZyZW0sXG4gIG1lZGl1bTogMXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUb3AgKG9yIGJvdHRvbSkgb2Zmc2V0KHMpIGZvciBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tb2Zmc2V0LXZlcnRpY2FsOiAoXG4gIHNtYWxsOiAwLjMzZW0sXG4gIG1lZGl1bTogMC41cmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLXNpemU6IChcbiAgc21hbGw6IDEuNWVtLFxuICBtZWRpdW06IDJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGluZS1oZWlnaHQgb2YgdGhlIGNsb3NlIGJ1dHRvbi4gSXQgYWZmZWN0cyB0aGUgc3BhY2luZyBvZiB0aGUgZWxlbWVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24gd2hlbiBiZWluZyBob3ZlcmVkIG9uLlxuLy8vIEB0eXBlIENvbG9yXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjayAhZGVmYXVsdDtcblxuXG4vLy8gR2V0IHRoZSBzaXplIGFuZCBwb3NpdGlvbiBmb3IgYSBjbG9zZSBidXR0b24uIElmIHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciwgdGhlIG51bWJlciBpcyByZXR1cm5lZC4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgY29uZmlnIG1hcCBhbmQgdGhlIG1hcCBoYXMgdGhlIGtleSBgJHNpemVgLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICR2YWx1ZSAtIEEgbnVtYmVyIG9yIG1hcCB0aGF0IHJlcHJlc2VudHMgdGhlIHNpemUgb3IgcG9zaXRpb24gdmFsdWUocykgb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gVGhlIHNpemUgb2YgdGhlIGNsb3NlIGJ1dHRvbiB0byB1c2UuXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IFRoZSBnaXZlbiBudW1iZXIgb3IgdGhlIHZhbHVlIGZvdW5kIGluIHRoZSBtYXAuXG5AZnVuY3Rpb24gLXpmLWdldC1zaXplLXZhbCgkdmFsdWUsICRzaXplKSB7XG4gIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIHtcbiAgICAvLyBJZiBpdCBpcywganVzdCByZXR1cm4gdGhlIG51bWJlclxuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHNpemUgbmFtZSBleGlzdHMgaW4gdGhlIHZhbHVlIG1hcFxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdmFsdWUsICRzaXplKSB7XG4gICAgLy8gSWYgaXQgZG9lcywgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkdmFsdWUsICRzaXplKTtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgYSBjbG9zZSBidXR0b24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbbWVkaXVtXSAtIFRoZSBzaXplIHRvIHVzZS4gU2V0IHRvIGBzbWFsbGAgdG8gY3JlYXRlIGEgc21hbGwgY2xvc2UgYnV0dG9uLiBUaGUgJ21lZGl1bScgdmFsdWVzIGRlZmluZWQgaW4gYCRjbG9zZWJ1dHRvbi0qYCB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uXG5AbWl4aW4gY2xvc2UtYnV0dG9uLXNpemUoJHNpemUpIHtcbiAgJHg6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDEpO1xuICAkeTogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMik7XG5cbiAgI3skeH06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsLCAkc2l6ZSk7XG4gICN7JHl9OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1vZmZzZXQtdmVydGljYWwsICRzaXplKTtcbiAgZm9udC1zaXplOiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1zaXplLCAkc2l6ZSk7XG4gIGxpbmUtaGVpZ2h0OiAtemYtZ2V0LXNpemUtdmFsKCRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0LCAkc2l6ZSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjbG9zZSBidXR0b24sIHVzaW5nIHRoZSBzdHlsZXMgaW4gdGhlIHNldHRpbmdzIHZhcmlhYmxlcy5cbkBtaXhpbiBjbG9zZS1idXR0b24ge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKHNtYWxsKSB9XG4gICAgJiwgJi5tZWRpdW0geyBAaW5jbHVkZSBjbG9zZS1idXR0b24tc2l6ZShtZWRpdW0pIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbGFiZWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBBbHRlcm5hdGUgdGV4dCBjb2xvciBmb3IgbGFiZWxzLlxuLy8vIEB0eXBlIENvbG9yXG4kbGFiZWwtY29sb3ItYWx0OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRsYWJlbC1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxhYmVsLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYmFzZSBzdHlsZXMgZm9yIGEgbGFiZWwuXG5AbWl4aW4gbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6ICRsYWJlbC1yYWRpdXM7XG5cbiAgZm9udC1zaXplOiAkbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1sYWJlbCB7XG4gIC5sYWJlbCB7XG4gICAgQGluY2x1ZGUgbGFiZWw7XG5cbiAgICBiYWNrZ3JvdW5kOiAkbGFiZWwtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkbGFiZWwtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkbGFiZWwtY29sb3IsICRsYWJlbC1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgcHJvZ3Jlc3MgYmFyIGNvbnRhaW5lci5cbkBtaXhpbiBwcm9ncmVzcy1jb250YWluZXIge1xuICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gIG1hcmdpbi1ib3R0b206ICRwcm9ncmVzcy1tYXJnaW4tYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtYmFja2dyb3VuZDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgaW5uZXIgbWV0ZXIgb2YgYSBwcm9ncmVzcyBiYXIuXG5AbWl4aW4gcHJvZ3Jlc3MtbWV0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0ZXh0IGluIHRoZSBwcm9ncmVzcyBtZXRlci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlci10ZXh0IHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm9ncmVzcy1iYXIge1xuICAvLyBQcm9ncmVzcyBiYXJcbiAgLnByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1jb250YWluZXI7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC5wcm9ncmVzcy1tZXRlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXJcbiAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICBAaW5jbHVkZSBwcm9ncmVzcy1tZXRlcjtcbiAgfVxuXG4gIC8vIElubmVyIG1ldGVyIHRleHRcbiAgLnByb2dyZXNzLW1ldGVyLXRleHQge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyLXRleHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBbVE9ET10gQ2hlY2sgaG93IHBsdWdpbiBjb25maXJtcyBkaXNhYmxlZCBvciB2ZXJ0aWNhbCBzdGF0dXNcbi8vIFtUT0RPXSBDaGVjayBpZiB0cmFuc2l0aW9uOiBhbGw7IGlzIG5lY2Vzc2FyeVxuXG4vLy8vXG4vLy8gQGdyb3VwIHNsaWRlclxuLy8vL1xuXG4vLy8gRGVmYXVsdCBzbGlkZXIgd2lkdGggb2YgYSB2ZXJ0aWNhbCBzbGlkZXIuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydGllcyB0byBhcHBseSB0byB0aGUgc2xpZGVyIGhhbmRsZSBhbmQgZmlsbC4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIGFjdGl2ZSBmaWxsIGZvciBzbGlkZXJzLlxuQG1peGluIHNsaWRlci1maWxsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGhlIHNsaWRlciBoYW5kbGVzLlxuQG1peGluIHNsaWRlci1oYW5kbGUge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xuICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIG1hcmdpbjogMCAxLjI1cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcblxuICAuc2xpZGVyLWZpbGwge1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc2xpZGVyIHtcbiAgLy8gQ29udGFpbmVyXG4gIC5zbGlkZXIge1xuICAgIEBpbmNsdWRlIHNsaWRlci1jb250YWluZXI7XG4gIH1cblxuICAvLyBGaWxsIGFyZWFcbiAgLnNsaWRlci1maWxsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcbiAgfVxuXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAuc2xpZGVyLmRpc2FibGVkLFxuICAuc2xpZGVyW2Rpc2FibGVkXSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gVmVydGljYWwgc2xpZGVyXG4gIC5zbGlkZXIudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHNsaWRlci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFJUTCBzdXBwb3J0XG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHN3aXRjaFxuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGFjdGl2ZSBjb2xvciBvZiBhIHN3aXRjaC5cbi8vLyBAdHlwZSBDb2xvclxuJHN3aXRjaC1iYWNrZ3JvdW5kLWFjdGl2ZTogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2gsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnRpbnkgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC10aW55OiAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAuc21hbGwgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC5sYXJnZSBjbGFzcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtaGVpZ2h0LWxhcmdlOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIHRoZSBzd2l0Y2hcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBzd2l0Y2ggY29udGFpbmVyIGFuZCBwYWRkbGUuXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBib2R5LlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gYm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoIHBhZGRsZVxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHN3aXRjaCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2Utb3V0ICFkZWZhdWx0O1xuXG4vLyBtYWtlIHRoZW0gdmFyaWFibGVzXG4vLyBhc2sgYWJvdXQgYWNjZXNzaWJpbGl0eSBvbiBsYWJlbFxuLy8gY2hhbmdlIGNsYXNzIG5hbWUgZm9yIHRleHRcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBjb250YWluZXIgY2xhc3MuXG5AbWl4aW4gc3dpdGNoLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogJHN3aXRjaC1tYXJnaW47XG4gIG91dGxpbmU6IDA7XG5cbiAgLy8gVGhlc2UgcHJvcGVydGllcyBjYXNjYWRlIGRvd24gdG8gdGhlIHN3aXRjaCB0ZXh0XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN3aXRjaCBpbnB1dC4gQXBwbHkgdGhpcyB0byBhbiBgPGlucHV0PmAgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC1pbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgb3BhY2l0eTogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYmFja2dyb3VuZCBhbmQgcGFkZGxlIG9mIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIGEgYDxsYWJlbD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtcGFkZGxlIHtcbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHN3aXRjaC1wYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuXG4gIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcmFkaXVzO1xuICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG5cbiAgLy8gUmVzZXR0aW5nIHRoZXNlIDxsYWJlbD4gcHJlc2V0cyBzbyB0eXBlIHN0eWxlcyBjYXNjYWRlIGRvd25cbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAvLyBOZWVkZWQgdG8gb3ZlcnJpZGUgc3BlY2lmaWNpdHlcbiAgaW5wdXQgKyAmIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBUaGUgcGFkZGxlIGl0c2VsZlxuICAmOjphZnRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHN3aXRjaC1wYWRkbGUtb2Zmc2V0O1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcblxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgYm9yZGVyLXJhZGl1czogJHN3aXRjaC1wYWRkbGUtcmFkaXVzO1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ7XG4gICAgdHJhbnNpdGlvbjogJHN3aXRjaC1wYWRkbGUtdHJhbnNpdGlvbjtcbiAgICBjb250ZW50OiAnJztcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgdmlzdWFsIHN0eWxlIHdoZW4gdGhlIHN3aXRjaCBpcyBhY3RpdmVcbiAgaW5wdXQ6Y2hlY2tlZCB+ICYge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06ICRwYWRkbGUtYWN0aXZlLW9mZmVzdDtcbiAgICB9XG4gIH1cblxuICBpbnB1dDpmb2N1cyB+ICYge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYWN0aXZlL2luYWN0aXZlIHRleHQgaW5zaWRlIGEgc3dpdGNoLiBBcHBseSB0aGlzIHRvIHRleHQgZWxlbWVudHMgaW5zaWRlIHRoZSBzd2l0Y2ggYDxsYWJlbD5gLlxuQG1peGluIHN3aXRjaC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBhY3RpdmUgc3RhdGUgdGV4dCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXRleHQtYWN0aXZlIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiA4JTtcbiAgZGlzcGxheTogbm9uZTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbmFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1pbmFjdGl2ZSB7XG4gICN7JGdsb2JhbC1yaWdodH06IDE1JTtcblxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgPiAmIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3dpdGNoIGJ5IG1vZGlmeWluZyB0aGUgc2l6ZSBvZiB0aGUgYm9keSBhbmQgcGFkZGxlLiBBcHBseSB0aGlzIHRvIGEgc3dpdGNoIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZvbnQtc2l6ZSBbMXJlbV0gLSBGb250IHNpemUgb2YgbGFiZWwgdGV4dCB3aXRoaW4gdGhlIHN3aXRjaC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHN3aXRjaC1oZWlnaHQgWzJyZW1dIC0gSGVpZ2h0IG9mIHRoZSBzd2l0Y2ggYm9keS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHBhZGRsZS1vZmZzZXQgWzAuMjVyZW1dIC0gU3BhY2luZyBiZXR3ZWVuIHRoZSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgc3dpdGNoIGJvZHkuXG5AbWl4aW4gc3dpdGNoLXNpemUoXG4gICRmb250LXNpemU6IDFyZW0sXG4gICRzd2l0Y2gtaGVpZ2h0OiAycmVtLFxuICAkcGFkZGxlLW9mZnNldDogMC4yNXJlbVxuKSB7XG5cbiAgJHN3aXRjaC13aWR0aDogJHN3aXRjaC1oZWlnaHQgKiAyO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWhlaWdodDogJHN3aXRjaC1oZWlnaHQgLSAoJHBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRwYWRkbGUtb2Zmc2V0O1xuXG4gIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG5cbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIHdpZHRoOiAkc3dpdGNoLXdpZHRoO1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICB9XG5cbiAgLnN3aXRjaC1wYWRkbGU6OmFmdGVyIHtcbiAgICB0b3A6ICRwYWRkbGUtb2Zmc2V0O1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1vZmZzZXQ7XG4gICAgd2lkdGg6ICRwYWRkbGUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcGFkZGxlLWhlaWdodDtcbiAgfVxuXG4gIGlucHV0OmNoZWNrZWQgfiAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1sZWZ0fTogJHBhZGRsZS1hY3RpdmUtb2ZmZXN0O1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXN3aXRjaCB7XG4gIC8vIENvbnRhaW5lciBjbGFzc1xuICAuc3dpdGNoIHtcbiAgICBoZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC1jb250YWluZXI7XG4gIH1cblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRcbiAgLnN3aXRjaC1pbnB1dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWlucHV0O1xuICB9XG5cbiAgLy8gPGxhYmVsPiBlbGVtZW50XG4gIC5zd2l0Y2gtcGFkZGxlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtcGFkZGxlO1xuICB9XG5cbiAgLy8gQmFzZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAlc3dpdGNoLXRleHQge1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0O1xuICB9XG5cbiAgLy8gQWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1hY3RpdmU7XG4gIH1cblxuICAvLyBJbmFjdGl2ZSBsYWJlbCB0ZXh0IHN0eWxlc1xuICAuc3dpdGNoLWluYWN0aXZlIHtcbiAgICBAZXh0ZW5kICVzd2l0Y2gtdGV4dDtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtdGV4dC1pbmFjdGl2ZTtcbiAgfVxuXG4gIC8vIFN3aXRjaCBzaXplc1xuICAuc3dpdGNoLnRpbnkge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEwKSwgJHN3aXRjaC1oZWlnaHQtdGlueSwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2guc21hbGwge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDEyKSwgJHN3aXRjaC1oZWlnaHQtc21hbGwsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cblxuICAuc3dpdGNoLmxhcmdlIHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtc2l6ZShyZW0tY2FsYygxNiksICRzd2l0Y2gtaGVpZ2h0LWxhcmdlLCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYmxlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciB0YWJsZSBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlICAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgc3RyaXBlZCB0YWJsZSByb3dzIGFuZCB0aGUgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc3R5bGUgZm9yIHRhYmxlIGJvcmRlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYmxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RhbmRhcmQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0cmlwZWQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0YWJsZXMgYXJlIHN0cmlwZWQgYnkgZGVmYXVsdCBhbmQgYW4gLnVuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLiBJZiBgZmFsc2VgLCBhIC5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kdGFibGUtc3RyaXBlOiBldmVuICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGZvb3RlciBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWZvb3Qtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWZvb3QtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgaGVhZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb290ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBoZWFkZXIgd2hlbiB1c2luZyBzdGFja2VkIHRhYmxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBhdCB3aGljaCBzdGFja2VkIHRhYmxlIHN3aXRjaGVzIGZyb20gbW9iaWxlIHRvIGRlc2t0b3Agdmlldy5cbi8vLyBAdHlwZSBCcmVha3BvaW50XG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xuXG5AbWl4aW4gLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlOiAkdGFibGUtc3RyaXBlKSB7XG4gIHRyIHtcbiAgICAvLyBJZiBzdHJpcGUgaXMgc2V0IHRvIGV2ZW4sIGRhcmtlbiB0aGUgZXZlbiByb3dzLlxuICAgIEBpZiAkc3RyaXBlID09IGV2ZW4ge1xuICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gb2RkLCBkYXJrZW4gdGhlIG9kZCByb3dzLlxuICAgIEBlbHNlIGlmICRzdHJpcGUgPT0gb2RkIHtcbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gLXpmLXRhYmxlLXVuc3RyaXBlKCkge1xuICB0ciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICBib3JkZXItYm90dG9tOiAkdGFibGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsICRpcy1zdHJpcGVkOiAkdGFibGUtaXMtc3RyaXBlZCkge1xuICB0aGVhZCxcbiAgdGJvZHksXG4gIHRmb290IHtcbiAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDYXB0aW9uXG4gIGNhcHRpb24ge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICB9XG5cbiAgLy8gVGFibGUgaGVhZFxuICB0aGVhZCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWhlYWQtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWhlYWQtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGZvb3RcbiAgdGZvb3Qge1xuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1mb290LWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0YWJsZS1mb290LWZvbnQtY29sb3I7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkIGFuZCBmb290XG4gIHRoZWFkLFxuICB0Zm9vdCB7XG4gICAgLy8gUm93cyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgIHRyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8vIENlbGxzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICAgIHRleHQtYWxpZ246ICN7JGdsb2JhbC1sZWZ0fTtcbiAgICB9XG4gIH1cblxuICAvLyBUYWJsZSByb3dzXG4gIHRib2R5IHtcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIHN0cmlwZWRcbiAgQGlmICRpcy1zdHJpcGVkID09IHRydWUge1xuICAgIHRib2R5IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZSk7XG4gICAgfVxuXG4gICAgJi51bnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGFibGVzIGFyZSBub3Qgc3RyaXBlZFxuICBAZWxzZSBpZiAkaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXVuc3RyaXBlKCk7XG4gICAgfVxuXG4gICAgJi5zdHJpcGVkIHtcbiAgICAgIHRib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciB0YWJsZXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RyaXBlIFskdGFibGUtc3RyaXBlXSAtIFVzZXMga2V5d29yZHMgZXZlbiwgb2RkLCBvciBub25lIHRvIGRhcmtlbiByb3dzIG9mIHRoZSB0YWJsZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZXZlbi5cbkBtaXhpbiB0YWJsZShcbiAgJHN0cmlwZTogJHRhYmxlLXN0cmlwZSxcbiAgJG5lc3Q6IGZhbHNlXG4pIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuICBAaWYgJG5lc3Qge1xuICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBhdC1yb290IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1jaGlsZHJlbi1zdHlsZXMoJHN0cmlwZSk7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBhYmlsaXR5IHRvIGhvcml6b250YWxseSBzY3JvbGwgdGhlIHRhYmxlIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dzIGhvcml6b250YWxseS5cbkBtaXhpbiB0YWJsZS1zY3JvbGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbi8vLyBTbGlnaHRseSBkYXJrZW5zIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuQG1peGluIHRhYmxlLWhvdmVyIHtcbiAgdGhlYWQgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaGVhZC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGZvb3QgdHIge1xuICAgIC8vRGFya2VucyB0aGUgdGFibGUgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtZm9vdC1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgdGJvZHkgdHIge1xuICAgIC8vRGFya2VucyB0aGUgbm9uLXN0cmlwZWQgdGFibGUgcm93cyBvbiBob3Zlci5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgQGlmICR0YWJsZS1pcy1zdHJpcGVkID09IHRydWUge1xuICAgIC8vIERhcmtlbnMgdGhlIGV2ZW4gc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBpZigkdGFibGUtc3RyaXBlID09IGV2ZW4pIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZSBpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJjpub3QoLnVuc3RyaXBlZCkgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICR0YWJsZS1pcy1zdHJpcGVkID09IGZhbHNlIHtcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUoZXZlbik6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXJrZW5zIHRoZSBvZGQgc3RyaXBlZCB0YWJsZSByb3dzLlxuICAgIEBlbHNlIGlmKCR0YWJsZS1zdHJpcGUgPT0gb2RkKSB7XG4gICAgICAmLnN0cmlwZWQgdHI6bnRoLW9mLXR5cGUob2RkKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgc3RhY2tlZCB0YWJsZS4gVXNlZnVsIGZvciBzbWFsbC1zY3JlZW4gbGF5b3V0cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRoZWFkZXIgWyRzaG93LWhlYWRlci1mb3Itc3RhY2tlZF0gLSBTaG93IHRoZSBmaXJzdCB0aCBvZiBoZWFkZXIgd2hlbiBzdGFja2VkLlxuQG1peGluIHRhYmxlLXN0YWNrKCRoZWFkZXI6ICRzaG93LWhlYWRlci1mb3Itc3RhY2tlZCkge1xuICBAaWYgJGhlYWRlciB7XG4gICAgdGhlYWQge1xuICAgICAgdGgge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRoZWFkIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgdGZvb3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICB0cixcbiAgdGgsXG4gIHRkIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHRkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYmxlKCRuZXN0OiBmYWxzZSkge1xuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgdGFibGUoJG5lc3Q6ICRuZXN0KTtcbiAgfVxuXG4gIHRhYmxlLnN0YWNrIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZS1zdGFjay1icmVha3BvaW50IGRvd24pIHtcbiAgICAgIEBpbmNsdWRlIHRhYmxlLXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIHRhYmxlLnNjcm9sbCB7XG4gICAgQGluY2x1ZGUgdGFibGUtc2Nyb2xsO1xuICB9XG5cbiAgdGFibGUuaG92ZXIge1xuICAgIEBpbmNsdWRlIHRhYmxlLWhvdmVyO1xuICB9XG5cbiAgLnRhYmxlLXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBiYWRnZVxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIENvbG9yXG4kYmFkZ2UtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0ZSB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIENvbG9yaW5nIGNsYXNzZXMuIEEgbWFwIG9mIGNsYXNzZXMgdG8gb3V0cHV0IGluIHlvdXIgQ1NTLCBsaWtlIGAuc2Vjb25kYXJ5YCwgYC5zdWNjZXNzYCwgYW5kIHNvIG9uLlxuLy8vIEB0eXBlIE1hcFxuJGJhZGdlLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGJhZGdlcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1wYWRkaW5nOiAwLjNlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgYSBiYWRnZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRiYWRnZS1taW53aWR0aDogMi4xZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLWZvbnQtc2l6ZTogMC42cmVtICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBiYWRnZS5cbkBtaXhpbiBiYWRnZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLXdpZHRoOiAkYmFkZ2UtbWlud2lkdGg7XG4gIHBhZGRpbmc6ICRiYWRnZS1wYWRkaW5nO1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBmb250LXNpemU6ICRiYWRnZS1mb250LXNpemU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tYmFkZ2Uge1xuICAuYmFkZ2Uge1xuICAgIEBpbmNsdWRlIGJhZGdlO1xuXG4gICAgYmFja2dyb3VuZDogJGJhZGdlLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRiYWRnZS1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJhZGdlLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGJhZGdlLWNvbG9yLCAkYmFkZ2UtY29sb3ItYWx0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVhZGNydW1ic1xuLy8vL1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBhY3RpdmUgYnJlYWRjcnVtYiBsaW5rLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBPcGFjaXR5IG9mIGRpc2FibGVkIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnJlYWRjcnVtYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgbWFrZXMgYnJlYWRjcnVtYiBsaW5rcyB1cHBlcmNhc2UuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIGEgc2VwZXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoKSB7XG4gICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g7XG59XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLycgIWRlZmF1bHQ7XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yIGluIHJ0bCBtb2RlLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgICBmb250LXNpemU6ICRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvciB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2VwYXJhdG9yOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdsdHInLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbSwgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBtYXJnaW46IDAgJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgY29udGVudDogJHNlcGFyYXRvcjtcbiAgICAgICAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1icmVhZGNydW1icyB7XG4gIC5icmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgYnJlYWRjcnVtYnMtY29udGFpbmVyO1xuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYWxsb3V0XG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmFkZSB2YWx1ZSBmb3IgY2FsbG91dCBiYWNrZ3JvdW5kcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIExpc3RcbiRjYWxsb3V0LWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1tYXJnaW46IDAgMCAxcmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGlubmVyIHBhZGRpbmcgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLCBpZiB0aGUgY2FsbG91dCBoYXMgYSBkYXJrIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LWZvbnQtY29sb3ItYWx0OiAkYm9keS1iYWNrZ3JvdW5kICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGNhbGxvdXQtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEFtb3VudCB0byB0aW50IGxpbmtzIHVzZWQgd2l0aGluIGNvbG9yZWQgcGFuZWxzLiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBCb29sZWFuXG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhIGNhbGxvdXQsIGluY2x1ZGluZyBwYWRkaW5nIGFuZCBtYXJnaW4uXG5AbWl4aW4gY2FsbG91dC1iYXNlKCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogJGNhbGxvdXQtbWFyZ2luO1xuICBwYWRkaW5nOiAkY2FsbG91dC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJGNhbGxvdXQtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkY2FsbG91dC1yYWRpdXM7XG5cbiAgLy8gUmVzcGVjdCB0aGUgcGFkZGluZywgZm9vbC5cbiAgPiA6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSBxdWljayBzdHlsZXMgZm9yIGEgY2FsbG91dCB1c2luZyBhIHNpbmdsZSBjb2xvciBhcyBhIGJhc2VsaW5lLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dC1zdHlsZSgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgJGJhY2tncm91bmQ6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGNhbGxvdXQtYmFja2dyb3VuZC1mYWRlKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGJhY2tncm91bmQsICgkY2FsbG91dC1mb250LWNvbG9yLCAkY2FsbG91dC1mb250LWNvbG9yLWFsdCkpO1xufVxuXG5AbWl4aW4gY2FsbG91dC1zaXplKCRwYWRkaW5nKSB7XG4gIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FsbG91dC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRjYWxsb3V0LWJhY2tncm91bmRdIC0gQ29sb3IgdG8gdXNlLlxuQG1peGluIGNhbGxvdXQoJGNvbG9yOiAkY2FsbG91dC1iYWNrZ3JvdW5kKSB7XG4gIEBpbmNsdWRlIGNhbGxvdXQtYmFzZTtcbiAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jYWxsb3V0IHtcbiAgLmNhbGxvdXQge1xuICAgIEBpbmNsdWRlIGNhbGxvdXQ7XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc3R5bGUoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNtYWxsIHtcbiAgICAgIEBpbmNsdWRlIGNhbGxvdXQtc2l6ZSgwLjVyZW0pO1xuICAgIH1cblxuICAgICYubGFyZ2Uge1xuICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKDNyZW0pO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FyZFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhcmRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgc3R5bGUuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNhcmQgc2hhZG93LlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbi5cbi8vLyBAdHlwZSBudW1iZXJcbiRjYXJkLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIGZvbnQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXJnaW4gLSBCb3R0b20gbWFyZ2luIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGJvcmRlciAtIEJvcmRlciBhcm91bmQgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmFkaXVzIC0gYm9yZGVyIHJhZGl1cyBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaGFkb3cgLSBib3ggc2hhZG93IG9mIHRoZSBjYXJkLlxuQG1peGluIGNhcmQtY29udGFpbmVyKFxuICAkYmFja2dyb3VuZDogJGNhcmQtYmFja2dyb3VuZCxcbiAgJGNvbG9yOiAkY2FyZC1mb250LWNvbG9yLFxuICAkbWFyZ2luOiAkY2FyZC1tYXJnaW4tYm90dG9tLFxuICAkYm9yZGVyOiAkY2FyZC1ib3JkZXIsXG4gICRyYWRpdXM6ICRjYXJkLWJvcmRlci1yYWRpdXMsXG4gICRzaGFkb3c6ICRjYXJkLXNoYWRvd1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cblxuICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBkaXZpZGVyLlxuQG1peGluIGNhcmQtZGl2aWRlcihcbiAgJGJhY2tncm91bmQ6ICRjYXJkLWRpdmlkZXItYmFja2dyb3VuZCxcbiAgJHBhZGRpbmc6ICRjYXJkLXBhZGRpbmdcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDAgMSBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgY2FyZCBzZWN0aW9uLlxuQG1peGluIGNhcmQtc2VjdGlvbihcbiAgJHBhZGRpbmc6ICRjYXJkLXBhZGRpbmdcbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuXG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1jYXJkIHtcbiAgLmNhcmQge1xuICAgIEBpbmNsdWRlIGNhcmQtY29udGFpbmVyO1xuICB9XG5cbiAgLmNhcmQtZGl2aWRlciB7XG4gICAgQGluY2x1ZGUgY2FyZC1kaXZpZGVyO1xuICB9XG5cbiAgLmNhcmQtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgY2FyZC1zZWN0aW9uO1xuICB9XG5cbiAgLy8gRm9yIElFIDExIC0gRmxleGJ1Z1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGhpbGlwd2FsdG9uL2ZsZXhidWdzL2lzc3Vlcy83NVxuICAuY2FyZC1pbWFnZSB7XG4gICAgbWluLWhlaWdodDogMXB4O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93blxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGRyb3Bkb3duIHBhbmVzLiBFYWNoIHNpemUgaXMgYSBDU1MgY2xhc3MgeW91IGNhbiBhcHBseS5cbi8vLyBAdHlwZSBNYXBcbiRkcm9wZG93bi1zaXplczogKFxuICB0aW55OiAxMDBweCxcbiAgc21hbGw6IDIwMHB4LFxuICBsYXJnZTogNDAwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIGEgYmFzaWMgZHJvcGRvd24uXG5AbWl4aW4gZHJvcGRvd24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nO1xuXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmFja2dyb3VuZDtcblxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XG5cblxuICAvLyBBbGxvdyBhbiBpbnRlcm1pdHRlbnQgc3RhdGUgdG8gZG8gcG9zaXRpb25pbmcgYmVmb3JlIG1ha2luZyB2aXNpYmxlLlxuICAmLmlzLW9wZW5pbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJi5pcy1vcGVuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcbiAgLmRyb3Bkb3duLXBhbmUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWNvbnRhaW5lcjtcbiAgfVxuXG4gIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkZHJvcGRvd24tc2l6ZXMge1xuICAgIC5kcm9wZG93bi1wYW5lIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwYWdpbmF0aW9uXG4vLy8vXG5cbi8vLyBGb250IHNpemUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luIG9mIHRoZSBwYWdpbmF0aW9uIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBvZiBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKSAhZGVmYXVsdDtcblxuLy8vIFJpZ2h0IG1hcmdpbiB0byBzZXBhcmF0ZSBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nOiByZW0tY2FsYygxKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBwYWdpbmF0aW9uIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWJhY2tncm91bmQtY3VycmVudDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIHRoZSBwYWdpbmF0aW9uIGl0ZW0gZm9yIHRoZSBjdXJyZW50IHBhZ2UuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBhIGRpc2FibGVkIHBhZ2luYXRpb24gaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgdGhlIGVsbGlwc2lzIGluIGEgcGFnaW5hdGlvbiBtZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gSWYgYGZhbHNlYCwgZG9uJ3QgZGlzcGxheSBwYWdlIG51bWJlciBsaW5rcyBvbiBtb2JpbGUsIG9ubHkgbmV4dC9wcmV2aW91cyBsaW5rc1xuLy8vIGFuZCBvcHRpb25hbGx5IGN1cnJlbnQgcGFnZSBudW1iZXIuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheSB0aGUgY3VycmVudCBwYWdlIG51bWJlciBvbiBtb2JpbGUgZXZlbiBpZiBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zYCBpcyBzZXQgdG8gYGZhbHNlYC5cbi8vLyBUaGlzIHBhcmFtZXRlciB3aWxsIG9ubHkgb3ZlcnJpZGUgdGhlIHZpc2liaWxpdHkgc2V0dGluZyBvZiB0aGUgY3VycmVudCBpdGVtIGZvciBgJHBhZ2luYXRpb24tbW9iaWxlLWl0ZW1zOiBmYWxzZTtgLFxuLy8vIGl0IHdpbGwgbm90IGFmZmVjdCB0aGUgY3VycmVudCBwYWdlIG51bWJlciB2aXNpYmlsaXR5IHdoZW4gYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGB0cnVlYC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYXJyb3dzIGFyZSBhZGRlZCB0byB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbGlua3Mgb2YgcGFnaW5hdGlvbi5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcGFnaW5hdGlvbi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwYWdpbmF0aW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWNvbnRhaW5lciAoXG4gICRtYXJnaW4tYm90dG9tOiAkcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tLFxuICAkZm9udC1zaXplOiAkcGFnaW5hdGlvbi1mb250LXNpemUsXG4gICRzcGFjaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmcsXG4gICRyYWRpdXM6ICRwYWdpbmF0aW9uLXJhZGl1cyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gIC8vIExpc3QgaXRlbVxuICBsaSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuXG4gICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtcyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICY6bGFzdC1jaGlsZCxcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtIHtcbiAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgbGlua3NcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBjdXJyZW50IHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRiYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50LFxuICAkY29sb3ItY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50XG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWN1cnJlbnQ7XG4gIGNvbG9yOiAkY29sb3ItY3VycmVudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgZGlzYWJsZWQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZFxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb2xvcjogJGNvbG9yO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gZWxsaXBzaXMgZm9yIHVzZSBpbiBhIHBhZ2luYXRpb24gbGlzdC5cbkBtaXhpbiBwYWdpbmF0aW9uLWVsbGlwc2lzIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvclxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb250ZW50OiAnXFwyMDI2JztcbiAgY29sb3I6ICRjb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcGFnaW5hdGlvbiB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWNvbnRhaW5lcjtcblxuICAgIC5jdXJyZW50IHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1jdXJyZW50O1xuICAgIH1cblxuICAgIC5kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLmVsbGlwc2lzOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWVsbGlwc2lzO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFnaW5hdGlvbi1hcnJvd3Mge1xuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzIGE6OmJlZm9yZSxcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cy5kaXNhYmxlZDo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjVyZW07XG4gICAgICBjb250ZW50OiAnXFwwMGFiJztcbiAgICB9XG5cbiAgICAucGFnaW5hdGlvbi1uZXh0IGE6OmFmdGVyLFxuICAgIC5wYWdpbmF0aW9uLW5leHQuZGlzYWJsZWQ6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICdcXDAwYmInO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9vbHRpcFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjdXJzb3Igb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBib3R0b20gb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBMaXN0XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4IHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLW1heC13aWR0aDogMTByZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoYXMtdGlwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xuICBjdXJzb3I6ICRoYXMtdGlwLWN1cnNvcjtcbn1cblxuQG1peGluIHRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIHotaW5kZXg6IDEyMDA7XG5cbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yO1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgJi5ib3R0b20ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XG4gICAgICBib3R0b206IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi50b3Age1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBkb3duKTtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmxlZnQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5yaWdodCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGxlZnQpO1xuICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi10b3A6OmJlZm9yZSB7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHRvcDogMTAlO1xuICB9XG5cbiAgJi5hbGlnbi1ib3R0b206OmJlZm9yZSB7XG4gICAgYm90dG9tOiAxMCU7XG4gICAgdG9wOiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1sZWZ0OjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwJTtcbiAgICByaWdodDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQ6OmJlZm9yZSB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogMTAlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvb2x0aXAge1xuICAuaGFzLXRpcCB7XG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcbiAgfVxuXG4gIC50b29sdGlwIHtcbiAgICBAaW5jbHVkZSB0b29sdGlwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb25cbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhbiBhY2NvcmRpb24gZ3JvdXAuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIHBsdXMgYW5kIG1pbnVzIGljb25zIHRvIHRoZSBzaWRlIG9mIGVhY2ggYWNjb3JkaW9uIHRpdGxlLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRhY2NvcmRpb24tcGx1c21pbnVzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGFjY29yZGlvbiB0aXRsZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGFuIGFjY29yZGlvbiBpdGVtLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiAxLjI1cmVtIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGFjY29yZGlvbiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIHNhbWUgZWxlbWVudCB0aGF0IGdldHMgYGRhdGEtYWNjb3JkaW9uYC5cbkBtaXhpbiBhY2NvcmRpb24tY29udGFpbmVyIChcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tYmFja2dyb3VuZFxuKSB7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgJltkaXNhYmxlZF0ge1xuICAgIC5hY2NvcmRpb24tdGl0bGUge1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpc3QgaXRlbSB3aXRoaW4gYW4gYWNjb3JkaW9uIHVsLlxuQG1peGluIGFjY29yZGlvbi1pdGVtIHtcbiAgJjpmaXJzdC1jaGlsZCA+IDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMCAwO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkID4gOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB0aXRsZSBvZiBhbiBhY2NvcmRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byB0aGUgbGluayB3aXRoaW4gYW4gYWNjb3JkaW9uIGl0ZW0uXG5AbWl4aW4gYWNjb3JkaW9uLXRpdGxlIChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24taXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZSxcbiAgJGNvbG9yOiAkYWNjb3JkaW9uLWl0ZW0tY29sb3IsXG4gICRib3JkZXI6ICRhY2NvcmRpb24tY29udGVudC1ib3JkZXIsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYWNjb3JkaW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlclxuKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcblxuICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkOm5vdCguaXMtYWN0aXZlKSA+ICYge1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtaG92ZXI7XG4gIH1cblxuICBAaWYgJGFjY29yZGlvbi1wbHVzbWludXMge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgICBtYXJnaW4tdG9wOiAtMC41cmVtO1xuICAgICAgY29udGVudDogJysnO1xuICAgIH1cblxuICAgIC5pcy1hY3RpdmUgPiAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ1xcMjAxMyc7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYWNjb3JkaW9uIGNvbnRlbnQuIEFwcGx5IHRoaXMgdG8gdGhlIGNvbnRlbnQgcGFuZSBiZWxvdyBhbiBhY2NvcmRpb24gaXRlbSdzIHRpdGxlLlxuQG1peGluIGFjY29yZGlvbi1jb250ZW50IChcbiAgJHBhZGRpbmc6ICRhY2NvcmRpb24tY29udGVudC1wYWRkaW5nLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZDogJGFjY29yZGlvbi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJGFjY29yZGlvbi1jb250ZW50LWNvbG9yXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcblxuICBjb2xvcjogJGNvbG9yO1xuXG4gIDpsYXN0LWNoaWxkID4gJjpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbiB7XG4gIC5hY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1jb250YWluZXI7XG4gIH1cblxuICAuYWNjb3JkaW9uLWl0ZW0ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi1pdGVtO1xuICB9XG5cbiAgLmFjY29yZGlvbi10aXRsZSB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLXRpdGxlO1xuICB9XG5cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWVkaWEtb2JqZWN0XG4vLy8vXG5cbi8vLyBCb3R0b20gbWFyZ2luIG9mIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gTGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvbiBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBvZiBpbWFnZXMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LCB3aGVuIHRoZSBvYmplY3QgaXMgc3RhY2tlZCB2ZXJ0aWNhbGx5LiBTZXQgdG8gJ2F1dG8nIHRvIHVzZSB0aGUgaW1hZ2UncyBuYXR1cmFsIHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtZWRpYSBvYmplY3QgY29udGFpbmVyLlxuQG1peGluIG1lZGlhLW9iamVjdC1jb250YWluZXIge1xuICBkaXNwbGF5OiBpZigkZ2xvYmFsLWZsZXhib3gsIGZsZXgsIGJsb2NrKTtcbiAgbWFyZ2luLWJvdHRvbTogJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b207XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cblxuICBpbWcge1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICYuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3Igc2VjdGlvbnMgd2l0aGluIGEgbWVkaWEgb2JqZWN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZ10gLSBQYWRkaW5nIGJldHdlZW4gc2VjdGlvbnMuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXNlY3Rpb24oJHBhZGRpbmc6ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmcpIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgfVxuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLXJpZ2h0fTogJHBhZGRpbmc7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQ6bm90KDpudGgtY2hpbGQoMikpIHtcbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1sZWZ0fTogJHBhZGRpbmc7XG4gIH1cblxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnN0YWNrLWZvci0jeyQtemYtemVyby1icmVha3BvaW50fSAmIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtemVyby1icmVha3BvaW50IG9ubHkpIHtcbiAgICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zdGFjaztcbiAgICB9XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAmLm1haW4tc2VjdGlvbiB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJi5taWRkbGUge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAmLmJvdHRvbSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gc3RhY2sgc2VjdGlvbnMgb2YgYSBtZWRpYSBvYmplY3QuIEFwcGx5IHRoaXMgdG8gdGhlIHNlY3Rpb24gZWxlbWVudHMsIG5vdCB0aGUgY29udGFpbmVyLlxuQG1peGluIG1lZGlhLW9iamVjdC1zdGFjayB7XG4gIHBhZGRpbmc6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAkbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIGltZyB7XG4gICAgd2lkdGg6ICRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdCB7XG4gIC5tZWRpYS1vYmplY3Qge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1jb250YWluZXI7XG4gIH1cblxuICAubWVkaWEtb2JqZWN0LXNlY3Rpb24ge1xuICAgIEBpbmNsdWRlIG1lZGlhLW9iamVjdC1zZWN0aW9uO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvcmJpdFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpYW1ldGVyIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmcm9tIE9yYml0J3MgYnVsbGV0cyB0byB3aGF0ZXZlciBjb250ZW50IG1heSBsdXJrIGJlbG93IGl0LlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY29udHJvbHMgd2hlbiBob3ZlcmVkLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBvdXRlciBPcmJpdCB3cmFwcGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXRgIGNsYXNzLlxuQG1peGluIG9yYml0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1zbGlkZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgJi5uby1tb3Rpb251aSB7XG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9yYml0LWZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHNsaWRlIGNvbnRhaW5pbmcgYW4gaW1hZ2UuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1pbWFnZWAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gb3JiaXQgc2xpZGUgY2FwdGlvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNhcHRpb25gIGNsYXNzLlxuQG1peGluIG9yYml0LWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmc6ICRvcmJpdC1jYXB0aW9uLXBhZGRpbmc7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZCk7XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGluIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgYC5vcmJpdC1uZXh0YCBhbmQgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3NlcyBpbiB0aGUgZGVmYXVsdCBDU1MuXG5AbWl4aW4gb3JiaXQtY29udHJvbCB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyO1xuICB6LWluZGV4OiAkb3JiaXQtY29udHJvbC16aW5kZXg7XG4gIHBhZGRpbmc6ICRvcmJpdC1jb250cm9sLXBhZGRpbmc7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzLlxuQG1peGluIG9yYml0LXByZXZpb3VzIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBuZXh0IGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LW5leHRgIGNsYXNzLlxuQG1peGluIG9yYml0LW5leHQge1xuICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICN7JGdsb2JhbC1yaWdodH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjb250YWluZXIgb2YgT3JiaXQgYnVsbGV0cy4gLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtYnVsbGV0c2AgY2xhc3MuXG5AbWl4aW4gb3JiaXQtYnVsbGV0cyB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A7XG4gIG1hcmdpbi1ib3R0b206ICRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGJ1dHRvbiB7XG4gICAgd2lkdGg6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XG4gICAgaGVpZ2h0OiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIG1hcmdpbjogJG9yYml0LWJ1bGxldC1tYXJnaW47XG5cbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW9yYml0IHtcbiAgLm9yYml0IHtcbiAgICBAaW5jbHVkZSBvcmJpdC13cmFwcGVyO1xuICB9XG5cbiAgLm9yYml0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udGFpbmVyO1xuICB9XG5cbiAgLm9yYml0LXNsaWRlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1zbGlkZTtcbiAgfVxuXG4gIC5vcmJpdC1maWd1cmUge1xuICAgIEBpbmNsdWRlIG9yYml0LWZpZ3VyZTtcbiAgfVxuXG4gIC5vcmJpdC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtaW1hZ2U7XG4gIH1cblxuICAub3JiaXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY2FwdGlvbjtcbiAgfVxuXG4gICVvcmJpdC1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250cm9sO1xuICB9XG5cbiAgLm9yYml0LXByZXZpb3VzIHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LXByZXZpb3VzO1xuICB9XG5cbiAgLm9yYml0LW5leHQge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtbmV4dDtcbiAgfVxuXG4gIC5vcmJpdC1idWxsZXRzIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1idWxsZXRzO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXNwb25zaXZlLWVtYmVkXG4vLy8vXG5cbi8vLyBNYXJnaW4gYmVsb3cgYSByZXNwb25zaXZlIGVtYmVkIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXNwb25zaXZlLWVtYmVkLW1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuLy8vIEFzcGVjdCByYXRpb3MgdXNlZCB0byBkZXRlcm1pbmUgcGFkZGluZy1ib3R0b20gb2YgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXJzLlxuLy8vIEB0eXBlIE1hcFxuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXG4gIGRlZmF1bHQ6IDQgYnkgMyxcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtTdHJpbmd8TGlzdH0gJHJhdGlvIFtkZWZhdWx0XSAtIFJhdGlvIG9mIHRoZSBjb250YWluZXIuIENhbiBiZSBhIGtleSBmcm9tIHRoZSBgJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zYCBtYXAgb3IgYSBsaXN0IGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbkBtaXhpbiByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCkge1xuICBAaWYgdHlwZS1vZigkcmF0aW8pID09ICdzdHJpbmcnIHtcbiAgICAkcmF0aW86IG1hcC1nZXQoJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zLCAkcmF0aW8pO1xuICB9XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAwO1xuICBtYXJnaW4tYm90dG9tOiAkcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tO1xuICBwYWRkaW5nLWJvdHRvbTogcmF0aW8tdG8tcGVyY2VudGFnZSgkcmF0aW8pO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGlmcmFtZSxcbiAgb2JqZWN0LFxuICBlbWJlZCxcbiAgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkIHtcbiAgLnJlc3BvbnNpdmUtZW1iZWQsXG4gIC5mbGV4LXZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNwb25zaXZlLWVtYmVkKCRyYXRpbzogZGVmYXVsdCk7XG5cbiAgICAkcmF0aW9zOiBtYXAtcmVtb3ZlKCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcyxkZWZhdWx0KTtcblxuICAgIEBlYWNoICRuYW1lLCAkcmF0aW8gaW4gJHJhdGlvcyB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYnNcbi8vLy9cblxuLy8vIERlZmF1bHQgbWFyZ2luIG9mIHRoZSB0YWIgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGJhY2tncm91bmQgY29sb3Igb2YgYSB0YWIgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWJhY2tncm91bmQtYWN0aXZlOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEFjdGl2ZSBmb250IGNvbG9yIG9mIHRhYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgb2YgdGFiIGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIG9mIGEgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvciAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgYDx1bD5gLlxuQG1peGluIHRhYnMtY29udGFpbmVyIChcbiAgJG1hcmdpbjogJHRhYi1tYXJnaW4sXG4gICRiYWNrZ3JvdW5kOiAkdGFiLWJhY2tncm91bmQsXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWFyZ2luOiAkbWFyZ2luO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGFpbmVyIHRvIGhhdmUgdmVydGljYWwgdGFicy4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250YWluZXIoKWAuXG5AbWl4aW4gdGFicy1jb250YWluZXItdmVydGljYWwge1xuICA+IGxpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBsaW5rcyB3aXRoaW4gYSB0YWIgY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBgPGxpPmAgZWxlbWVudHMgaW5zaWRlIGEgdGFiIGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXRpdGxlIChcbiAgJHBhZGRpbmc6ICR0YWItaXRlbS1wYWRkaW5nLFxuICAkZm9udC1zaXplOiAkdGFiLWl0ZW0tZm9udC1zaXplLFxuICAkY29sb3I6ICR0YWItY29sb3IsXG4gICRjb2xvci1hY3RpdmU6ICR0YWItYWN0aXZlLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHRhYi1pdGVtLWJhY2tncm91bmQtaG92ZXIsXG4gICRiYWNrZ3JvdW5kLWFjdGl2ZTogJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZVxuKSB7XG4gIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgPiBhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogJHBhZGRpbmc7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgY29sb3I6IHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogLTE0JSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJGNvbG9yLWFjdGl2ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgd3JhcHBlciB0aGF0IHN1cnJvdW5kcyBhIHRhYiBncm91cCdzIGNvbnRlbnQgcGFuZXMuXG5AbWl4aW4gdGFicy1jb250ZW50IChcbiAgJGJhY2tncm91bmQ6ICR0YWItY29udGVudC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICR0YWItY29udGVudC1jb2xvcixcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGNvbG9yO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlO1xufVxuXG4vLy8gQXVnbWVudHMgYSB0YWIgY29udGVudCBjb250YWluZXIgdG8gaGF2ZSBhIHZlcnRpY2FsIHN0eWxlLCBieSBzaGlmdGluZyB0aGUgYm9yZGVyIGFyb3VuZC4gVXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFicy1jb250ZW50KClgLlxuQG1peGluIHRhYnMtY29udGVudC12ZXJ0aWNhbCAoXG4gICRib3JkZXItY29sb3I6ICR0YWItY29udGVudC1ib3JkZXJcbikge1xuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFuIGluZGl2aWR1YWwgdGFiIGNvbnRlbnQgcGFuZWwgd2l0aGluIHRoZSB0YWIgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gdGFicy1wYW5lbCAoXG4gICRwYWRkaW5nOiAkdGFiLWNvbnRlbnQtcGFkZGluZ1xuKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gICYuaXMtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJzIHtcbiAgLnRhYnMge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyO1xuICB9XG5cbiAgLy8gVmVydGljYWxcbiAgLnRhYnMudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHRhYnMtY29udGFpbmVyLXZlcnRpY2FsO1xuICB9XG5cbiAgLy8gU2ltcGxlXG4gIC50YWJzLnNpbXBsZSB7XG4gICAgPiBsaSA+IGEge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByaW1hcnkgY29sb3JcbiAgLnRhYnMucHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG5cbiAgICA+IGxpID4gYSB7XG4gICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkcHJpbWFyeS1jb2xvcik7XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHByaW1hcnktY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJzLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0YWJzLXRpdGxlO1xuICB9XG5cbiAgLnRhYnMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50O1xuICB9XG5cbiAgLnRhYnMtY29udGVudC52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250ZW50LXZlcnRpY2FsO1xuICB9XG5cbiAgLnRhYnMtcGFuZWwge1xuICAgIEBpbmNsdWRlIHRhYnMtcGFuZWw7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRodW1ibmFpbFxuLy8vL1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIEJvcmRlclxuJHRodW1ibmFpbC1ib3JkZXI6IDRweCBzb2xpZCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMikgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcHJ0aWVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aHVtYm5haWwgc3R5bGVzIHRvIGFuIGVsZW1lbnQuXG5AbWl4aW4gdGh1bWJuYWlsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTtcblxuICBib3JkZXI6ICR0aHVtYm5haWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkdGh1bWJuYWlsLXJhZGl1cztcbiAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3c7XG5cbiAgbGluZS1oZWlnaHQ6IDA7XG59XG5cbkBtaXhpbiB0aHVtYm5haWwtbGluayB7XG4gIHRyYW5zaXRpb246ICR0aHVtYm5haWwtdHJhbnNpdGlvbjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjtcbiAgfVxuXG4gIGltYWdlIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRodW1ibmFpbCB7XG4gIC50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbDtcbiAgfVxuXG4gIGEudGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB0aHVtYm5haWwtbGluaztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgbWVudVxuLy8vL1xuXG4vLy8gTWFyZ2luIG9mIGEgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIExlZnQtaGFuZCBtYXJnaW4gb2YgYSBuZXN0ZWQgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgaXRlbXMgaW4gYSBwaWxsIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIG1hcmdpbiBmb3IgaXRlbXMgaW4gYSBzaW1wbGUgbWVudS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZW51LXNpbXBsZS1tYXJnaW46IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tY29sb3ItYWN0aXZlOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBzdGF0ZS4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYGFjdGl2ZWAgd2l0aCBgaXMtYWN0aXZlYC4gXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYGFjdGl2ZWAgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LXN0YXRlLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBjZW50ZXJlZC4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYC5tZW51LWNlbnRlcmVkID4gLm1lbnVgIHdpdGggYC5tZW51LmFsaWduLWNlbnRlcmAuIFxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBtZW51LWNlbnRlcmVkYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciB1c2luZyBgaWNvbi0qYCBjbGFzc2VzIHdpdGhvdXQgYC5pY29uc2AgY2xhc3Nlc1xuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoaXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtaWNvbnMtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBNZW51LlxuQG1peGluIG1lbnUtYmFzZSB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgbGkge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxuXG4gIGEsXG4gIC5idXR0b24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtcy1wYWRkaW5nO1xuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXG4gIGlucHV0LFxuICBzZWxlY3QsXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLy8vIEV4cGFuZHMgdGhlIGl0ZW1zIG9mIGEgTWVudSwgc28gZWFjaCBpdGVtIGlzIHRoZSBzYW1lIHdpZHRoLlxuQG1peGluIG1lbnUtZXhwYW5kIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgbGkge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgPiBsaSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFsaWduIG1lbnUgaXRlbXMuXG5AbWl4aW4gbWVudS1hbGlnbigkYWxpZ25tZW50KSB7XG4gIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi52ZXJ0aWNhbCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSBjZW50ZXIge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnUuIFRoaXMgZWZmZWN0cyB0aGUgc2lkZSBvZiB0aGUgYDxsaT5gIHRoYXQgcmVjZWl2ZXMgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiBbJG1lbnUtc2ltcGxlLW1hcmdpbl0gLSBUaGUgbWFyZ2luIHRvIGFwcGx5IHRvIGVhY2ggYDxsaT5gLlxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCwgJG1hcmdpbjogJG1lbnUtc2ltcGxlLW1hcmdpbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgbGkgKyBsaSB7XG4gICAgbWFyZ2luLSN7JGRpcn06ICRtYXJnaW47XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJG1hcmdpbiBbJG1lbnUtbmVzdGVkLW1hcmdpbl0gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRuZXN0ZWQtYWxpZ25tZW50IFtsZWZ0XSAtIEFsaWdubWVudCBvZiB0aGUgbmVzdGVkIGNsYXNzXG5AbWl4aW4gbWVudS1uZXN0ZWQoXG4gICRtYXJnaW46ICRtZW51LW5lc3RlZC1tYXJnaW4sXG4gICRuZXN0ZWQtYWxpZ25tZW50OiBsZWZ0XG4pIHtcbiAgQGlmICRuZXN0ZWQtYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1hcmdpbjtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xuICB9XG5cbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBpY29ucyBpbiBtZW51cy5cbkBtaXhpbiBtZW51LWljb25zKCkge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBpbWcsXG4gICAgaSxcbiAgICBzdmcge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgKyBzcGFuIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgcG9zaXRpb24gY2xhc3NlcyBmb3IgaWNvbnMgd2l0aGluIGEgbWVudS5cbkBtaXhpbiBtZW51LWljb24tcG9zaXRpb24oJHBvc2l0aW9uOiBsZWZ0LCAkc3BhY2luZzogJG1lbnUtaWNvbi1zcGFjaW5nKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRzcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIHBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xuXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiBtZW51LXN0YXRlLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gIGNvbG9yOiAkbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVudSB7XG4gIC5tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LWJhc2U7XG5cbiAgICAvLyBEZWZhdWx0IG9yaWVudGF0aW9uOiBob3Jpem9udGFsXG4gICAgJiwgJi5ob3Jpem9udGFsIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgIH1cblxuICAgIC8vIFZlcnRpY2FsIG9yaWVudGF0aW9uIG1vZGlmaWVyXG4gICAgJi52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgfVxuXG4gICAgLy8gRXZlbi13aWR0aCBtb2RpZmllciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlXG4gICAgJi5zaW1wbGUge1xuICAgICAgQGluY2x1ZGUgbWVudS1zaW1wbGU7XG4gICAgfVxuXG4gICAgLy8gQnJlYWtwb2ludCBzcGVjaWZpYyB2ZXJzaW9uc1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoJHNtYWxsOiBmYWxzZSkge1xuICAgICAgJi4jeyQtemYtc2l6ZX0taG9yaXpvbnRhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuICAgICAgfVxuXG4gICAgICAmLiN7JC16Zi1zaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWV4cGFuZDtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tc2ltcGxlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYubmVzdGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkO1xuICAgIH1cblxuICAgIC8vIEljb24gQmFzZSBTdHlsZXNcbiAgICAmLmljb25zIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbnM7XG4gICAgfVxuXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXG4gICAgQGlmICRtZW51LWljb25zLWJhY2stY29tcGF0IHtcbiAgICAgICYuaWNvbi10b3AsXG4gICAgICAmLmljb24tcmlnaHQsXG4gICAgICAmLmljb24tYm90dG9tLFxuICAgICAgJi5pY29uLWxlZnQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEljb24gTGVmdFxuICAgICYuaWNvbi1sZWZ0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihsZWZ0KTtcbiAgICB9XG5cbiAgICAvLyBJY29uIFJpZ2h0XG4gICAgJi5pY29uLXJpZ2h0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbihyaWdodCk7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBUb3BcbiAgICAmLmljb24tdG9wIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtaWNvbi1wb3NpdGlvbih0b3ApO1xuICAgIH1cblxuICAgIC8vIEljb24gQm90dG9tXG4gICAgJi5pY29uLWJvdHRvbSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24oYm90dG9tKTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmUgc3RhdGVcbiAgICAuaXMtYWN0aXZlID4gYSB7XG4gICAgICBAaW5jbHVkZSBtZW51LXN0YXRlLWFjdGl2ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gQmFja3dhcmQgQ29tcGF0aWJpbGl0eSBmb3IgYWN0aXZlIHN0YXRlXG4gICAgQGlmICRtZW51LXN0YXRlLWJhY2stY29tcGF0IHtcbiAgICAgIC5hY3RpdmUgPiBhIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1zdGF0ZS1hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gbGVmdFxuICAgICYuYWxpZ24tI3skZ2xvYmFsLWxlZnR9IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24obGVmdCk7XG4gICAgfVxuXG4gICAgLy8gQWxpZ24gcmlnaHRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihyaWdodCk7XG5cbiAgICAgIC5uZXN0ZWQge1xuICAgICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkbmVzdGVkLWFsaWdubWVudDogcmlnaHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsaWduIGNlbnRlclxuICAgICYuYWxpZ24tY2VudGVyIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcbiAgICB9XG5cbiAgICAubWVudS10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtdGV4dDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQge1xuICAgIC5tZW51LWNlbnRlcmVkIHtcbiAgICAgID4gLm1lbnUge1xuICAgICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgQGluY2x1ZGUgbWVudS1hbGlnbihjZW50ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFByZXZlbnQgRk9VQyB3aGVuIHVzaW5nIHRoZSBSZXNwb25zaXZlIE1lbnUgcGx1Z2luXG4gIC5uby1qcyBbZGF0YS1yZXNwb25zaXZlLW1lbnVdIHVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJAbWl4aW4gZm91bmRhdGlvbi1tZW51LWljb24ge1xuICAubWVudS1pY29uIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXIoJGNvbG9yOiAkdGl0bGViYXItaWNvbi1jb2xvciwgJGNvbG9yLWhvdmVyOiAkdGl0bGViYXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIH1cblxuICAubWVudS1pY29uLmRhcmsge1xuICAgIEBpbmNsdWRlIGhhbWJ1cmdlcjtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIEBncm91cCBhY2NvcmRpb24tbWVudVxuLy8vL1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGlmIGFjY29yZGlvbiBtZW51cyBoYXZlIHRoZSBkZWZhdWx0IGFycm93IHN0eWxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9ubWVudS1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1pdGVtLWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gYm9yZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1ib3JkZXI6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgaXRlbSBwYWRkaW5nLlxuLy8vIEB0eXBlIExpc3RcbiRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyOiAkYWNjb3JkaW9ubWVudS1ib3JkZXIgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDogNDBweCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSB0b2dnbGUgYmFja2dyb3VuZCBoZWlnaHQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1oZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQ6bm90KC5oYXMtc3VibWVudS10b2dnbGUpID4gYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZSAvIDIpO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLWxlZnQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cbn1cbkBtaXhpbiBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51IHtcblxuICAuYWNjb3JkaW9uLW1lbnUge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgICBib3JkZXItdG9wOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1yaWdodDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgICBib3JkZXItbGVmdDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgfVxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtcGFkZGluZztcbiAgICB9XG5cbiAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgYSB7XG4gICAgICBwYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLmFsaWduLSN7JGdsb2JhbC1yaWdodH0ge1xuICAgICAgLm5lc3RlZC5pcy1hY2NvcmRpb24tc3VibWVudSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW4sIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWFjY29yZGlvbi1tZW51LWxlZnQtcmlnaHQtYXJyb3dzO1xuXG4gICAgICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50W2FyaWEtZXhwYW5kZWQ9J3RydWUnXSA+IGE6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUgbGkge1xuICAgIEBpZiAkYWNjb3JkaW9ubWVudS1ib3JkZXIge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmhhcy1zdWJtZW51LXRvZ2dsZSA+IGEge1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgfVxuXG4gIC8vIFN1Ym1lbnUgdG9nZ2xlXG4gIC5zdWJtZW51LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtcmlnaHR9OiAwO1xuXG4gICAgd2lkdGg6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLXdpZHRoO1xuICAgIGhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0O1xuXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGFjY29yZGlvbi1zdWJtZW51LXRvZ2dsZS1ib3JkZXI7XG5cbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgYXJyb3cgdG8gdGhlIHRvZ2dsZVxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSg2cHgsICRhY2NvcmRpb25tZW51LWFycm93LWNvbG9yLCBkb3duKTtcblxuICAgICAgdG9wOiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbWFyZ2luOiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJvdGF0ZSB0aGUgYXJyb3cgd2hlbiBtZW51IGlzIG9wZW5cbiAgLnN1Ym1lbnUtdG9nZ2xlW2FyaWEtZXhwYW5kZWQ9J3RydWUnXTo6YWZ0ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlO1xuICB9XG5cbiAgLnN1Ym1lbnUtdG9nZ2xlLXRleHQge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcmlsbGRvd25cbi8vLy9cblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydHkgdG8gdXNlIGZvciBhbmltYXRpbmcgbWVudXMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBhcnJvd3MgdG8gZHJpbGxkb3duIGl0ZW1zIHdpdGggc3VibWVudXMsIGFzIHdlbGwgYXMgdGhlIGJhY2sgYnV0dG9uLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRkcmlsbGRvd24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBuZXN0ZWQgbWFyZ2luXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLW5lc3RlZC1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcmlsbGRvd24gdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIG1lbnUgaXRlbSBwYWRkaW5nIGluIHRoZSBzdWJtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc6ICRkcmlsbGRvd24tcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biBzdWJtZW51cy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJpbGxkb3duIGFycm93IGNvbG9yIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyaWxsZG93bi1hcnJvdy1zaXplOiA2cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3Mge1xuICAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1yaWdodCk7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IC0xICogJGRyaWxsZG93bi1hcnJvdy1zaXplO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLWxlZnQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgbGVmdDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlzLWRyaWxsZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCBsZWZ0KTtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG5cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZHJpbGxkb3duLW1lbnUge1xuICAvLyBBcHBsaWVkIHRvIHRoZSBNZW51IGNvbnRhaW5lclxuICAuaXMtZHJpbGxkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYuYW5pbWF0ZS1oZWlnaHQge1xuICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuNXM7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIHRvcCBsZXZlbCA8dWw+XG4gIC5kcmlsbGRvd24ge1xuICAgIGEge1xuICAgICAgcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nO1xuICAgICAgYmFja2dyb3VuZDogJGRyaWxsZG93bi1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC8vIEFwcGxpZWQgdG8gc3VibWVudSA8dWw+c1xuICAgIC5pcy1kcmlsbGRvd24tc3VibWVudSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XG4gICAgICB6LWluZGV4OiAtMTtcblxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDtcbiAgICAgIHRyYW5zaXRpb246ICRkcmlsbGRvd24tdHJhbnNpdGlvbjtcblxuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGlmKCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gbHRyLCAtMTAwJSwgMTAwJSkpO1xuICAgICAgfVxuXG4gICAgICAmLmlzLWNsb3Npbmcge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIDEwMCUsIC0xMDAlKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFN1Ym1lbnUgaXRlbSBwYWRkaW5nXG4gICAgICBhIHtcbiAgICAgICAgcGFkZGluZzogJGRyaWxsZG93bi1zdWJtZW51LXBhZGRpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm5lc3RlZC5pcy1kcmlsbGRvd24tc3VibWVudSB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkZHJpbGxkb3duLW5lc3RlZC1tYXJnaW4pO1xuICAgIH1cblxuICAgIC5kcmlsbGRvd24tc3VibWVudS1jb3Zlci1wcmV2aW91cyB7XG4gICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgIEBpZiAkZHJpbGxkb3duLWFycm93cyB7XG4gICAgICBAaW5jbHVkZSB6Zi1kcmlsbGRvd24tbGVmdC1yaWdodC1hcnJvd3M7XG5cbiAgICAgIC5qcy1kcmlsbGRvd24tYmFjayA+IGE6OmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJpbGxkb3duLWFycm93LXNpemUsICRkcmlsbGRvd24tYXJyb3ctY29sb3IsICRnbG9iYWwtbGVmdCk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDAuNzVyZW07IC8vIENyZWF0ZXMgc3BhY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHBhZGRpbmcgZm9yIGFsaWduaW5nIHRoZSBhcnJvdyBjb3JyZWN0bHkuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gID4gYTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1yaWdodH06IDE0cHg7XG4gIH1cblxuICAmLm9wZW5zLWxlZnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogNXB4O1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpLm9wZW5zLXJpZ2h0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGEgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgID4gbGkge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDA7XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtbGVmdCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICByaWdodDogMTAwJTtcbiAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtcmlnaHQge1xuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93bi1tZW51IHtcbiAgLmRyb3Bkb3duLm1lbnUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuXG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgfVxuXG4gICAgLy8gVG9wLWxldmVsIGl0ZW1cbiAgICA+IGxpID4gYSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQ7XG4gICAgICBwYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLy8gVG9wLWxldmVsIGl0ZW0gYWN0aXZlIHN0YXRlXG4gICAgPiBsaS5pcy1hY3RpdmUgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bi1tZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU7XG4gICAgfVxuXG4gICAgLm5vLWpzICYgdWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGRyb3Bkb3dubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICB9XG5cbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICAmLiN7JHNpemV9LWhvcml6b250YWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi4jeyRzaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5hbGlnbi1yaWdodCB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudS5maXJzdC1zdWIge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1tZW51LnZlcnRpY2FsIHtcbiAgICB3aWR0aDogMTAwcHg7XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGE6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogNXB4O1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJvcGRvd25tZW51LWFycm93LXNpemU7XG4gICAgfVxuXG4gICAgJi5vcGVucy1pbm5lciA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcblxuICAgICAgdG9wOiAxMDAlO1xuICAgICAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm9wZW5zLWxlZnQgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICByaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuXG4gICAgJi5vcGVucy1yaWdodCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XG4gICAgei1pbmRleDogMTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWluLXdpZHRoOiAkZHJvcGRvd25tZW51LW1pbi13aWR0aDtcblxuICAgIGJvcmRlcjogJGRyb3Bkb3dubWVudS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1zdWJtZW51LWJhY2tncm91bmQ7XG5cbiAgICAuZHJvcGRvd24gJiBhIHtcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgICBAaW5jbHVkZSB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKHR5cGUtb2YoJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpID09ICdudW1iZXInKSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICgtJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gW1RPRE9dIEN1dCBiYWNrIHNwZWNpZmljaXR5XG4gICAgLy8mOm5vdCguanMtZHJvcGRvd24tbm9ob3ZlcikgPiAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQ6aG92ZXIgPiAmLCAvLyB3aHkgaXMgdGhpcyBsaW5lIG5lZWRlZD8gT3BlbmluZyBpcyBoYW5kbGVkIGJ5IEpTIGFuZCB0aGlzIGNhdXNlcyBzb21lIHVnbHkgZmxpY2tlcmluZyB3aGVuIHRoZSBzdWIgaXMgcmUtcG9zaXRpb25lZCBhdXRvbWF0aWNhbGx5Li4uXG4gICAgJi5qcy1kcm9wZG93bi1hY3RpdmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvZmYtY2FudmFzXG4vLy8vXG5cbi8vLyBXaWR0aCBtYXAgb2YgYSBsZWZ0L3JpZ2h0IG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgTWFwXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgbWFwIG9mIGEgdG9wL2JvdHRvbSBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE1hcFxuJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKFxuICBzbWFsbDogMjUwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBmb3IgdGhlIG9mZi1jYW52YXMgb3ZlcmxhcCBwYW5lbC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KSAhZGVmYXVsdDtcblxuLy8vIElubmVyIGJveCBzaGFkb3cgc2l6ZSBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IGNvbG9yIGZvciB0aGUgb2ZmLWNhbnZhcyBwdXNoIHBhbmVsLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1jb2xvcjogcmdiYSgkYmxhY2ssIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIGNvbnRlbnQgb3ZlcmxheS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXg6IDExICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBwdXNoYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgd2l0aCB0aGUgYG92ZXJsYXBgIHRyYW5zaXRpb24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAxMyAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB1c2luZyB0aGUgYHJldmVhbC1mb3ItKmAgY2xhc3NlcyBvciBtaXhpbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTIgIWRlZmF1bHQ7XG5cbi8vLyBMZW5ndGggb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cyAhZGVmYXVsdDtcblxuLy8vIFRpbWluZyBmdW5jdGlvbiBvZiB0aGUgYW5pbWF0aW9uIG9uIGFuIG9mZi1jYW52YXMgcGFuZWwuXG4vLy8gQHR5cGUgS2V5d29yZFxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYSByZXZlYWxlZCBvZmYtY2FudmFzIHdpbGwgYmUgZml4ZWQtcG9zaXRpb24sIGFuZCBzY3JvbGwgd2l0aCB0aGUgc2NyZWVuLlxuLy8vIEB0eXBlIEJvb2xcbiRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIG92ZXJsYXkgdGhhdCBhcHBlYXJzIHdoZW4gYW4gb2ZmLWNhbnZhcyBwYW5lbCBpcyBvcGVuLlxuLy8vIEB0eXBlIENvbG9yXG4kb2ZmY2FudmFzLWV4aXQtYmFja2dyb3VuZDogcmdiYSgkd2hpdGUsIDAuMjUpICFkZWZhdWx0O1xuXG4vLy8gQ1NTIGNsYXNzIHVzZWQgZm9yIHRoZSBtYWluIGNvbnRlbnQgYXJlYS4gVGhlIG9mZi1jYW52YXMgbWl4aW5zIHVzZSB0aGlzIHRvIHRhcmdldCB0aGUgcGFnZSBjb250ZW50LlxuJG1haW5jb250ZW50LWNsYXNzOiAnb2ZmLWNhbnZhcy1jb250ZW50JyAhZGVmYXVsdDtcblxuLy8vIEFkZHMgYmFzZWxpbmUgc3R5bGVzIGZvciBvZmYtY2FudmFzLiBUaGlzIENTUyBpcyByZXF1aXJlZCB0byBtYWtlIHRoZSBvdGhlciBwaWVjZXMgd29yay5cbkBtaXhpbiBvZmYtY2FudmFzLWJhc2ljcyB7XG5cbiAgLy8vIFRyYW5zZm9ybSBkZXByZWNhdGVkIHNpemUgc2V0dGluZ3MgaW50byBtYXAgJiBzaG93IHdhcm5pbmdcbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtc2l6ZSkge1xuICAgICRvZmZjYW52YXMtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtc2l6ZSkgIWdsb2JhbDtcbiAgICBAd2FybiAnJG9mZmNhbnZhcy1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy1zaXplcyBpbnN0ZWFkJztcbiAgfVxuICBAaWYgdmFyaWFibGUtZXhpc3RzKG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSB7XG4gICAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplczogKHNtYWxsOiAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUsIG1lZGl1bTogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplKSAhZ2xvYmFsO1xuICAgIEB3YXJuICckb2ZmY2FudmFzLXZlcnRpY2FsLXNpemUgaXMgZGVwcmVjYXRlZCBhbmQgbm90IHVzZWQgYW55bW9yZSEgUGxlYXNlIHVwZGF0ZSB5b3VyIHNldHRpbmdzIGFuZCB1c2UgdGhlIG1hcCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzIGluc3RlYWQnO1xuICB9XG5cbiAgLy8gQ2hlY2tzIHRoZSB6LWluZGV4ZXMgYW5kIGluY3JlYXNlIHRoZW0gZHVlIHRvIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvdmVybGF5J3Mgei1pbmRleCBpcyBuZXcgc2luY2UgdjYuNCBhbmQgbWF5IGJlIGlkZW50aWNhbCB0byB0aGUgdXNlciBjdXN0b20gc2V0dGluZ3Mgb2YgdGhlIHB1c2ggei1pbmRleC5cbiAgQGlmICRvZmZjYW52YXMtcHVzaC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcHVzaC16aW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXggPD0gJG9mZmNhbnZhcy1wdXNoLXppbmRleCB7ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXggKyAxICFnbG9iYWw7IH1cbiAgQGlmICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCA8PSAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4IHsgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG5cbiAgLy8gSGlkZXMgb3ZlcmZsb3cgb24gYm9keSB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbiAgLmlzLW9mZi1jYW52YXMtb3BlbiB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgb3ZlcmxheSAoZ2VuZXJhdGVkIGJ5IEphdmFTY3JpcHQpXG4gIC5qcy1vZmYtY2FudmFzLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4O1xuXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkb2ZmY2FudmFzLXRyYW5zaXRpb24tbGVuZ3RoICRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmcsIHZpc2liaWxpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nO1xuXG4gICAgYmFja2dyb3VuZDogJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmLmlzLXZpc2libGUge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgJi5pcy1jbG9zYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWFic29sdXRlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG5cbiAgICAmLmlzLW92ZXJsYXktZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYW4gb2ZmLWNhbnZhcyB3cmFwcGVyLlxuQG1peGluIG9mZi1jYW52YXMtd3JhcHBlcigpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgcGFuZWwuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNlKFxuICAkYmFja2dyb3VuZDogJG9mZmNhbnZhcy1iYWNrZ3JvdW5kLFxuICAkdHJhbnNpdGlvbjogJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLFxuICAkZml4ZWQ6IHRydWVcbikge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG5cbiAgQGlmICRmaXhlZCA9PSB0cnVlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC8vIFNldCB0aGUgb2ZmLWNhbnZhcyB6LWluZGV4LlxuICB6LWluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4O1xuXG4gIC8vIEluY3JlYXNlIENTUyBzcGVjaWZpY2l0eVxuICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcbiAgfVxuXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbjtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXG4gIC8vIEhpZGUgaW5hY3RpdmUgb2ZmLWNhbnZhcyB3aXRoaW4gdGhlIGNvbnRlbnQgdGhhdCBoYXZlIHRoZSBzYW1lIHBvc2l0aW9uXG4gICYuaXMtY2xvc2VkIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBPdmVybGFwIG9ubHkgc3R5bGVzLlxuICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcCB7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICBib3gtc2hhZG93OiAkb2ZmY2FudmFzLXNoYWRvdztcbiAgICB9XG4gIH1cblxuICAvLyBTZXRzIHRyYW5zZm9ybSB0byAwIHRvIHNob3cgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbiAgJi5pcy1vcGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgdG8gcG9zaXRpb24gYW4gb2ZmLWNhbnZhcyBwYW5lbCB0byB0aGUgbGVmdC9yaWdodC90b3AvYm90dG9tLlxuQG1peGluIG9mZi1jYW52YXMtcG9zaXRpb24oXG4gICRwb3NpdGlvbjogbGVmdCxcbiAgJG9yaWVudGF0aW9uOiBob3Jpem9udGFsLFxuICAkc2l6ZXM6IGlmKCRvcmllbnRhdGlvbiA9PSBob3Jpem9udGFsLCAkb2ZmY2FudmFzLXNpemVzLCAkb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzKVxuKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcblxuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gcmlnaHQge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLSRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUgaXMgc2V0LCBhZGQgaW5uZXIgYm94LXNoYWRvdy5cbiAgLy8gVGhpcyBtaW1pY3MgdGhlIG9mZi1jYW52YXMgcGFuZWwgaGF2aW5nIGEgbG93ZXIgei1pbmRleCwgd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBvbmUuXG4gIEBpZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIHtcbiAgICAmLmlzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhyaWdodCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cobGVmdCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHRvcCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGJvdHRvbSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHBvc2l0aW9uID09IGJvdHRvbSB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KHRvcCwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSwgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbi8vLyBTZXRzIHRoZSBzdHlsZXMgZm9yIHRoZSBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiBvZmYtY2FudmFzLWNvbnRlbnQoKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC8vIFRyYW5zZm9ybSBzY29wZSB1bnRpbCB0aGUgZWxlbWVudCBpcyBjbG9zZWQgKG1ha2VzIHN1cmUgdHJhbnNpdGlvbmVuZCBnZXRzIHRyaWdnZXJlZClcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxuXG4gIC8vIENvbnNpZGVyIGVsZW1lbnQgJiBjb250ZW50LCBuZXN0ZWQgaW4gYW5vdGhlciBjb250ZW50XG4gIC5vZmYtY2FudmFzLmlzLW9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0aGF0IHJldmVhbCBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtcmV2ZWFsKFxuJHBvc2l0aW9uOiBsZWZ0LFxuJHppbmRleDogJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LFxuJGNvbnRlbnQ6ICRtYWluY29udGVudC1jbGFzcyxcbiRicmVha3BvaW50OiBzbWFsbFxuKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgei1pbmRleDogJHppbmRleDtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcblxuICBAaWYgbm90ICRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAuY2xvc2UtYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgcmV2ZWFsZWQgZWxlbWVudCBpcyBuZXN0ZWQgaW4gY29udGVudFxuICAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIEBhdC1yb290IC4jeyRjb250ZW50fS5oYXMtcmV2ZWFsLSN7JHBvc2l0aW9ufSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xuICB9XG5cbiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKHByaW9yIHRvIHY2LjQpXG4gICYgfiAuI3skY29udGVudH0ge1xuICAgIG1hcmdpbi0jeyRwb3NpdGlvbn06IC16Zi1nZXQtYnAtdmFsKCRvZmZjYW52YXMtc2l6ZXMsICRicmVha3BvaW50KTtcbiAgfVxufVxuXG4vLy8gT3ZlcnJpZGVzIHRoZSBvZmYtY2FudmFzIHN0eWxlc1xuQG1peGluIGluLWNhbnZhcygpIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB3aWR0aDogYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG5cbiAgLy8gSW5jcmVhc2UgQ1NTIHNwZWNpZmljaXR5XG4gICYucG9zaXRpb24tbGVmdCxcbiAgJi5wb3NpdGlvbi1yaWdodCxcbiAgJi5wb3NpdGlvbi10b3AsXG4gICYucG9zaXRpb24tYm90dG9tIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb2ZmLWNhbnZhcyB7XG4gIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzaWNzO1xuXG4gIC8vIE9mZi1jYW52YXMgd3JhcHBlclxuICAub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXdyYXBwZXI7XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lclxuICAub2ZmLWNhbnZhcyB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlO1xuXG4gICAgLy8gRm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgZm9yIG5lc3RlZCBvZmYtY2FudmFzIGJlY2F1c2UgZml4ZWQgZG9lc24ndCB3b3JrIGZvciBwdXNoIHRyYW5zaXRpb24gd2l0aGluIHRoZSB0cmFuc2Zvcm0gc2NvcGUuXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAmIHtcbiAgICAgIC8vIE5PVEU6IHNpbmNlIG92ZXJsYXAgdHJhbnNpdGlvbiBpcyBjdXJyZW50bHkgZm9yY2VkIGlmIG5lc3RlZCwgdGhlcmUncyBubyBuZWVkIHRvIGZvcmNlIHBvc2l0aW9uIGFic29sdXRlIHVudGlsIG5lc3RlZCBwdXNoIHRyYW5zaXRpb24gaXMgc3VwcG9ydGVkLlxuICAgICAgLy8gcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyIHdpdGggYWJzb2x1dGUgcG9zaXRpb25cbiAgLm9mZi1jYW52YXMtYWJzb2x1dGUge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZSgkZml4ZWQ6IGZhbHNlKTtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgcG9zaXRpb24gY2xhc3Nlc1xuICAucG9zaXRpb24tbGVmdCAgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24obGVmdCwgICBob3Jpem9udGFsKTsgfVxuICAucG9zaXRpb24tcmlnaHQgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24ocmlnaHQsICBob3Jpem9udGFsKTsgfVxuICAucG9zaXRpb24tdG9wICAgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24odG9wLCAgICB2ZXJ0aWNhbCk7IH1cbiAgLnBvc2l0aW9uLWJvdHRvbSAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKGJvdHRvbSwgdmVydGljYWwpOyB9XG5cbiAgLm9mZi1jYW52YXMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1jb250ZW50O1xuICB9XG5cbiAgLy8gUmV2ZWFsIG9mZi1jYW52YXMgcGFuZWwgb24gbGFyZ2VyIHNjcmVlbnNcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAucG9zaXRpb24tbGVmdC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChsZWZ0LCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXJpZ2h0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHJpZ2h0LCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXRvcC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbCh0b3AsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tYm90dG9tLnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGJvdHRvbSwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1vdmUgaW4tY2FudmFzIGZvciBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5vZmYtY2FudmFzLmluLWNhbnZhcy1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGluLWNhbnZhcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCByZXZlYWxcbi8vLy9cblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIG1vZGFsLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgYSBtb2RhbCwgd2l0aCBubyBjbGFzcyBhcHBsaWVkLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC13aWR0aDogNjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1heGltdW0gd2lkdGggb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGluc2lkZSBhIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBhcm91bmQgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIG1vZGFsLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgbW9kYWxzLiBUaGUgb3ZlcmxheSB1c2VzIHRoaXMgdmFsdWUsIHdoaWxlIHRoZSBtb2RhbCBpdHNlbGYgdXNlcyB0aGlzIHZhbHVlIHBsdXMgb25lLlxuLy8vIEB0eXBlIE51bWJlclxuJHJldmVhbC16aW5kZXg6IDEwMDUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIG1vZGFsIG92ZXJsYXlzLlxuLy8vIEB0eXBlIENvbG9yXG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNDUpICFkZWZhdWx0O1xuXG5cbi8vIFBsYWNlaG9sZGVyIHNlbGVjdG9yIGZvciBtZWRpdW0tYW5kLXVwIG1vZGFsc1xuLy8gUHJldmVudHMgZHVwbGljYXRlIENTUyB3aGVuIGRlZmluaW5nIG11bHRpcGxlIFJldmVhbCBzaXplc1xuLy8gVGhpcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgYnJlYWtwb2ludCB0aGVuIGBAbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoYFxuQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgJXJldmVhbC1jZW50ZXJlZCB7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgfVxufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBtb2RhbCBvdmVybGF5LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBvdmVybGF5LlxuQG1peGluIHJldmVhbC1vdmVybGF5KCRiYWNrZ3JvdW5kOiAkcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZCkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXg7XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhIG1vZGFsLlxuQG1peGluIHJldmVhbC1tb2RhbC1iYXNlIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB6LWluZGV4OiAkcmV2ZWFsLXppbmRleCArIDE7XG4gIC8vIFdvcmthcm91bmQgYW5kcm9pZCBicm93c2VyIHotaW5kZXggYnVnXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiAkcmV2ZWFsLXBhZGRpbmc7XG5cbiAgYm9yZGVyOiAkcmV2ZWFsLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHJldmVhbC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRyZXZlYWwtYmFja2dyb3VuZDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgcm93cyBkb24ndCBoYXZlIGEgbWluLXdpZHRoIG9uIHRoZW1cbiAgLmNvbHVtbiB7XG4gICAgbWluLXdpZHRoOiAwO1xuICB9XG5cbiAgLy8gU3RyaXAgbWFyZ2lucyBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG1vZGFsXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEFkanVzdHMgdGhlIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBtb2RhbC4gR2VuZXJhbGx5IGEgcGVyY2VudGFnZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBbJHJldmVhbC1tYXgtd2lkdGhdIC0gTWF4aW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLXdpZHRoKFxuICAkd2lkdGg6ICRyZXZlYWwtd2lkdGgsXG4gICRtYXgtd2lkdGg6ICRyZXZlYWwtbWF4LXdpZHRoXG4pIHtcbiAgLy8gRXh0ZW5kcyBtdXN0IGJlIG1hZGUgb3V0c2lkZSBvZiBicmVha3BvaW50cyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5ld2VyIFNhc3MgdmVyc2lvbnMgKGxpYnNhc3MgdjMuNSlcbiAgQGV4dGVuZCAlcmV2ZWFsLWNlbnRlcmVkO1xuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgZnVsbC1zY3JlZW4gbW9kYWwsIHdoaWNoIHN0cmV0Y2hlcyB0aGUgZnVsbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB3aW5kb3cuXG5AbWl4aW4gcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW4ge1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBtYXJnaW4tbGVmdDogMDtcblxuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXJldmVhbCB7XG5cbiAgLy8vIERpc2FibGVzIHRoZSBzY3JvbGwgd2hlbiBSZXZlYWwgaXMgc2hvd24gdG8gcHJldmVudCB0aGUgYmFja2dyb3VuZCBmcm9tIHNoaWZ0aW5nXG4gIGh0bWwuaXMtcmV2ZWFsLW9wZW4ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG5cbiAgICAmLnpmLWhhcy1zY3JvbGwge1xuICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIH1cblxuICAgIGJvZHkgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAvLyBPdmVybGF5XG4gIC5yZXZlYWwtb3ZlcmxheSB7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW92ZXJsYXk7XG4gIH1cblxuICAvLyBNb2RhbCBjb250YWluZXJcbiAgLnJldmVhbCB7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWJhc2U7XG4gICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKCRyZXZlYWwtd2lkdGgpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDEwMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgLy8gUmVtb3ZlIHBhZGRpbmdcbiAgICAmLmNvbGxhcHNlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLy8gU2l6aW5nIGNsYXNzZXNcbiAgICAmLnRpbnkgIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDMwJSk7IH1cbiAgICAmLnNtYWxsIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDUwJSk7IH1cbiAgICAmLmxhcmdlIHsgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLXdpZHRoKDkwJSk7IH1cblxuICAgIC8vIEZ1bGwtc2NyZWVuIG1vZGVcbiAgICAmLmZ1bGwge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICBAaW5jbHVkZSByZXZlYWwtbW9kYWwtZnVsbHNjcmVlbjtcbiAgICB9XG5cbiAgICAmLndpdGhvdXQtb3ZlcmxheSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQG1peGluIGZvdW5kYXRpb24tc3RpY2t5IHtcbiAgLnN0aWNreS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5zdGlja3kge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICAuc3RpY2t5LmlzLXN0dWNrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogNTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICYuaXMtYXQtdG9wIHtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLnN0aWNreS5pcy1hbmNob3JlZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG5cbiAgICAmLmlzLWF0LWJvdHRvbSB7XG4gICAgICBib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0aXRsZS1iYXJcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aXRsZWJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBXZWlnaHRcbiR0aXRsZWJhci10ZXh0LWZvbnQtd2VpZ2h0OiBib2xkICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhciBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiB0aGUgbWVudSBpY29uIGFuZCB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRpdGxlLWJhciB7XG4gIC50aXRsZS1iYXIge1xuICAgIHBhZGRpbmc6ICR0aXRsZWJhci1wYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6ICR0aXRsZWJhci1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3I7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICAubWVudS1pY29uIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcbiAgICB9XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudGl0bGUtYmFyLWxlZnQsXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudGl0bGUtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudGl0bGUtYmFyLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXdlaWdodDogJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRvcC1iYXJcbi8vLy9cblxuLy8vIFBhZGRpbmcgZm9yIHRoZSB0b3AgYmFyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdG9wIGJhci4gVGhpcyBjb2xvciBhbHNvIGNhc2NhZGVzIHRvIG1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igc3VibWVudXMgd2l0aGluIHRoZSB0b3AgYmFyLiBVc2VmdWxsIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyB0cmFuc3BhcmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgZm9yIHRoZSB0b3AgYmFyIHRpdGxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMCAhZGVmYXVsdDtcblxuLy8vIE1heGltdW0gd2lkdGggb2YgYDxpbnB1dD5gIGVsZW1lbnRzIGluc2lkZSB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItaW5wdXQtd2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBhdCB3aGljaCB0b3AgYmFyIHN3aXRjaGVzIGZyb20gbW9iaWxlIHRvIGRlc2t0b3Agdmlldy5cbi8vLyBAdHlwZSBCcmVha3BvaW50XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgdG9wIGJhciBjb250YWluZXIuXG5AbWl4aW4gdG9wLWJhci1jb250YWluZXIge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxuXG4gIHBhZGRpbmc6ICR0b3BiYXItcGFkZGluZztcblxuICAmLFxuICB1bCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgJHRvcGJhci1iYWNrZ3JvdW5kIGlzIGRpZmZlcm50IGZyb20gJHRvcGJhci1iYWNrZ3JvdW5kLXN1Ym1lbnVcbiAgQGlmICgkdG9wYmFyLWJhY2tncm91bmQgIT0gJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQpIHtcbiAgICB1bCB1bCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9wYmFyLXN1Ym1lbnUtYmFja2dyb3VuZDtcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0cmFpbiB3aWR0aCBvZiBpbnB1dHMgYnkgZGVmYXVsdCB0byBtYWtlIHRoZW0gZWFzaWVyIHRvIGFycmFuZ2VcbiAgaW5wdXQge1xuICAgIG1heC13aWR0aDogJHRvcGJhci1pbnB1dC13aWR0aDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMXJlbTtcbiAgfVxuXG4gIC8vIFRoZSBhYm92ZSBzdHlsZXMgc2hvdWxkbid0IGFwcGx5IHRvIGlucHV0IGdyb3VwIGZpZWxkc1xuICAuaW5wdXQtZ3JvdXAtZmllbGQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICB9XG5cbiAgaW5wdXQuYnV0dG9uIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgd2lkdGg6IGF1dG87XG4gIH1cbn1cblxuLy8vIE1ha2VzIHNlY3Rpb25zIG9mIGEgdG9wIGJhciBzdGFjayBvbiB0b3Agb2YgZWFjaCBvdGhlci5cbkBtaXhpbiB0b3AtYmFyLXN0YWNrZWQge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAvLyBTdWItc2VjdGlvbnNcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFVuZG9lcyB0aGUgQ1NTIGFwcGxpZWQgYnkgdGhlIGB0b3AtYmFyLXN0YWNrZWQoKWAgbWl4aW4uXG5AbWl4aW4gdG9wLWJhci11bnN0YWNrIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10b3AtYmFyIHtcbiAgLy8gVG9wIGJhciBjb250YWluZXJcbiAgLnRvcC1iYXIge1xuICAgIEBpbmNsdWRlIHRvcC1iYXItY29udGFpbmVyO1xuXG4gICAgLy8gU3RhY2sgb24gc21hbGwgc2NyZWVucyBieSBkZWZhdWx0XG4gICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludCkge1xuICAgICAgQGluY2x1ZGUgdG9wLWJhci11bnN0YWNrO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGNsYXNzZXMgZm9yIHN0YWNraW5nIG9uIGVhY2ggc2NyZWVuIHNpemUgKGRlZmluZWQgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcylcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICYuc3RhY2tlZC1mb3ItI3skc2l6ZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgICAgICAgICAgQGluY2x1ZGUgdG9wLWJhci1zdGFja2VkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFN1Yi1zZWN0aW9uc1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIG1hcmdpbjogJHRvcGJhci10aXRsZS1zcGFjaW5nO1xuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudG9wLWJhci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHBhZGRpbmc6ICR0b3BiYXItdGl0bGUtc3BhY2luZztcblxuICAgICAgLm1lbnUtaWNvbiB7XG4gICAgICAgIGJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3AtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZmxvYXRcbi8vLy9cblxuQG1peGluIGZvdW5kYXRpb24tZmxvYXQtY2xhc3NlcyB7XG4gIC5mbG9hdC1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5mbG9hdC1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIC5jbGVhcmZpeCB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIEZsZXhib3ggVXRpbGl0aWVzXG4vLy8vXG4vL1xuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb3VudCBvZiBzb3VyY2Ugb3JkZXJpbmdgXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQ6IDYgIWRlZmF1bHQ7XG5cbi8vLyBRdWlja2x5IGRpc2FibGUvZW5hYmxlIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIFZhbmlsbGEgRmxleCBIZWxwZXJzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHM6IHRydWUgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmbGV4LWhlbHBlcnMge1xuICAuZmxleC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGZsZXg7XG4gIH1cblxuICAuZmxleC1jaGlsZC1hdXRvIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWdyb3cge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuXG4gIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgIC5mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWF1dG8ge1xuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1zaHJpbmsge1xuICAgICAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tZmxleC1kaXItI3skZGlyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzIHtcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdXNpbmcganVzdGlmeS1jb250ZW50XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtanVzdGlmeSB7XG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IFNwZWNpZmljYWxseSBmb3IgVmVydGljYWwgTWVudVxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gbWFwLXJlbW92ZSgkLXpmLWZsZXgtanVzdGlmeSwgJ2p1c3RpZnknLCAnc3BhY2VkJykge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgJi5tZW51ID4gbGkgPiBhIHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcbiAgQGVhY2ggJHZkaXIsICRwcm9wIGluICQtemYtZmxleC1hbGlnbiB7XG4gICAgLmFsaWduLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHk6ICR2ZGlyKTtcbiAgICB9XG5cbiAgICAuYWxpZ24tc2VsZi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHk6ICR2ZGlyKTtcbiAgICB9XG4gIH1cblxuICAvLyBDZW50cmFsIGFsaWdubWVudCBvZiBjb250ZW50XG4gIC5hbGlnbi1jZW50ZXItbWlkZGxlIHtcbiAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiBjZW50ZXIsICR5OiBtaWRkbGUpO1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC8vIFNvdXJjZSBvcmRlcmluZ1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudCB7XG4gICAgICAuI3skLXpmLXNpemV9LW9yZGVyLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1vcmRlcigkaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmFuaWxsYSBGbGV4Ym94IEhlbHBlcnNcbiAgQGluY2x1ZGUgZmxleC1oZWxwZXJzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yKCRzaXplKSB7XG4gICRzaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gIC8vIFVzZSBhIHByZWNpc2lvbiB1bmRlciAxcHggdG8gc3VwcG9ydCBicm93c2VyIHpvb20sIGJ1dCBub3QgdG8gbG93IHRvIGF2b2lkIHJvdW5kaW5nLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3p1cmIvZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgJHNpemU6IC16Zi1icC10by1lbSgkc2l6ZSkgLSAuMDAxMjU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSBkb3duKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBIaWRlIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgb25seSBkaXNwbGF5aW5nIGl0IHdpdGhpbiBhIGNlcnRhaW4gYnJlYWtwb2ludC5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIHNob3ctZm9yLW9ubHkoJHNpemUpIHtcbiAgJGxvd2VyLWJvdW5kLXNpemU6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG4gICR1cHBlci1ib3VuZC1zaXplOiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkc2l6ZSk7XG5cbiAgLy8gbW9yZSBvZnRlbiB0aGFuIG5vdCB0aGlzIHdpbGwgYmUgY29ycmVjdCwganVzdCBvbmUgdGltZSByb3VuZCB0aGUgbG9vcCBpdCB3b24ndCBzbyBzZXQgaW4gc2NvcGUgaGVyZVxuICAkbG93ZXItYm91bmQ6IC16Zi1icC10by1lbSgkbG93ZXItYm91bmQtc2l6ZSkgLSAuMDAxMjU7XG4gIC8vIHRlc3QgYWN0dWFsIGxvd2VyLWJvdW5kLXNpemUsIGlmIDAgc2V0IGl0IHRvIDBlbVxuICBAaWYgc3RyaXAtdW5pdCgkbG93ZXItYm91bmQtc2l6ZSkgPT0gMCB7XG4gICAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpO1xuICB9XG5cbiAgQGlmICR1cHBlci1ib3VuZC1zaXplID09IG51bGwge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJHVwcGVyLWJvdW5kOiAtemYtYnAtdG8tZW0oJHVwcGVyLWJvdW5kLXNpemUpO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxvd2VyLWJvdW5kKSwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkdXBwZXItYm91bmQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLy8gU2hvdyBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIGFuZCBoaWRlIGl0IGFib3ZlIGEgY2VydGFpbiBzY3JlZW4gc2l6ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIC0gQnJlYWtwb2ludCB0byB1c2UuICoqTXVzdCBiZSBhIGJyZWFrcG9pbnQgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnRzYC4qKlxuQG1peGluIGhpZGUtZm9yKCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvci1vbmx5KCRzaXplKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgb25seSkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi12aXNpYmlsaXR5LWNsYXNzZXMge1xuICAvLyBCYXNpYyBoaWRpbmcgY2xhc3Nlc1xuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmludmlzaWJsZSB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSB2aXNpYmlsaXR5IGNsYXNzZXNcbiAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgIC5oaWRlLWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIGhpZGUtZm9yKCRzaXplKTtcbiAgICAgIH1cblxuICAgICAgLnNob3ctZm9yLSN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgc2hvdy1mb3IoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5oaWRlLWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIGhpZGUtZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cblxuICAgIC5zaG93LWZvci0jeyRzaXplfS1vbmx5IHtcbiAgICAgIEBpbmNsdWRlIHNob3ctZm9yLW9ubHkoJHNpemUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNjcmVlbiByZWFkZXIgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIC8vIE5lZWQgYSBcImhpZGUtZm9yLXNyXCIgY2xhc3M/IEFkZCBhcmlhLWhpZGRlbj0ndHJ1ZScgdG8gdGhlIGVsZW1lbnRcbiAgLnNob3ctZm9yLXNyLFxuICAuc2hvdy1vbi1mb2N1cyB7XG4gICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGU7XG4gIH1cblxuICAvLyBPbmx5IGRpc3BsYXkgdGhlIGVsZW1lbnQgd2hlbiBpdCdzIGZvY3VzZWRcbiAgLnNob3ctb24tZm9jdXMge1xuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGluY2x1ZGUgZWxlbWVudC1pbnZpc2libGUtb2ZmO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhbmRzY2FwZSBhbmQgcG9ydHJhaXQgdmlzaWJpbGl0eVxuICAuc2hvdy1mb3ItbGFuZHNjYXBlLFxuICAuaGlkZS1mb3ItcG9ydHJhaXQge1xuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLmhpZGUtZm9yLWxhbmRzY2FwZSxcbiAgLnNob3ctZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQocG9ydHJhaXQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGVcbi8vLy9cblxuLy8gUmVsYXRpb25hbCBNaXhpbnNcbkBpbXBvcnQgJ3JlbGF0aW9uJztcblxuLy8gQm94IE1peGluXG5AaW1wb3J0ICdib3gnO1xuXG4vLyBSb3RhdGUgTWl4aW5cbkBpbXBvcnQgJ3JvdGF0ZSc7XG5cbi8vIFRleHQgdXRpbGl0aWVzXG5AaW1wb3J0ICd0ZXh0LXV0aWxpdGllcyc7XG5cbi8vIFRleHQgdHJhbnNmb3JtYXRpb24gY2xhc3Nlc1xuQGltcG9ydCAndGV4dC10cmFuc2Zvcm1hdGlvbic7XG5cbi8vIFRleHQgRGVjb3JhdGlvbiBjbGFzc2VzXG5AaW1wb3J0ICd0ZXh0LWRlY29yYXRpb24nO1xuXG4vLyBGb250IFN0eWxpbmdcbkBpbXBvcnQgJ2ZvbnQtc3R5bGluZyc7XG5cbi8vIExpc3QgU3R5bGUgdHlwZVxuQGltcG9ydCAnbGlzdC1zdHlsZS10eXBlJztcblxuLy8gUm91bmRlZCBVdGlsaXR5XG5AaW1wb3J0ICdyb3VuZGVkJztcblxuLy8gQm9yZGVyZWQgVXRpbGl0eVxuQGltcG9ydCAnYm9yZGVyZWQnO1xuXG4vLyBTaGFkb3cgVXRpbGl0eVxuQGltcG9ydCAnc2hhZG93JztcblxuLy8gQXJyb3cgVXRpbGl0eVxuQGltcG9ydCAnYXJyb3cnO1xuXG4vLyBTZXBhcmF0b3IgVXRpbGl0eVxuQGltcG9ydCAnc2VwYXJhdG9yJztcblxuLy8gT3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcbkBpbXBvcnQgJ292ZXJmbG93JztcblxuLy8gRGlzcGxheSBjbGFzc2VzXG5AaW1wb3J0ICdkaXNwbGF5JztcblxuLy8gUG9zaXRpb24gSGVscGVyc1xuQGltcG9ydCAncG9zaXRpb24nO1xuXG4vLyBCb3JkZXIgYm94XG5AaW1wb3J0ICdib3JkZXItYm94JztcblxuLy8gQm9yZGVyIG5vbmUgVXRpbHR5XG5AaW1wb3J0ICdib3JkZXItbm9uZSc7XG5cbi8vIFNpemluZyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3NpemluZyc7XG5cbi8vIFNwYWNpbmcgVXRpbGl0aWVzXG5AaW1wb3J0ICdzcGFjaW5nJztcblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXV0aWxpdGllcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1mb250LXN0eWxpbmc7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtYXJyb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNlcGFyYXRvcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3c7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXk7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXBvc2l0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItYm94O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXItbm9uZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2l6aW5nO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zcGFjaW5nO1xufVxuIiwiLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gZnJvbSB0aGUgZmlyc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gZmlyc3QoJG51bSkge1xuICBAaWYgJG51bSA9PSAxIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJjpudGgtY2hpbGQoLW4gKyAjeyRudW19KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgZmlyc3QgZXhhY3QgY2hpbGRcbkBtaXhpbiBmaXJzdC1jaGlsZCB7XG4gICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gZnJvbSB0aGUgbGFzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBMYXN0IGBuYCBudW1iZXJzIG9mIHRvdGFsIGNoaWxkcmVuIFxuQG1peGluIGxhc3QoJG51bSkge1xuICAmOm50aC1sYXN0LWNoaWxkKC1uICsgI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgdGhlIGxhc3QgZXhhY3QgY2hpbGRcbkBtaXhpbiBsYXN0LWNoaWxkIHtcbiAgJjpsYXN0LW9mLXR5cGUge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgY2hpbGRyZW4gZXZlcnkgYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gRXZlcnkgYG5gIG51bWJlciBvZiBhbGwgY2hpbGRyZW5cbkBtaXhpbiBldmVyeSgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBvbmx5IHRoZSBmaXJzdCBhbmQgbGFzdCBjaGlsZC5cbkBtaXhpbiBmaXJzdC1sYXN0IHtcbiAgJjpmaXJzdC1jaGlsZCxcbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBhZnRlciB0aGUgZmlyc3QgdG8gYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gQWZ0ZXIgRmlyc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gYWZ0ZXItZmlyc3QoJG51bSkge1xuICAmOm50aC1jaGlsZChuICsgI3skbnVtICsgMX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZWZvcmUgYCRudW1gIGZyb20gdGhlIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBGcm9tIExhc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gZnJvbS1sYXN0KCRudW0pIHtcbiAgJjpudGgtbGFzdC1jaGlsZCgjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGZpcnN0IGFuZCB0aGUgYCRudW1gIGNoaWxkIGZyb20gdGhlIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIGNhbGxlZCBmcm9tIGZpcnN0IGFuZCBsYXN0IFxuQG1peGluIGZyb20tZmlyc3QtbGFzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX0pLFxuICAmOm50aC1sYXN0LWNoaWxkKCN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBidXQgYCRudW1gLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIGFsbCBvdGhlciBjaGlsZHJlbiBcbkBtaXhpbiBhbGwtYnV0KCRudW0pIHtcbiAgJjpub3QoOm50aC1jaGlsZCgjeyRudW19KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJldHdlZW4gdGhlIGAkbnVtYCBmaXJzdCBhbmQgdGhlIGAkbnVtYCBsYXN0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtW10gYG5gIG51bWJlciBleGNsdWRlZCBmcm9tIGZpcnN0IGFuZCBsYXN0IGZyb20gYWxsIG90aGVyIGNoaWxkcmVuXG5AbWl4aW4gYWxsLWJ1dC1maXJzdC1sYXN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQobiArICN7JG51bX0pOm50aC1sYXN0LWNoaWxkKG4gKyAjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFdpbGwgb25seSBzZWxlY3QgdGhlIGNoaWxkIGlmIGl0J3MgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIG5vdCBiZSBhcHBsaWVkLlxuQG1peGluIHVuaXF1ZSB7XG4gICY6b25seS1jaGlsZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFdpbGwgb25seSBzZWxlY3QgY2hpbGRyZW4gaWYgdGhleSBhcmUgbm90IHVuaXF1ZS4gVGhhdCBtZWFucyB0aGF0IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGNoaWxkcmVuLCB0aGUgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxuQG1peGluIG5vdC11bmlxdWUoKSB7XG4gICY6bm90KDpvbmx5LWNoaWxkKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBiZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBldmVuIGNoaWxkcmVuLlxuQG1peGluIGV2ZW4ge1xuICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgZXZlbiBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIGV2ZW4tYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKGV2ZW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbi5cbkBtaXhpbiBvZGQge1xuICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBvZGQgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG50aGAgbnVtYmVyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsYXN0W10gTGFzdCBgbnRoYCBudW1iZXJcbkBtaXhpbiBvZGQtYmV0d2VlbigkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKG9kZCk6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgYCRudW1gIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBFdmVyeSBgbmAgbnVtYmVyIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBuYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBuYCBudW1iZXJcbkBtaXhpbiBudW1iZXItYmV0d2VlbigkbnVtLCAkZmlyc3QsICRsYXN0KSB7XG4gICY6bnRoLWNoaWxkKCN7JG51bX1uKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJveFxuLy8vL1xuXG4vLy8gQm94IE1peGluOiBFYXNpbHkgY3JlYXRlIGEgc3F1YXJlLCByZWN0YW5nbGUgb3IgYSBjaXJjbGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoW10gV2lkdGggb2YgdGhlIGJveFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0WyR3aWR0aF0gSGVpZ2h0IG9mIHRoZSBib3gsIGRlZmF1bHRzIHRvIGAkd2lkdGhgIHRvIGVhc2lseSBtYWtlIGEgc3F1YXJlXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2lyY2xlW2ZhbHNlXSBNYWtlcyB0aGUgYm94IGEgY2lyY2xlLCBieSBkZWZhdWx0IGBmYWxzZWAuXG5AbWl4aW4gYm94KFxuICAkd2lkdGgsIFxuICAkaGVpZ2h0OiAkd2lkdGgsIFxuICAkY2lyY2xlOiBmYWxzZVxuKSB7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgQGlmICRjaXJjbGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm90YXRlXG4vLy8vXG5cbi8vLyBSb3RhdGUgTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWdcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZSgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGUoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVYIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFgtQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWCgkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGVYKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWSBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBZLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVkoJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlWSgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVogTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWi1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVaKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZVooJGRlZyArIGRlZyk7XG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHV0aWxpdGllc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgVmFsdWUgZm9yIGB0ZXh0LW92ZXJmbG93YCB2YXJpYWJsZVxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyAhZGVmYXVsdDtcblxuLy8vIEltYWdlIFJlcGxhY2VtZW50IHV0aWxpdHkuIGB0ZXh0LWhpZGVgXG5AbWl4aW4gdGV4dC1oaWRlIHtcbiAgZm9udDogMC8wIGEgIWltcG9ydGFudDtcbiAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMCAhaW1wb3J0YW50O1xufVxuXG4vLy8gVHJ1bmNhdGluZyB0aGUgdGV4dCwgZWxpcHNpcyBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3ZlcmZsb3cgWyRwcm90b3R5cGUtdGV4dC1vdmVyZmxvd10gVGV4dCBUcnVuY2F0ZVxuQG1peGluIHRleHQtdHJ1bmNhdGUoXG4gICRvdmVyZmxvdzogJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XG4pIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgdGV4dC1vdmVyZmxvdzogJG92ZXJmbG93OyBcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4vLy8gTm8gd3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LW5vd3JhcGBcbkBtaXhpbiB0ZXh0LW5vd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDtcbn1cblxuLy8vIFdyYXBwaW5nIG9mIHRoZSB0ZXh0LiBgdGV4dC13cmFwYFxuQG1peGluIHRleHQtd3JhcCB7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC11dGlsaXRpZXMge1xuICAudGV4dC1oaWRlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LWhpZGU7XG4gIH1cblxuICAudGV4dC10cnVuY2F0ZSB7XG4gICAgQGluY2x1ZGUgdGV4dC10cnVuY2F0ZTtcbiAgfVxuXG4gIC50ZXh0LW5vd3JhcCB7XG4gICAgQGluY2x1ZGUgdGV4dC1ub3dyYXA7XG4gIH1cblxuICAudGV4dC13cmFwIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXdyYXA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtdXRpbGl0aWVzLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC1oaWRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtaGlkZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC10cnVuY2F0ZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LW5vd3JhcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LW5vd3JhcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tdGV4dC13cmFwIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtd3JhcDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtdHJhbnNmb3JtYXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxuICBsb3dlcmNhc2UsXG4gIHVwcGVyY2FzZSxcbiAgY2FwaXRhbGl6ZVxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgVHJhbnNmb3JtYXRpb24sIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbmBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRyYW5zZm9ybWF0aW9uIFtdIFRleHQgVHJhbnNmb3JtYXRpb25cbkBtaXhpbiB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pIHtcbiAgdGV4dC10cmFuc2Zvcm06ICR0cmFuc2Zvcm1hdGlvbiAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XG4gIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgIC50ZXh0LSN7JHRyYW5zZm9ybWF0aW9ufSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gIFx0QGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xuICBcdFx0XHQgICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICBcdFx0XHQgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgdGV4dCBkZWNvcmF0aW9uIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWRlY29yYXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgdGV4dC1kZWNvcmF0aW9uYCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjogKFxuICBvdmVybGluZSxcbiAgdW5kZXJsaW5lLFxuICBsaW5lLXRocm91Z2gsXG4pICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBEZWNvcmF0aW9uLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbmBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlY29yYXRpb24gW10gVGV4dCBEZWNvcmF0aW9uXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKSB7XG4gIHRleHQtZGVjb3JhdGlvbjogJGRlY29yYXRpb24gIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAudGV4dC0jeyRkZWNvcmF0aW9ufSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJGRlY29yYXRpb24gaW4gJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyRkZWNvcmF0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtZm9udC1zdHlsaW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBmb250IHN0eWxpbmcgdHlwZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTGV0dGVyIHNwYWNpbmcgZm9yIGAuZm9udC13aWRlYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nOiByZW0tY2FsYyg0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2VpZ2h0IGZvciBgLmZvbnQtbm9ybWFsYCwgZGVmYXVsdGVkIHRvIGBnbG9iYWwtd2VpZ2h0LW5vcm1hbGBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtZm9udC1ub3JtYWw6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2VpZ2h0IGZvciBgLmZvbnQtYm9sZGAsIGRlZmF1bHRlZCB0byBgZ2xvYmFsLXdlaWdodC1ib2xkYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1mb250LWJvbGQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdpZGUgbGV0dGVyIHNwYWNpbmchXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZXR0ZXItc3BhY2luZyBbJHByb3RvdHlwZS13aWRlLWxldHRlci1zcGFjaW5nXSBXaWRlIGxldHRlciBzcGFjaW5nIGZvciB0aGUgZm9udFxuQG1peGluIGZvbnQtd2lkZShcbiAgJGxldHRlci1zcGFjaW5nOiAkcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmdcbikge1xuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xufVxuXG4vLy8gRm9udCBXZWlnaHQgTm9ybWFsLCBkZWZhdWx0IHZhbHVlIGNvbWluZyB0aHJvdWdoIGBnbG9iYWwtd2VpZ2h0LW5vcm1hbGBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LW5vcm1hbF0gV2VpZ2h0IG9mIHRoZSBmb250IChub3JtYWwpXG5AbWl4aW4gZm9udC1ub3JtYWwoXG4gICR3ZWlnaHQ6ICRwcm90b3R5cGUtZm9udC1ub3JtYWxcbikge1xuICBmb250LXdlaWdodDogJHdlaWdodDtcbn1cblxuLy8vIEZvbnQgV2VpZ2h0IEJvbGQsIGRlZmF1bHQgdmFsdWUgY29taW5nIHRocm91Z2ggYGdsb2JhbC13ZWlnaHQtYm9sZGBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdlaWdodCBbJHByb3RvdHlwZS1mb250LWJvbGRdIFdlaWdodCBvZiB0aGUgZm9udCAoYm9sZClcbkBtaXhpbiBmb250LWJvbGQoXG4gICR3ZWlnaHQ6ICRwcm90b3R5cGUtZm9udC1ib2xkXG4pIHtcbiAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG59XG5cbi8vLyBGb250IFN0eWxlIEl0YWxpY1xuQG1peGluIGZvbnQtaXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1mb250LXN0eWxpbmcge1xuICAuZm9udC13aWRle1xuICAgIEBpbmNsdWRlIGZvbnQtd2lkZTtcbiAgfVxuXG4gIC5mb250LW5vcm1hbCB7XG4gICAgQGluY2x1ZGUgZm9udC1ub3JtYWw7XG4gIH1cblxuICAuZm9udC1ib2xkIHtcbiAgICBAaW5jbHVkZSBmb250LWJvbGQ7XG4gIH1cblxuICAuZm9udC1pdGFsaWMge1xuICAgIEBpbmNsdWRlIGZvbnQtaXRhbGljO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWZvbnQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mb250LXdpZGV7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LXdpZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtbm9ybWFsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtbm9ybWFsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWJvbGQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1ib2xkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mb250LWl0YWxpYyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LWl0YWxpYztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGVcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGxpc3Qgc3R5bGluZyB0eXBlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLXVub3JkZXJlZGAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZDogKFxuICBkaXNjLFxuICBjaXJjbGUsXG4gIHNxdWFyZVxuKSAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHN0eWxlLXR5cGUtb3JkZXJlZGAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcbiAgZGVjaW1hbCxcbiAgbG93ZXItYWxwaGEsXG4gIGxvd2VyLWxhdGluLFxuICBsb3dlci1yb21hbixcbiAgdXBwZXItYWxwaGEsXG4gIHVwcGVyLWxhdGluLFxuICB1cHBlci1yb21hblxuKSAhZGVmYXVsdDtcblxuXG4vLy8gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS11bm9yZGVyZWQgW10gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzXG5AbWl4aW4gc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtdW5vcmRlcmVkICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZGBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlLXR5cGUtb3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzXG5AbWl4aW4gc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiAkc3R5bGUtdHlwZS1vcmRlcmVkICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBsaXN0LXVub3JkZXJlZCB7XG4gIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcbiAgICB1bC5saXN0LSN7JHN0eWxlLXR5cGUtdW5vcmRlcmVkfSB7XG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJHN0eWxlLXR5cGUtdW5vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICB1bC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtdW5vcmRlcmVkfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LW9yZGVyZWQge1xuICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcbiAgICBvbC5saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xuICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG9sLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZSB7XG4gIEBpbmNsdWRlIGxpc3QtdW5vcmRlcmVkO1xuICBAaW5jbHVkZSBsaXN0LW9yZGVyZWQ7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtcm91bmRlZFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igcm91bmRlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1yYWRpdXNgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDMpICFkZWZhdWx0O1xuXG4vLy8gUm91bmRlZCB1dGlsaXR5IChhbGwgY29ybmVycyk6IEFkZHMgcmFkaXVzIGNvcm5lcnMgKGFsbCBjb3JuZXJzKSB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpdXMgWyRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c10gQm9yZGVyIHJhZGl1cyAoYWxsIGNvcm5lcnMpXG5AbWl4aW4gYm9yZGVyLXJhZGl1cyhcbiAgJHJhZGl1czogJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzXG4pIHtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcbn1cblxuLy8vIFJvdW5kZWQgc3F1YXJlIHV0aWxpdHkgb3IgcmVjdGFuZ2xlIHV0aWxpdHkgKGFsbCBjb3JuZXJzKTogUm91bmRzIGFsbCBjb3JuZXJzIHRvIGFuIGVsZW1lbnQgYnkgZGVmYXVsdCB0byBtYWtlIGEgcGlsbCBzaGFwZS5cbkBtaXhpbiBib3JkZXItcm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwMDBweCAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcm91bmRlZCB7XG4gIC5yb3VuZGVkIHtcbiAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLy8gRm9yIHN3aXRjaGVzXG4gICAgfVxuICB9XG5cbiAgLnJhZGl1cyB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1yb3VuZGVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tcm91bmRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLiN7JHNpemV9LXJhZGl1cyB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlcmVkXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXJlZCB1dGlsaXR5LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtYm9yZGVyZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItd2lkdGhgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJvcmRlci13aWR0aDogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci10eXBlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHByb3RvdHlwZS1ib3JkZXItdHlwZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci1jb2xvcmAgZGVmYXVsdGVkIHRvIGBtZWRpdW0tZ3JheWBcbi8vLyBAdHlwZSBDb2xvclxuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlcmVkIFV0aWxpdHk6IEFkZHMgYSBsaWdodCBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRwcm90b3R5cGUtYm9yZGVyLXdpZHRoXSBXaWR0aCBvZiB0aGUgYm9yZGVyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR0eXBlIFskcHJvdG90eXBlLWJvcmRlci10eXBlXSBUeXBlIG9mIHRoZSBib3JkZXJcbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXSBDb2xvciBvZiB0aGUgYm9yZGVyXG5AbWl4aW4gYm9yZGVyZWQoXG4gICR3aWR0aDogJHByb3RvdHlwZS1ib3JkZXItd2lkdGgsXG4gICR0eXBlOiAkcHJvdG90eXBlLWJvcmRlci10eXBlLFxuICAkY29sb3I6ICRwcm90b3R5cGUtYm9yZGVyLWNvbG9yXG4pIHtcbiAgYm9yZGVyOiAkd2lkdGggJHR5cGUgJGNvbG9yO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyZWQge1xuICAuYm9yZGVyZWQge1xuICAgIEBpbmNsdWRlIGJvcmRlcmVkO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2hhZG93XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzaGFkb3cgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJveC1zaGFkb3dgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwwLDAsLjE2KSxcbiAgICAgICAgICAgICAgICAgICAgICAgMCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKSAhZGVmYXVsdDtcblxuLy8vIFNoYWRvdyBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm94IHNoYWRvdyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaGFkb3cgWyRwcm90b3R5cGUtYm94LXNoYWRvd10gQm94IFNoYWRvdyBvZiBhIGNvbXBvbmVudFxuQG1peGluIHNoYWRvdyhcbiAgJHNoYWRvdzogJHByb3RvdHlwZS1ib3gtc2hhZG93XG4pIHtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdyB7XG4gIC5zaGFkb3cge1xuICAgIEBpbmNsdWRlIHNoYWRvdztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1zaGFkb3cge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2hhZG93O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWFycm93XG4vLy8vXG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBhcnJvd2AgZGlyZWN0aW9uXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbnM6IChcbiAgZG93bixcbiAgdXAsXG4gIHJpZ2h0LFxuICBsZWZ0XG4pICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgdGhlIEFycm93LCBgMC40Mzc1cmVtYCBieSBkZWZhdWx0LlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1hcnJvdy1zaXplOiAwLjQzNzVyZW07XG5cbi8vLyBDb2xvciBvZiB0aGUgQXJyb3csIGAkYmxhY2tgIGJ5IGRlZmF1bHQuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWFycm93IHtcbiAgQGVhY2ggJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb24gaW4gJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zIHtcbiAgICAuYXJyb3ctI3skcHJvdG90eXBlLWFycm93LWRpcmVjdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LXNpemUsIFxuICAgICAgICAkcHJvdG90eXBlLWFycm93LWNvbG9yLCBcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2VwYXJhdG9yXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zZXBhcmF0b3ItYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBhbGlnbm1lbnQgb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXNlcGFyYXRvci1hbGlnbjogY2VudGVyICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0OiByZW0tY2FsYygyKSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIGEgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIFRvcCBNYXJnaW4gb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRpdGxlIHNlcGFyYXRvciBVdGlsaXR5LCBtb3N0bHkgdXNlZCB0byBzdHlsZSB0aGUgbWFpbiBoZWFkaW5nIG9mIGEgc2VjdGlvblxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYWxpZ24gWyRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduXSAtIHNlcGFyYXRvciBBbGlnbm1lbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItaGVpZ2h0XSAtIFdpZHRoXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGhdIC0gSGVpZ2h0XG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmRdIC0gQmFja2dyb3VuZFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFskcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXSAtIE1hcmdpbiBUb3BcbkBtaXhpbiBzZXBhcmF0b3IgKFxuICAkYWxpZ246ICRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduLFxuICAkaGVpZ2h0OiAkcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQsXG4gICR3aWR0aDogJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGgsXG4gICRiYWNrZ3JvdW5kOiAkcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kLFxuICAkdG9wOiAkcHJvdG90eXBlLXNlcGFyYXRvci1tYXJnaW4tdG9wXG4pIHtcbiAgdGV4dC1hbGlnbjogJGFsaWduICFpbXBvcnRhbnQ7XG5cdEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSk7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIG1hcmdpbjogJHRvcCBhdXRvIDA7XG5cbiAgICBAaWYgJGFsaWduID09IGxlZnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaWYgJGFsaWduID09IHJpZ2h0IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yIHtcblx0LnNlcGFyYXRvci1jZW50ZXIge1xuXHRcdEBpbmNsdWRlIHNlcGFyYXRvcihjZW50ZXIpO1xuXHR9XG5cbiAgLnNlcGFyYXRvci1sZWZ0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gIH1cblxuICAuc2VwYXJhdG9yLXJpZ2h0IHtcbiAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xuICB9XG5cblx0QGlmICgkcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1jZW50ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItbGVmdCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IobGVmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1zZXBhcmF0b3ItcmlnaHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2VwYXJhdG9yKHJpZ2h0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1vdmVyZmxvd1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igb3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYG92ZXJmbG93YCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLW92ZXJmbG93OiAoXG4gIHZpc2libGUsXG4gIGhpZGRlbixcbiAgc2Nyb2xsXG4pICFkZWZhdWx0O1xuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXNcbkBtaXhpbiBvdmVyZmxvdygkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3c6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcyBvbiBob3Jpem9udGFsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzIChob3Jpem9udGFsIGF4aXMpXG5AbWl4aW4gb3ZlcmZsb3cteCgkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3cteDogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIHZlcnRpY2FsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzICh2ZXJ0aWNhbCBheGlzKVxuQG1peGluIG92ZXJmbG93LXkoJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93LXk6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3cge1xuICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XG4gICAgLm92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtZGlzcGxheVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgZGlzcGxheSBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYGRpc3BsYXlgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICBpbmxpbmUsXG4gIGlubGluZS1ibG9jayxcbiAgYmxvY2ssXG4gIHRhYmxlLFxuICB0YWJsZS1jZWxsXG4pICFkZWZhdWx0O1xuXG4vLy8gRGlzcGxheSBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLWRpc3BsYXlgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtdIERpc3BsYXkgY2xhc3Nlc1xuQG1peGluIGRpc3BsYXkoJGRpc3BsYXkpIHtcbiAgZGlzcGxheTogJGRpc3BsYXkgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWRpc3BsYXkge1xuICBAZWFjaCAkZGlzcGxheSBpbiAkcHJvdG90eXBlLWRpc3BsYXkge1xuICAgIC5kaXNwbGF5LSN7JGRpc3BsYXl9IHtcbiAgICAgIEBpbmNsdWRlIGRpc3BsYXkoJGRpc3BsYXkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJGRpc3BsYXkgaW4gJHByb3RvdHlwZS1kaXNwbGF5IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LWRpc3BsYXktI3skZGlzcGxheX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5KCRkaXNwbGF5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1wb3NpdGlvblxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcG9zaXRpb24gaGVscGVyc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgcG9zaXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtcG9zaXRpb246IChcbiAgc3RhdGljLFxuICByZWxhdGl2ZSxcbiAgYWJzb2x1dGUsXG4gIGZpeGVkXG4pICFkZWZhdWx0O1xuXG4vLy8gei1pbmRleCBmb3IgZml4ZWQgcG9zaXRpb25pbmdcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1ICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb24gY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1wb3NpdGlvbmAsIHdoZXJlYXMgYWxsIHRoZSBvZmZzZXQgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLXBvc2l0aW9uYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHBvc2l0aW9uIFtdIFBvc2l0aW9uIGNsYXNzZXMsIEVpdGhlciBgc3RhdGljYCwgYHJlbGF0aXZlYCwgYGFic29sdXRlYCBvciBgZml4ZWRgXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgW251bGxdIC0gVG9wIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmlnaHQgW251bGxdIC0gUmlnaHQgb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gQm90dG9tIG9mZnNldFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVmdCBbbnVsbF0gLSBMZWZ0IG9mZnNldFxuQG1peGluIHBvc2l0aW9uKFxuICAkcG9zaXRpb24sXG4gICR0b3A6IG51bGwsXG4gICRyaWdodDogbnVsbCxcbiAgJGJvdHRvbTogbnVsbCxcbiAgJGxlZnQ6IG51bGxcbikge1xuICBwb3NpdGlvbjogJHBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHRvcDogJHRvcCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG51bGwge1xuICAgIHJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgYm90dG9tOiAkYm90dG9tICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBsZWZ0OiAkbGVmdCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gdG9wIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLXRvcGBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC10b3AoXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgMCwgMCwgbnVsbCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG4vLy8gUG9zaXRpb24gRml4ZWQgb24gYm90dG9tIGNvcm5lcnNcbi8vLyBAcGFyYW0ge051bWJlcn0gJHotaW5kZXggWyRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleF0gei1pbmRleCBmb3IgYHBvc2l0aW9uLWZpeGVkLWJvdHRvbWBcbkBtaXhpbiBwb3NpdGlvbi1maXhlZC1ib3R0b20oXG4gICR6LWluZGV4OiAkcHJvdG90eXBlLXBvc2l0aW9uLXotaW5kZXhcbikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihmaXhlZCwgbnVsbCwgMCwgMCwgMCk7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb24ge1xuICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gIC5wb3NpdGlvbi1maXhlZC10b3Age1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcbiAgfVxuICAucG9zaXRpb24tZml4ZWQtYm90dG9tIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtcG9zaXRpb24tYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAvLyBQb3NpdGlvbjogU3RhdGljLCBSZWxhdGl2ZSwgRml4ZWQsIEFic29sdXRlXG4gICAgICAgIEBlYWNoICRwb3NpdGlvbiBpbiAkcHJvdG90eXBlLXBvc2l0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKCRwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9zaXRpb246IEZpeGVkIFRvcCwgRml4ZWQgQm90dG9tXG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLXRvcCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC10b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXBvc2l0aW9uLWZpeGVkLWJvdHRvbSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbi1maXhlZC1ib3R0b207XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLWJveFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIGJveC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGJveCB1dGlsaXR5XG5AbWl4aW4gYm9yZGVyLWJveCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3gge1xuICAuYm9yZGVyLWJveCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLWJveCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm94O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJvcmRlci1ub25lXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBib3JkZXIgbm9uZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBub25lIHV0aWxpdHlcbkBtaXhpbiBib3JkZXItbm9uZSB7XG4gIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtYm9yZGVyLW5vbmUge1xuICAuYm9yZGVyLW5vbmUge1xuICAgIEBpbmNsdWRlIGJvcmRlci1ub25lO1xuICB9XG5cbiAgQGlmICgkcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLW5vbmUge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLW5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2l6aW5nXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzcGFjaW5nIGNsYXNzZXMgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNpemluZy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzaXppbmdgIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtc2l6aW5nOiAoXG4gIHdpZHRoLFxuICBoZWlnaHRcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIHNpemVzLlxuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zaXplczogKFxuICAyNTogMjUlLFxuICA1MDogNTAlLFxuICA3NTogNzUlLFxuICAxMDA6IDEwMCVcbikgIWRlZmF1bHQ7XG5cbi8vLyBNYXggV2lkdGggMTAwIHV0aWxpdHkuXG5AbWl4aW4gbWF4LXdpZHRoLTEwMCB7XG4gIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG4vLy8gTWF4IEhlaWdodCAxMDAgdXRpbGl0eS5cbkBtaXhpbiBtYXgtaGVpZ2h0LTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNpemluZyB7XG4gIC8vIEVsZW1lbnQgU2l6aW5nXG4gIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xuICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgLiN7JHNpemluZ30tI3skbGVuZ3RofSB7XG4gICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWF4IHdpZHRoICYgaGVpZ2h0XG4gIC5tYXgtd2lkdGgtMTAwIHtcbiAgICBAaW5jbHVkZSBtYXgtd2lkdGgtMTAwO1xuICB9XG4gIC5tYXgtaGVpZ2h0LTEwMCB7XG4gICAgQGluY2x1ZGUgbWF4LWhlaWdodC0xMDA7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICBAZWFjaCAkc2l6aW5nIGluICRwcm90b3R5cGUtc2l6aW5nIHtcbiAgICAgICAgICAgIEBlYWNoICRsZW5ndGgsICRwZXJjZW50YWdlIGluICRwcm90b3R5cGUtc2l6ZXMge1xuICAgICAgICAgICAgICAuI3skc2l6ZX0tI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcbiAgICAgICAgICAgICAgICAjeyRzaXppbmd9OiAkcGVyY2VudGFnZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc3BhY2luZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc3BhY2luZyBjbGFzc2VzIChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbnVtYmVyIG9mIHNwYWNlcnMgY291bnQgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc3BhY2Vycy1jb3VudDogMyAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLW1hcmdpbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBNYXJnaW4gVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBNYXJnaW4gUmlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBNYXJnaW4gQm90dG9tXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIE1hcmdpbiBMZWZ0XG5AbWl4aW4gbWFyZ2luKFxuICAkdG9wOiBudWxsLFxuICAkcmlnaHQ6IG51bGwsXG4gICRib3R0b206IG51bGwsXG4gICRsZWZ0OiBudWxsXG4pIHtcbiAgQGlmICR0b3AgIT0gbnVsbCB7XG4gICAgbWFyZ2luLXRvcDogJHRvcCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG51bGwge1xuICAgIG1hcmdpbi1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFBhZGRpbmcgaGVscGVyIG1peGluLCBhbGwgdGhlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1wYWRkaW5nYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIFBhZGRpbmcgVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBQYWRkaW5nIFJpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gUGFkZGluZyBCb3R0b21cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gUGFkZGluZyBMZWZ0XG5AbWl4aW4gcGFkZGluZyhcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHBhZGRpbmctdG9wOiAkdG9wICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIE1hcmdpbiBjbGFzc2VzIGZvciBzcGVjaWZpYyBkaXJlY3Rpb24gcHJvcGVydGllc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlyIFtdIERpcmVjdGlvblxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2VyIFtdIFNwYWNlclxuQG1peGluIG1hcmdpbi1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcikge1xuICBAaWYgKCRkaXIgPT0gdG9wKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkdG9wOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gcmlnaHQpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRyaWdodDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGJvdHRvbSkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJGJvdHRvbTogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGxlZnQpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gaG9yaXpvbnRhbCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJHJpZ2h0OiAkc3BhY2VyLCAkbGVmdDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHZlcnRpY2FsKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkdG9wOiAkc3BhY2VyLCAkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbn1cblxuLy8vIFBhZGRpbmcgY2xhc3NlcyBmb3Igc3BlY2lmaWMgZGlyZWN0aW9uIHByb3BlcnRpZXNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpciBbXSBEaXJlY3Rpb25cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNlciBbXSBTcGFjZXJcbkBtaXhpbiBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKSB7XG4gIEBpZiAoJGRpciA9PSB0b3ApIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkdG9wOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gcmlnaHQpIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkcmlnaHQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBib3R0b20pIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gbGVmdCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gaG9yaXpvbnRhbCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRyaWdodDogJHNwYWNlciwgJGxlZnQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSB2ZXJ0aWNhbCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCR0b3A6ICRzcGFjZXIsICRib3R0b206ICRzcGFjZXIpOyBcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc3BhY2luZyB7XG4gIEBmb3IgJHNwYWNlciBmcm9tIDAgdGhyb3VnaCAkcHJvdG90eXBlLXNwYWNlcnMtY291bnQge1xuICAgIFxuICAgIEBlYWNoICRwcm9wIGluIChtYXJnaW4sIHBhZGRpbmcpIHtcbiAgICAgIC8vIEFsbCBTaWRlc1xuICAgICAgLiN7JHByb3B9LSN7JHNwYWNlcn0ge1xuICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICBtYXJnaW46ICRzcGFjZXIgKiAkZ2xvYmFsLW1hcmdpbjsgXG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHsgXG4gICAgICAgICAgcGFkZGluZzogJHNwYWNlciAqICRnbG9iYWwtcGFkZGluZzsgXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGVhY2ggJGRpciBpbiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBob3Jpem9udGFsLCB2ZXJ0aWNhbCkge1xuICAgICAgICAvLyBUb3AgU2lkZVxuICAgICAgICAuI3skcHJvcH0tI3skZGlyfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbi1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBlbHNlIGlmICgkcHJvcCA9PSBwYWRkaW5nKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKCRwcm90b3R5cGUtc3BhY2luZy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0ge1xuICAgICAgICAgICAgICBAZWFjaCAkcHJvcCBpbiAobWFyZ2luLCBwYWRkaW5nKSB7XG4gICAgICAgICAgICAgICAgLy8gQWxsIFNpZGVzXG4gICAgICAgICAgICAgICAgJi0jeyRwcm9wfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7IFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRzcGFjZXIgKiAkZ2xvYmFsLW1hcmdpbjsgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykgeyBcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNlciAqICRnbG9iYWwtcGFkZGluZzsgXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGVhY2ggJGRpciBpbiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBob3Jpem9udGFsLCB2ZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgICAgLy8gVG9wIFNpZGVcbiAgICAgICAgICAgICAgICAgICYtI3skcHJvcH0tI3skZGlyfS0jeyRzcGFjZXJ9IHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICgkcHJvcCA9PSBtYXJnaW4pIHsgXG4gICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykgeyBcbiAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLkNsaWVudEhlYWRlciB7XHJcblxyXG4gIEBtaXhpbiBidXR0b24tdHJhbnNpdGlvbigpe1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXMsIGNvbG9yIDAuM3MsIHRleHQtc2hhZG93IDAuNXM7IC8qIFNhZmFyaSAqL1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzLCBjb2xvciAwLjNzLCB0ZXh0LXNoYWRvdyAwLjVzO1xyXG4gIH1cclxuXHJcbiAgJl9fZ3JpZC1jb250YWluZXJ7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbiAgJl9fdGl0bGUtYmFyIHtcclxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vJl9fYnV0dG9uLWdyb3VwIHtcclxuICAvLyAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG4gIC8vfVxyXG4gICZfX3NpdGUtbmFtZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XHJcbiAgICBjb2xvcjogJGFjY2VudC1jb2xvcjtcclxuICAgIHRleHQtc2hhZG93OiAwIDAgMXB4ICRmb290ZXItYmFja2dyb3VuZDtcclxuICB9XHJcbiAgJl9fY2xpZW50LW5hbWUge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xyXG4gICAgfVxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xyXG4gICAgICBmb250LXNpemU6IDEuMmVtO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gICZfX2xlZnQtZ3JvdXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAmX19tZW51IHtcclxuICAgICYtaXRlbSBhIHtcclxuICAgICAgY29sb3I6ICR0aXRsZWJhci1jb2xvcjtcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XHJcblxyXG4gICAgICAvLy13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzLCBjb2xvciAwLjNzLCB0ZXh0LXNoYWRvdyAwLjVzOyAvKiBTYWZhcmkgKi9cclxuICAgICAgLy90cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuNXMsIGNvbG9yIDAuM3MsIHRleHQtc2hhZG93IDAuNXM7XHJcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi10cmFuc2l0aW9uO1xyXG4gICAgICBpIHtcclxuICAgICAgICBjb2xvcjogJGFjY2VudC1jb2xvcjtcclxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDAuM3M7IC8qIFNhZmFyaSAqL1xyXG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7XHJcbiAgICAgIH1cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudC1jb2xvcjtcclxuICAgICAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgMXB4ICRmb290ZXItYmFja2dyb3VuZDtcclxuICAgICAgICBpIHtcclxuICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTYpIHJlbS1jYWxjKDE2KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAmX19vZmYtY2FudmFzLWNsb3NlLWJ1dHRvbiB7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSl7XHJcbiAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICAgIH1cclxuICB9XHJcbiAgJl9fb2ZmLWNhbnZhcyB7XHJcbiAgICAmLWxvZ28ge1xyXG4gICAgICBjb2xvcjogJGFjY2VudC1jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAkZm9vdGVyLWJhY2tncm91bmQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xyXG4gICAgfVxyXG4gICAgJi1idXR0b24ge1xyXG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcclxuICAgICAgcGFkZGluZzogMC4zNWVtIDAuOGVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0aXRsZWJhci1iYWNrZ3JvdW5kICFpbXBvcnRhbnQ7XHJcbiAgICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3I7XHJcbiAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xyXG4gICAgICAgIGNvbG9yOiAkYWNjZW50LWNvbG9yICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21vYmlsZS1tZW51IHtcclxuICAgIC5tZW51LXRleHQge1xyXG4gICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICBsaSBhIHtcclxuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyNCk7XHJcbiAgICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3IgIWltcG9ydGFudDtcclxuICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDE2KTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDE2KTtcclxuICAgICAgQGluY2x1ZGUgYnV0dG9uLXRyYW5zaXRpb247XHJcbiAgICAgIGkge1xyXG4gICAgICAgIGNvbG9yOiAkYWNjZW50LWNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtY29sb3I7XHJcbiAgICAgICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGkge1xyXG4gICAgICAgICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuRm9vdGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWJhY2tncm91bmQ7XHJcbiAgY29sb3I6ICRmb290ZXItY29sb3I7XHJcbiAgcGFkZGluZzogbWFwX2dldCgkZ3JpZC1jb2x1bW4tZ3V0dGVyLCBzbWFsbCkgbWFwX2dldCgkZ3JpZC1jb2x1bW4tZ3V0dGVyLCBzbWFsbCk7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIG1heC1oZWlnaHQ6IHJlbS1jYWxjKDE2MCk7XHJcbiAgYm94LXNoYWRvdzogMCAtMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNiksIDAgLTJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSl7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgaGVpZ2h0OiByZW0tY2FsYyg4MCk7XHJcbiAgICBwYWRkaW5nOiAwIG1hcF9nZXQoJGdyaWQtY29sdW1uLWd1dHRlciwgbWVkaXVtKTtcclxuICB9XHJcbiAgJl9fbG9nbyB7XHJcbiAgICBjb2xvcjogJGFjY2VudC1jb2xvcjtcclxuICB9XHJcblxyXG4gICZfX2NvbnRhY3QtLWFkZHJlc3Mge1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG4gICZfX2NvbnRhY3QsICZfX2NvcHlyaWdodHtcclxuICAgIGEge1xyXG4gICAgICBjb2xvcjogJGZvb3Rlci1jb2xvcjtcclxuICAgICAgaSB7XHJcbiAgICAgICAgY29sb3I6ICRhY2NlbnQtY29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZsZXg6IDAgMCA1MCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBib2R5W2RhdGEtbG9naW4tcGFnZV0gJiB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKXtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi5DbGllbnRMb2dpbiB7XHJcbiAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDMwKTtcclxuXHJcblxyXG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDQzcHgpO1xyXG4gIG1pbi1oZWlnaHQ6IDUwMHB4O1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDYwKTtcclxuICB9XHJcblxyXG4gICZfX2J1dHRvbntcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtY29sb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRhY2NlbnQtY29sb3IsIDEwKTtcclxuICAgICAgY29sb3I6ICR0aXRsZWJhci1jb2xvciAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuRGFzaGJvYXJkIHtcclxuICAkaW1nLWhlaWdodC1sYXJnZTogcmVtLWNhbGMoMTkwKTtcclxuICAkaW1nLWhlaWdodC1tZWRpdW06IHJlbS1jYWxjKDEzMCk7XHJcbiAgJGltZy1oZWlnaHQtc21hbGw6IHJlbS1jYWxjKDcwKTtcclxuXHJcblxyXG5cclxuICBAbWl4aW4gZGFzaC1pbWctbWF4LWhlaWdodCB7XHJcbiAgICBtYXgtaGVpZ2h0OiAkaW1nLWhlaWdodC1zbWFsbDtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKXtcclxuICAgICAgbWF4LWhlaWdodDogJGltZy1oZWlnaHQtbWVkaXVtO1xyXG4gICAgfVxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSl7XHJcbiAgICAgIG1heC1oZWlnaHQ6ICRpbWctaGVpZ2h0LWxhcmdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9vdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xyXG4gIC8vZGlzcGxheTogZmxleDtcclxuICAvL2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgLy9qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTtcclxuXHJcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gICZfX2NvbnRhaW5lciB7XHJcbiAgICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgJl9fY29udGVudHMge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICB9XHJcblxyXG4gICRob3Zlci1zaGFkb3c6IDAgMnB4IDVweCAycHggcmdiYSgwLDAsMCwuMzIpLCAwIDJweCAxMHB4IDJweCByZ2JhKDAsMCwwLC4yNCk7XHJcblxyXG4gICZfX2xpbmsge1xyXG4gICAgbWFyZ2luOiAwIHJlbS1jYWxjKDQpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoOCkgcmVtLWNhbGMoMzApIHJlbS1jYWxjKDgpIHJlbS1jYWxjKDMwKTtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzLCBiYWNrZ3JvdW5kLWltYWdlIDAuM3M7XHJcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuM3MsIGJhY2tncm91bmQtaW1hZ2UgMC4zcztcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIC8vLkRhc2hib2FyZF9fbGluay10aXRsZSwgLkRhc2hib2FyZF9fbGluay1pbWFnZXMge1xyXG4gICAgICAgIEBpbmNsdWRlIHNoYWRvdygkaG92ZXItc2hhZG93KTtcclxuICAgICAgJiAuRGFzaGJvYXJkX19saW5rLXRpdGxlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRhY2NlbnQtY29sb3IsICR3aGl0ZSk7XHJcbiAgICAgICAgY29sb3I6ICR3aGl0ZSAhaW1wb3J0YW50OyBcclxuICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAkZm9vdGVyLWJhY2tncm91bmQ7XHJcbiAgICAgICAgaSB7XHJcbiAgICAgICAgICBjb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCAkZm9vdGVyLWJhY2tncm91bmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSl7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDEyKSByZW0tY2FsYyg0NSkgcmVtLWNhbGMoMTIpIHJlbS1jYWxjKDQ1KTtcclxuICAgIH1cclxuXHJcbiAgICAmLS1mYW5jeXZpZGVvIHtcclxuICAgICAgLkRhc2hib2FyZF9faW1hZ2UtaW4tbGlua3tcclxuICAgICAgICBtYXgtaGVpZ2h0OiAxMHZoICFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2xpbmstdGl0bGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDgpIHJlbS1jYWxjKDMwKSAwIDA7XHJcbiAgICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcclxuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGl0bGViYXItYmFja2dyb3VuZCAhaW1wb3J0YW50O1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcclxuICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3IgIWltcG9ydGFudDtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC4zcywgYmFja2dyb3VuZC1pbWFnZSAwLjNzLCB0ZXh0LXNoYWRvdyAwLjNzO1xyXG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcywgYmFja2dyb3VuZC1pbWFnZSAwLjNzLCB0ZXh0LXNoYWRvdyAwLjNzO1xyXG4gICAgZm9udC1zaXplOiAxLjJlbTtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDEyKSByZW0tY2FsYyg0NSkgMCAwO1xyXG4gICAgfVxyXG4gICAgaXtcclxuICAgICAgY29sb3I6ICRhY2NlbnQtY29sb3I7XHJcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgMC4zcywgdGV4dC1zaGFkb3cgMC4zcztcclxuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcywgdGV4dC1zaGFkb3cgMC4zcztcclxuICAgIH1cclxuICAgICYtLXdhcm5pbmcge1xyXG4gICAgICBpICB7XHJcbiAgICAgICAgY29sb3I6ICRkYXNoYm9hcmQtd2FybmluZy1jb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYSAmIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fbGluay1pbWFnZXMge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCByZW0tY2FsYyg4KSByZW0tY2FsYygzMCk7XHJcbiAgICBib3JkZXI6ICRjYWxsb3V0LWJvcmRlcjtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgcmVtLWNhbGMoMTIpIHJlbS1jYWxjKDQ1KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ltYWdlcy1pbi1saW5rLXdyYXBwZXJ7XHJcbiAgICBAaW5jbHVkZSBkYXNoLWltZy1tYXgtaGVpZ2h0O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OiBcIlwiOyAvLyA6OmJlZm9yZSBhbmQgOjphZnRlciBib3RoIHJlcXVpcmUgY29udGVudFxyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDApLCByZ2JhKDI1NSwyNTUsMjU1LDEpKTtcclxuICAgICAgLy9vcGFjaXR5OiAuNztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ltYWdlcy1pbi1saW5rIHtcclxuICAgIEBpbmNsdWRlIGRhc2gtaW1nLW1heC1oZWlnaHQ7XHJcbiAgICB3aWR0aDogMTAwdnc7XHJcbiAgICBkaXNwbGF5OiBmbGV4XHJcbiAgfVxyXG5cclxuICAmX19pbWFnZS1pbi1saW5rIHtcclxuICAgIEBpbmNsdWRlIGRhc2gtaW1nLW1heC1oZWlnaHQ7XHJcbiAgICAmOmZpcnN0LW9mLXR5cGUge1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgMCByZW0tY2FsYygzMCk7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDAgcmVtLWNhbGMoNDUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19tZXNzYWdlIHtcclxuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDgpO1xyXG4gICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYygyNCk7XHJcbiAgICBpIHtcclxuICAgICAgY29sb3I6ICRkYXNoYm9hcmQtd2FybmluZy1jb2xvcjtcclxuICAgIH1cclxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XHJcbiAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDE2KTtcclxuICAgIH1cclxuICAgICY6bGFzdC1vZi10eXBlIHtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi5QaG90b3N7XHJcbiAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XHJcbiAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg2MCk7XHJcbiAgfVxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcclxuICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDgwKTtcclxuICB9XHJcbiAgJl9faW1hZ2UtYm94IHtcclxuICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIpO1xyXG4gIH1cclxuICAmX19pbWFnZS13cmFwcGVyIHtcclxuICAgIEBpbmNsdWRlIGJvcmRlcmVkKCk7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgYm94LXNoYWRvdzogMnB4IDJweCAxMHB4ICNjY2M7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xcHgsIC0xcHgpO1xyXG4gICAgfVxyXG5cclxuICAgIGEge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWluLWhlaWdodDogcmVtLWNhbGMoMTE5KTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGltZyB7XHJcbiAgICAgICAgLy93aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGltZ1tkYXRhLXNyY10sXHJcbiAgICBpbWdbZGF0YS1zcmNzZXRdIHtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDFweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2JhY2stdG8tdG9wLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBsZWZ0OiByZW0tY2FsYygxMCk7XHJcbiAgICBib3R0b206IHJlbS1jYWxjKDYpO1xyXG4gICAgcGFkZGluZzogcmVtLWNhbGMoNikgcmVtLWNhbGMoOCk7XHJcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDMwKTtcclxuICAgIG9wYWNpdHk6IDAuNDtcclxuICAgICY6aG92ZXIge1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fZmFuY3lib3gtY29weS1zaGFyZS1idXR0b24ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudC1jb2xvcjtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkYWNjZW50LWNvbG9yLCAxMCk7XHJcbiAgICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19mYW5jeWJveC1zbGlkZSB7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAmX19mYW5jeWJveC1iYXNlIHtcclxuICAgICYuZmFuY3lib3gtaXMtb3BlbiAuZmFuY3lib3gtYmcge1xyXG4gICAgICBvcGFjaXR5OiAwLjk1O1xyXG4gICAgfVxyXG4gICAgLmZhbmN5Ym94LWJnIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwgMC45NSkgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIC8vLmZhbmN5Ym94LWJ1dHRvbntcclxuICAgIC8vICB3aWR0aDogcmVtLWNhbGMoNTApO1xyXG4gICAgLy8gIGhlaWdodDogcmVtLWNhbGMoNTApO1xyXG4gICAgLy8gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKXtcclxuICAgIC8vICAgIHdpZHRoOiByZW0tY2FsYyg0NCk7XHJcbiAgICAvLyAgICBoZWlnaHQ6IHJlbS1jYWxjKDQ0KTtcclxuICAgIC8vICB9XHJcbiAgICAvL31cclxuICAgIC5mYW5jeWJveC1uYXZpZ2F0aW9uIC5mYW5jeWJveC1idXR0b24ge1xyXG4gICAgICB3aWR0aDogNDRweCAhaW1wb3J0YW50O1xyXG4gICAgICBoZWlnaHQ6NDRweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi5WaWRlbyB7XHJcbiAgLy9tYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XHJcbiAgLy9AaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xyXG4gIC8vICBtYXJnaW4tdG9wOiByZW0tY2FsYyg2MCk7XHJcbiAgLy99XHJcbiAgLy9AaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XHJcbiAgLy8gIG1hcmdpbi10b3A6IHJlbS1jYWxjKDgwKTtcclxuICAvL31cclxuICAmLS1mYW5jeSB7XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICB9XHJcbiAgJl9fcGxheWVyIHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAjdmlkZW8tcGxheWVye1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi5GQlBvcHVwIHtcclxuICBjb2xvcjogIzE1MTUxNTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbiAgQG1lZGlhICN7JHNtYWxsLW9ubHl9IHtcclxuICAgIGhlaWdodDogaW5oZXJpdDtcclxuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xyXG4gIH1cclxuICAmX19hbmNoIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgICAgb3BhY2l0eTogMC4zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9faWZyYW1lIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiA1MDBweDtcclxuICAgIGJvcmRlcjpub25lO1xyXG4gICAgb3ZlcmZsb3c6aGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgJl9fY29udGVudHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QWNBQTs7Ozs7R0FLRztBSGlLRyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFNEVkN0MsQUEzR0EsT0EyR08sRUFBUCxPQUFPLEFBZUosS0FBSyxFQWZSLE9BQU8sQUFnQkosTUFBTSxFQWhCVCxPQUFPLEFBaUJKLE1BQU0sQ0E1SFE7SUFDZixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsTUFBTSxFQUFFLE1BQU07R0FDZjs7O0F4RWhERCw0RUFBNEU7QUFRNUUsQUFBQSxJQUFJLENBQUM7RUFDSCxXQUFXLEVBQUUsSUFBSTtFQUNqQix3QkFBd0IsRUFBRSxJQUFJO0NBQy9COztBQU9ELEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUM7Q0FDVjs7QUFLRCxBQUFBLEVBQUUsQ0FBQztFQUNELFNBQVMsRUFBRSxHQUFHO0VBQ2QsTUFBTSxFQUFFLFFBQVE7Q0FDakI7O0FBUUQsQUFBQSxFQUFFLENBQUM7RUFDRCxVQUFVLEVBQUUsV0FBVztFQUN2QixNQUFNLEVBQUUsQ0FBQztFQUNULFFBQVEsRUFBRSxPQUFPO0NB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RyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsSUFBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsR0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsU0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsR0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsR0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsU0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsU0FBc0I7Q0d6RHJEOztBRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0VINERmLEtBQWEsRUFEaUIsS0FBc0I7Q0d6RHJEOztBOUNzSUcsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWdEZ0N2QyxBRnhLTixZRXdLa0IsR0Z4S2QsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsSUFBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFlFd0trQixHRnhLZCxLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixHQUFzQjtHR3pEckQ7RUVzS0ssQUZ4S04sWUV3S2tCLEdGeEtkLEtBQUssQ0FBUTtJSDREZixLQUFhLEVBRGlCLFNBQXNCO0dHekRyRDtFRXNLSyxBRnhLTixZRXdLa0IsR0Z4S2QsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsR0FBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFlFd0trQixHRnhLZCxLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixHQUFzQjtHR3pEckQ7RUVzS0ssQUZ4S04sWUV3S2tCLEdGeEtkLEtBQUssQ0FBUTtJSDREZixLQUFhLEVBRGlCLFNBQXNCO0dHekRyRDtFRXNLSyxBRnhLTixZRXdLa0IsR0Z4S2QsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsU0FBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFlFd0trQixHRnhLZCxLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixLQUFzQjtHR3pEckQ7OztBOUNzSUcsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWdEZ0N2QyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsSUFBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFdFd0tpQixHRnhLYixLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixHQUFzQjtHR3pEckQ7RUVzS0ssQUZ4S04sV0V3S2lCLEdGeEtiLEtBQUssQ0FBUTtJSDREZixLQUFhLEVBRGlCLFNBQXNCO0dHekRyRDtFRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsR0FBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFdFd0tpQixHRnhLYixLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixHQUFzQjtHR3pEckQ7RUVzS0ssQUZ4S04sV0V3S2lCLEdGeEtiLEtBQUssQ0FBUTtJSDREZixLQUFhLEVBRGlCLFNBQXNCO0dHekRyRDtFRXNLSyxBRnhLTixXRXdLaUIsR0Z4S2IsS0FBSyxDQUFRO0lINERmLEtBQWEsRUFEaUIsU0FBc0I7R0d6RHJEO0VFc0tLLEFGeEtOLFdFd0tpQixHRnhLYixLQUFLLENBQVE7SUg0RGYsS0FBYSxFQURpQixLQUFzQjtHR3pEckQ7OztBRTZMSyxBRi9MTixjRStMb0IsQUFBQSxXQUFXLEdGL0wzQixLQUFLLENBQVE7RUg0RGYsS0FBYSxFQUR5QyxvQkFBMEQ7Q0d6RGpIOztBRTZMSyxBRi9MTixjRStMb0IsQUFBQSxXQUFXLEdGL0wzQixLQUFLLENBQVE7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TSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtFSnNDeEIsS0FBYSxFQURpQixTQUFzQjtDSW5DM0M7O0FDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsUUFBUSxDQUFNO0VKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0NJbkMzQzs7QUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxRQUFRLENBQU07RUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7Q0luQzNDOztBQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtFSnNDeEIsS0FBYSxFQURpQixTQUFzQjtDSW5DM0M7O0FDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsUUFBUSxDQUFNO0VKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0NJbkMzQzs7QUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxRQUFRLENBQU07RUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7Q0luQzNDOztBQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtFSnNDeEIsS0FBYSxFQURpQixTQUFzQjtDSW5DM0M7O0FDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsUUFBUSxDQUFNO0VKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0NJbkMzQzs7QUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxTQUFTLENBQUs7RUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7Q0luQzNDOztBQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFNBQVMsQ0FBSztFSnNDeEIsS0FBYSxFQURpQixTQUFzQjtDSW5DM0M7O0FDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsU0FBUyxDQUFLO0VKc0N4QixLQUFhLEVBRGlCLElBQXNCO0NJbkMzQzs7QS9DZ0hQLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VnRG1FekMsQURyTE0sc0JDcUxnQixHRHJMZCxTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsUUFBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxVQUFVLENBQUk7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsVUFBVSxDQUFJO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFVBQVUsQ0FBSTtJSnNDeEIsS0FBYSxFQURpQixJQUFzQjtHSW5DM0M7OztBL0NnSFAsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWdEbUV6QyxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixRQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNC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eEIsS0FBYSxFQURpQixTQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sdUJDOExpQixHRDlMZixTQUFTLENBQUs7SUorQ3hCLEtBQWEsRUFEaUIsSUFBc0I7R0k1QzNDOzs7QS9DeUhQLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VnRG1FekMsQURyTE0sdUJDcUxpQixHRHJMZixTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsUUFBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixHQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixVQUFVLENBQUk7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsVUFBVSxDQUFJO0lKc0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFVBQVUsQ0FBSTtJSnNDeEIsS0FBYSxFQURpQixJQUFzQjtHSW5DM0M7OztBL0NnSFAsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWdEbUV6QyxBRHJMTSx1QkNxTGlCLEdEckxmLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixRQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsUUFBUSxDQUFNO0lKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixTQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsUUFBUSxDQUFNO0lKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixTQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsUUFBUSxDQUFNO0lKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSx1QkNxTGlCLEdEckxmLFNBQVMsQ0FBSztJSnNDeEIsS0FBYSxFQURpQixTQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sdUJDcUxpQixHRHJMZixTQUFTLENBQUs7SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHVCQ3FMaUIsR0RyTGYsU0FBUyxDQUFLO0lKc0N4QixLQUFhLEVBRGlCLElBQXNCO0dJbkMzQzs7O0EvQ2dIUCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFZ0R5RXpDLEFBQUEsd0JBQXdCLENBQUM7SUQvS3ZCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUM7R0NpTDNCO0VBRkQsQUQ1S0Esd0JDNEt3QixHRDVLdEIsS0FBSyxDQUFRO0lBRVgsYUFBaUIsRUFBVSxDQUFDO0lBQTVCLFlBQWlCLEVBQVUsQ0FBQztHQUUvQjs7O0EvQytGRCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFZ0RtRXpDLEFBQUEsc0JBQXNCLENBQUU7SURoTnRCLFlBQWdCLEVBQVMsQ0FBQztJQUExQixXQUFnQixFQUFTLENBQUM7R0NrTjNCO0VBRkQsQUQ3TUEsc0JDNk1zQixHRDdNcEIsS0FBSyxDQUFRO0lBRVgsWUFBZ0IsRUFBUyxDQUFDO0lBQTFCLFdBQWdCLEVBQVMsQ0FBQztHQUU3Qjs7O0EvQ3NJRCxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFZ0RtRXpDLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsUUFBUSxDQUFNO0lKK0N4QixLQUFhLEVBRGlCLFFBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFFBQVEsQ0FBTTtJSitDeEIsS0FBYSxFQURpQixTQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxRQUFRLENBQU07SUorQ3hCLEtBQWEsRUFEaUIsR0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsUUFBUSxDQUFNO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFFBQVEsQ0FBTTtJSitDeEIsS0FBYSxFQURpQixTQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxRQUFRLENBQU07SUorQ3hCLEtBQWEsRUFEaUIsR0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsUUFBUSxDQUFNO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFFBQVEsQ0FBTTtJSitDeEIsS0FBYSxFQURpQixTQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxRQUFRLENBQU07SUorQ3hCLEtBQWEsRUFEaUIsR0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsU0FBUyxDQUFLO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFNBQVMsQ0FBSztJSitDeEIsS0FBYSxFQURpQixTQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxTQUFTLENBQUs7SUorQ3hCLEtBQWEsRUFEaUIsSUFBc0I7R0k1QzNDOzs7QS9DeUhQLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VnRG1FekMsQUQ5TE0sc0JDOExnQixHRDlMZCxTQUFTLENBQUs7SUorQ3hCLEtBQWEsRUFEaUIsUUFBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsU0FBUyxDQUFLO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFNBQVMsQ0FBSztJSitDeEIsS0FBYSxFQURpQixHQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxTQUFTLENBQUs7SUorQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsU0FBUyxDQUFLO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFNBQVMsQ0FBSztJSitDeEIsS0FBYSxFQURpQixHQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxTQUFTLENBQUs7SUorQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsU0FBUyxDQUFLO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFNBQVMsQ0FBSztJSitDeEIsS0FBYSxFQURpQixHQUFzQjtHSTVDM0M7RUM0TFAsQUQ5TE0sc0JDOExnQixHRDlMZCxVQUFVLENBQUk7SUorQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0k1QzNDO0VDNExQLEFEOUxNLHNCQzhMZ0IsR0Q5TGQsVUFBVSxDQUFJO0lKK0N4QixLQUFhLEVBRGlCLFNBQXNCO0dJNUMzQztFQzRMUCxBRDlMTSxzQkM4TGdCLEdEOUxkLFVBQVUsQ0FBSTtJSitDeEIsS0FBYSxFQURpQixJQUFzQjtHSTVDM0M7OztBL0N5SFAsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RWdEbUV6QyxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixRQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsUUFBUSxDQUFNO0lKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixTQUFzQjtHSW5DM0M7RUNtTFAsQURyTE0sc0JDcUxnQixHRHJMZCxRQUFRLENBQU07SUpzQ3hCLEtBQWEsRUFEaUIsU0FBc0I7R0luQzNDO0VDbUxQLEFEckxNLHNCQ3FMZ0IsR0RyTGQsUUFBUSxDQUFNO0lKc0N4QixLQUFhLEVBRGlCLEdBQXNCO0dJbkMzQztFQ21MUCxBRHJMTSxzQkNxTGdCLEdEckxkLFFBQVEsQ0FBTTtJSnNDeEIsS0FBYSxFQURpQixTQUFzQjtHSW5DM0M7RUNtTFAsQURy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QUFvQixFQUFRLDBCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLFNBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLDJCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLEdBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLHFCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLFNBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLDJCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLFNBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLDJCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLEdBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLHFCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLFNBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLDJCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLFNBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLDJCQUFDO0dHc08xQjtFQU5ELEFBQUEsZUFBZSxDQUFZO0lIaE83QixXQUFvQixFQUFRLEdBQUM7R0drTzFCO0VBRUQsQUFBQSxjQUFjLEdBQUcsZUFBZSxDQUFZO0lIcE85QyxXQUFvQixFQUFRLHFC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 */
