@charset "UTF-8";
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

/* apply a natural box layout model to all elements, but allowing components to change */
html {
  box-sizing: border-box;
}

*, *:before, *:after {
  box-sizing: inherit;
}

/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 * 2. Add the correct display in IE.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  /* 1 */
  display: block;
}

/**
 * Add the correct display in IE 9-.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
}

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  vertical-align: baseline;
}

/**
 * Add the correct display in IE 10-.
 * 1. Add the correct display in IE.
 */
template,
[hidden] {
  display: none;
}

/* Links
   ========================================================================== */
/**
 * 1. Remove the gray background on active links in IE 10.
 * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
 */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */
}

/**
 * Remove the outline on focused links when they are also active or hovered
 * in all browsers (opinionated).
 */
a:active,
a:hover {
  outline-width: 0;
}

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the bottom border in Firefox 39-.
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */
}

/**
 * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
 */
b,
strong {
  font-weight: inherit;
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder;
}

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000;
}

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
   ========================================================================== */
/**
 * Remove the border on images inside links in IE 10-.
 */
img {
  border-style: none;
}

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */
/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */
}

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px;
}

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */
}

/* Forms
   ========================================================================== */
/**
 * 1. Change font properties to `inherit` in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
}

/**
 * Restore the font weight unset by the previous rule.
 */
optgroup {
  font-weight: bold;
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none;
}

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS and Safari.
 */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
}

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Change the border, margin, and padding in all browsers (opinionated).
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */
}

/**
 * Remove the default vertical scrollbar in IE.
 */
textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10-.
 * 2. Remove the padding in IE 10-.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/**
 * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Correct the text style of placeholders in Chrome, Edge, and Safari.
 */
::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.54;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/**
 *  remove ios styling. Only use on buttons and search inputs
 */
button, [type="search"], [type="button"] {
  -webkit-appearance: none;
  border-radius: 0;
  padding: 0;
}

input[type="number"] {
  -moz-appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

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

.assistive-text:hover, .assistive-text:active, .assistive-text:focus {
  font-size: .875em;
  font-weight: bold;
  line-height: normal;
  z-index: 100000;
  top: 5px;
  left: 5px;
  display: block;
  clip: auto !important;
  width: auto;
  height: auto;
  padding: 15px 23px 14px;
  text-decoration: none;
  color: #21759b;
  border-radius: 3px;
  background-color: #f1f1f1;
  box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
}

.hide {
  display: none;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(0, 100%, 0);
  }
}

.slideOutDown {
  animation-name: slideOutDown;
}

@keyframes slideOutLeft {
  from {
    transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    transform: translate3d(-100%, 0, 0);
  }
}

.slideOutLeft {
  animation-name: slideOutLeft;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }
}

@-webkit-keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@keyframes bounce {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
  50% {
    -webkit-transform: translate3d(0, 30px, 0);
    transform: translate3d(0, 30px, 0);
    visibility: visible;
  }
  100% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    visibility: visible;
  }
}

@-webkit-keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@keyframes MoonImageAnimation {
  0% {
    opacity: .15;
  }
  75% {
    opacity: 1;
  }
  85% {
    opacity: 0;
  }
  100% {
    opacity: .15;
  }
}

@-webkit-keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@keyframes MoonGradientRise {
  0% {
    transform: translateY(0);
  }
  85% {
    transform: translateY(100%);
  }
  100% {
    transform: translateY(0);
  }
}

@-webkit-keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

@keyframes MoonTypeReveal {
  0% {
    letter-spacing: inherit;
  }
  85% {
    letter-spacing: .15em;
  }
  100% {
    letter-spacing: .15em;
  }
}

body {
  font-family: "Muli", "Trebuchet MS", sans-serif;
  line-height: 1.625;
  font-size: 1em;
  -webkit-font-smoothing: antialiased;
  -moz-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5,
h6,
.alpha,
.beta,
.gamma,
.delta,
.epsilon,
.zeta {
  margin-top: 0;
  font-weight: 700;
}

.alpha {
  color: #434343;
  font-size: 2.25em;
  line-height: 1.05;
}

.alpha:before {
  display: block;
  content: "";
  height: 0.1666em;
  width: 4.1677em;
  background: #f3ad00;
  margin-bottom: 0.35em;
}

.alpha:after {
  display: none;
}

h2,
.beta {
  color: #434343;
  font-size: 2em;
  margin-bottom: 1em;
  line-height: 1.0625;
}

h2:after,
.beta:after {
  margin-top: 0.4em;
  display: block;
  content: "";
  height: 0.1875em;
  width: 3.125em;
  background: #f3ad00;
}

h2.alternate,
.beta.alternate {
  padding: 0.5em 0 0.25em;
  margin-bottom: 0.5em;
}

h2.alternate:after,
.beta.alternate:after {
  margin-top: 0;
  display: block;
  content: "";
  height: 0.1875em;
  width: 3.125em;
  background: #4872b4;
  position: absolute;
  top: 0.8em;
  margin-bottom: 1em;
}

.premiere-date {
  color: #777777;
  font-size: 2em;
  margin-bottom: 0.5em;
  line-height: 1.0625;
}

.overline {
  margin-bottom: 1.5em;
}

.overline h1,
.overline .alpha {
  line-height: 1.05;
  margin-bottom: 0.2em;
}

.overline h1:before,
.overline .alpha:before {
  display: none;
}

.overline:before {
  margin-top: 0.4em;
  margin-bottom: 0.75em;
  display: block;
  content: "";
  height: 0.375em;
  width: 9.375em;
  background: #f3ad00;
}

.js .alpha:before, .js .alpha:after,
.js h2:before,
.js h2:after,
.js .beta:before,
.js .beta:after,
.js .overline:before,
.js .overline:after {
  -webkit-transition: width 0.75s ease-in-out;
  -ms-transition: width 0.75s ease-in-out;
  transition: width 0.75s ease-in-out;
  width: 0;
}

.js .overline.animate:before {
  width: 9.375em;
}

.js .alpha.animate:before,
.js h2.alpha.animate:before {
  width: 4.1677em;
}

.js h2.animate:after,
.js .beta.animate:after {
  width: 3.125em;
}

h3,
.gamma {
  line-height: 1.25;
  color: #434343;
  font-size: 1.625em;
}

h4,
.delta {
  color: #999999;
  font-size: 1.5em;
  line-height: 1.07;
}

h5,
.epislon {
  color: black;
  font-size: 1.375em;
  line-height: 1.08;
}

h6,
.zeta {
  color: #777777;
  font-family: "Roboto Slab", serif;
  text-transform: uppercase;
  font-size: 0.875em;
  letter-spacing: 0.0714em;
}

p {
  margin: 0 0 1.666667em;
  font-size: 1.125em;
}

p:empty {
  display: none;
}

.plugin-container ol,
.plugin-container ul {
  font-size: 1.125em;
  margin: 0 0 1.666667em;
  padding-left: 1.5em;
}

@media (min-width: 40.625em) {
  .plugin-container ol,
  .plugin-container ul {
    padding-left: 2.5em;
  }
}

.plugin-container ol li,
.plugin-container ul li {
  margin-bottom: 1em;
}

.plugin-container ol {
  padding-left: 2em;
}

@media (min-width: 40.625em) {
  .plugin-container ol {
    padding-left: 3em;
  }
}

.plugin-container ul {
  list-style: none;
}

.plugin-container ul li {
  position: relative;
  padding-left: 0.5em;
}

.plugin-container ul li:before {
  display: inline-block;
  position: absolute;
  top: 0;
  left: -0.5em;
  line-height: 1.5;
  content: "\2022";
  color: #f3ad00;
}

.two-up:after {
  display: table;
  clear: both;
  content: '';
}

.two-up:before {
  display: table;
  clear: both;
  content: '';
}

.two-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .two-up li {
    width: 47.36842%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .two-up li {
    width: 48.71795%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 51.28205%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .two-up li {
    width: 49.15254%;
    float: left;
  }
  .two-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .two-up li:nth-child(2n + 2) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
}

.three-up:after {
  display: table;
  clear: both;
  content: '';
}

.three-up:before {
  display: table;
  clear: both;
  content: '';
}

.three-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .three-up li {
    width: 47.36842%;
    float: left;
  }
  .three-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .three-up li {
    width: 31.61538%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .three-up li {
    width: 32.20339%;
    float: left;
  }
  .three-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .three-up li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .three-up li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.four-up:after {
  display: table;
  clear: both;
  content: '';
}

.four-up:before {
  display: table;
  clear: both;
  content: '';
}

.four-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

.four-up li {
  margin-bottom: 3em;
}

@media (min-width: 40.625em) {
  .four-up li {
    width: 47.36842%;
    float: left;
  }
  .four-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .four-up li {
    width: 31.61538%;
    float: left;
  }
  .four-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .four-up li {
    width: 23.72881%;
    float: left;
  }
  .four-up li:nth-child(4n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .four-up li:nth-child(4n + 2) {
    margin-left: 25.42373%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(4n + 3) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
  .four-up li:nth-child(4n + 4) {
    margin-left: 76.27119%;
    margin-right: -100%;
    clear: none;
  }
}

.four-up p {
  font-size: 1em;
  line-height: 1.5;
}

@media (min-width: 40.625em) {
  .five-up {
    margin-bottom: 3em;
    display: grid;
    grid-gap: 1.5em;
    justify-content: space-between;
    align-content: start;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
  }
}

@media (min-width: 81.25em) {
  .five-up {
    grid-template-columns: 1fr 1fr 1fr 1fr;
  }
}

.five-up h3.delta {
  font-size: 1.375em !important;
  line-height: 1.1 !important;
}

.five-up li {
  margin-bottom: 1.5em;
  box-sizing: border-box;
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(1) {
    grid-column: 1 / 2;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(2) {
    grid-column: 4 / span 3;
    grid-row: 1;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(2) {
    grid-column: 3 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(2) {
    grid-column: 2 / 3;
    grid-row: 1;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(3) {
    grid-column: 5 / span 2;
    grid-row: 1;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(3) {
    grid-column: 1 / 1;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(4) {
    grid-column: 4 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(4) {
    grid-column: 1 / span 3;
    grid-row: 2;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(4) {
    grid-column: 2 / 3;
    grid-row: 2;
  }
}

@media (min-width: 40.625em) {
  .five-up li:nth-child(5) {
    grid-column: 1 / span 6;
    grid-row: 3;
    align-items: center;
  }
}

@media (min-width: 68.75em) {
  .five-up li:nth-child(5) {
    grid-column: 4 / span 3;
    grid-row: 2;
    align-items: center;
  }
}

@media (min-width: 81.25em) {
  .five-up li:nth-child(5) {
    grid-column: 3 / span 2;
    grid-row: 1 / span 2;
    align-items: center;
  }
}

.five-up li p {
  font-size: 1em;
  line-height: 1.5;
}

@supports not (display: grid) {
  .five-up:after {
    display: table;
    clear: both;
    content: '';
  }
  .five-up:before {
    display: table;
    clear: both;
    content: '';
  }
  .five-up li {
    margin-bottom: 3em;
  }
  @media (min-width: 40.625em) {
    .five-up li {
      width: 47.36842%;
      float: left;
    }
    .five-up li:nth-child(2n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(2n + 2) {
      margin-left: 52.63158%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 68.75em) {
    .five-up li {
      width: 31.61538%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 34.17949%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 68.35897%;
      margin-right: -100%;
      clear: none;
    }
  }
  @media (min-width: 81.25em) {
    .five-up li {
      width: 32.20339%;
      float: left;
    }
    .five-up li:nth-child(3n + 1) {
      margin-left: 0;
      margin-right: -100%;
      clear: both;
      margin-left: 0;
    }
    .five-up li:nth-child(3n + 2) {
      margin-left: 33.89831%;
      margin-right: -100%;
      clear: none;
    }
    .five-up li:nth-child(3n + 3) {
      margin-left: 67.79661%;
      margin-right: -100%;
      clear: none;
    }
  }
}

.six-up {
  display: table;
}

.six-up li {
  margin-bottom: 3em;
}

.six-up li p {
  font-size: 1em;
  line-height: 1.5;
}

@media (min-width: 40.625em) {
  .six-up li {
    width: 47.36842%;
    float: left;
  }
  .six-up li:nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .six-up li {
    width: 31.81818%;
    float: left;
  }
  .six-up li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(3n + 2) {
    margin-left: 34.09091%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(3n + 3) {
    margin-left: 68.18182%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .six-up li {
    width: 23.72881%;
    float: left;
  }
  .six-up li:nth-child(4n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(4n + 2) {
    margin-left: 25.42373%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 3) {
    margin-left: 50.84746%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(4n + 4) {
    margin-left: 76.27119%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5), .six-up li:nth-child(6) {
    width: 47.36842%;
    float: left;
  }
  .six-up li:nth-child(5):nth-child(2n + 1), .six-up li:nth-child(6):nth-child(2n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .six-up li:nth-child(5):nth-child(2n + 2), .six-up li:nth-child(6):nth-child(2n + 2) {
    margin-left: 52.63158%;
    margin-right: -100%;
    clear: none;
  }
  .six-up li:nth-child(5) p, .six-up li:nth-child(6) p {
    font-size: 1.125em;
    line-height: 1.625;
  }
}

.social-list {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-align: center;
}

.social-list a {
  display: inline-block;
  width: 2em;
  height: 2em;
}

.social-list a svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
}

.social-list li {
  display: inline-block;
  padding: 0 .25em;
  text-align: center;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
}

.social-list svg .background {
  fill: #777777;
}

.social-list svg .color {
  fill: white;
}

.teaser-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.teaser-list li {
  list-style: none;
}

.teaser-list dd {
  margin: 0;
}

.teaser-item figure {
  margin: 0 0 0.75em;
  position: relative;
  overflow: hidden;
  padding-bottom: 56.25%;
}

.teaser-item figure a {
  display: block;
  width: 100%;
  height: 100%;
}

.teaser-item figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: block;
  width: 100%;
}

.teaser-item p {
  margin-bottom: 0;
}

.teaser-item h3 {
  margin-bottom: 0.375em;
}

.teaser-item h3 .passport-icon {
  max-width: 1em;
  max-height: 1em;
}

.teaser-item .zeta {
  margin-bottom: 0.375em;
  display: inline-block;
}

.teaser-item .icon {
  position: absolute;
  bottom: 0;
  left: 0;
  display: inline-block;
  width: 3.125em;
  height: 3.125em;
  background: rgba(23, 65, 137, 0.75);
}

.teaser-item .icon img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-width: 1.5625em;
  max-height: 1.5625em;
  width: auto;
  height: auto;
}

.collection-item figure {
  padding-bottom: 27.5%;
}

.js .teaser-item.slide-in-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .teaser-item.hidden-item {
  display: none;
}

.plugin-block, .plugin-list-block {
  margin-bottom: 3em;
}

.plugin-block:after, .plugin-list-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-block:before, .plugin-list-block:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-block h3 {
  border-bottom: 0.0625em solid #999999;
  margin-bottom: 1.5em;
}

.plugin-container h3 {
  margin-bottom: 0.1875em;
}

.plugin-list-block ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.plugin-list-block ul:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul:before {
  display: table;
  clear: both;
  content: '';
}

.plugin-list-block ul li {
  list-style: none;
}

.plugin-list-block ul dd {
  margin: 0;
}

.alpha + .plugin-block, .alpha + .plugin-list-block {
  margin-top: 3em;
}

.plugin-container figure {
  margin-bottom: 1.5em;
}

.plugin-container figure img {
  display: block;
}

.plugin-container figure.center {
  display: block;
  margin: 15px auto;
}

*[style*="float: left"], .left {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: left"], .left {
    display: inherit;
    float: left !important;
    margin-right: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

*[style*="float: right"], .right {
  float: none !important;
  display: block;
  margin: 0 auto 2.25em auto;
}

@media (min-width: 40.625em) {
  *[style*="float: right"], .right {
    display: inherit;
    float: right !important;
    margin-left: 1.5em;
    margin-bottom: 0.75em !important;
  }
}

.center {
  margin-bottom: 1.5em;
  text-align: center;
}

/**
 * wallop.css
 *
 * @fileoverview Default styles for wallop – recommended
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
.carousel-container *:focus {
  outline: 0.125em solid #f3ad00;
}

.carousel-container .full-screen,
.carousel-container .slides-pagination {
  display: none;
}

.carousel-container .Wallop-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-gap: 3px;
  padding: 0;
}

.carousel-container .Wallop-list .Wallop-item:before {
  display: none;
}

@media (min-width: 68.75em) {
  .carousel-container .Wallop-list {
    width: 150%;
    margin-left: -25%;
  }
}

@media (min-width: 95.625em) {
  .carousel-container .Wallop-list {
    width: 200%;
    margin-left: -50%;
  }
}

.js {
  /*
    This element groups all the items, but not the buttons
    It's a recommendation but it's very likely
    you'll want to hide any overflow from the items
    Especially when doing animations such as scale
   */
  /*
    This is the item element
    By default, they are all hidden and
    positioned absolute
    I recommend always having .Wallop-item--current
    in your markup by default (probably on the first element)
   */
  /*
    This is the current item element
    All we do here, is make it visible again reset
    the position to static. Could also be relative
   */
}

.js .carousel-container {
  overflow: hidden;
  margin-bottom: 3em;
  background: black;
}

@media (min-width: 68.75em) {
  .js .carousel-container {
    padding-top: 1em;
  }
}

.js .carousel-container .slides-pagination {
  display: inherit;
}

.js .Wallop-list {
  width: inherit;
}

.js .carousel.expanded .slides-pagination,
.js .carousel.expanded .full-screen {
  display: none;
}

.js .plugin-container .Wallop {
  position: relative;
  -webkit-animation-duration: 0.45s;
  animation-duration: 0.45s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.js .plugin-container .Wallop.entering-fullscreen {
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.js .plugin-container .Wallop.exiting-fullscreen {
  animation-name: slideOutDown;
}

.js .plugin-container .Wallop.entering-back {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.js .plugin-container .Wallop.viewing-full {
  position: fixed;
  height: 100%;
  width: 100%;
  left: 0;
  top: 0;
  z-index: 2147483647;
  background: black;
}

.js .plugin-container .Wallop.viewing-full button {
  z-index: 1;
}

.js .plugin-container .Wallop.viewing-full .slides-pagination {
  right: 20%;
  top: calc(75vh + 1em);
}

.js .plugin-container .Wallop.viewing-full .full-screen {
  left: 20%;
  top: calc(75vh + 1.15em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item {
  border-bottom: none;
  color: white;
  background: transparent;
  height: 100%;
  width: 100%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure {
  margin: 0 auto;
  width: 60%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .media-container {
  display: inline-block;
  height: 75vh;
  width: 100%;
  padding-top: 1em;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure figcaption {
  margin: 3em auto 0 auto;
  padding: 0;
  max-width: 60vw;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .see-more {
  left: calc(20% - 0.45em);
  top: calc(75vh + 7.75em);
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure .hide-more {
  right: 20%;
}

.js .plugin-container .Wallop.viewing-full .Wallop-item.Wallop-item--current figure.long-caption.expanded figcaption {
  padding-top: 3em;
}

.js .plugin-container .Wallop-list {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inherit;
  position: relative;
  overflow: hidden;
}

.js .plugin-container .Wallop-list li {
  list-style: none;
}

.js .plugin-container .Wallop-list dd {
  margin: 0;
}

.js .plugin-container .Wallop-item {
  visibility: hidden;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding-left: 0;
  margin-bottom: 0;
  color: white;
}

.js .plugin-container .Wallop-item .media-container {
  display: block;
  height: 24em;
  position: relative;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container {
    height: 32.8125em;
  }
}

.js .plugin-container .Wallop-item .media-container img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  max-height: 100%;
  max-width: 90%;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item .media-container img {
    max-width: 100%;
  }
}

.js .plugin-container .Wallop-item h4 {
  margin-bottom: 0.25em;
}

.js .carousel-item-caption {
  padding: 0.5em 1.5em;
  text-align: left;
}

.js .plugin-container .Wallop-item--current {
  visibility: visible;
  position: relative;
  text-align: center;
}

.js .plugin-container .Wallop-item--current figure {
  display: inline-block;
  width: 100%;
}

.js .plugin-container .Wallop-item--current figure.long-caption .hide-more,
.js .plugin-container .Wallop-item--current figure.long-caption .see-more {
  display: none;
}

@media (min-width: 68.75em) {
  .js .plugin-container .Wallop-item--current figure.long-caption figcaption {
    -webkit-transition: max-height 1s ease-in-out;
    -ms-transition: max-height 1s ease-in-out;
    transition: max-height 1s ease-in-out;
    max-height: 15em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption p {
    max-height: 4.5em;
    min-height: 4.5em;
    overflow: hidden;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: color 0.3s ease-in-out;
    -ms-transition: color 0.3s ease-in-out;
    transition: color 0.3s ease-in-out;
    display: inline-block;
    color: #bb0b0e;
    position: absolute;
    left: calc(5% - 0.45em);
    top: 40.25em;
    padding: 0 0.45em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .see-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .see-more:hover {
    color: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more {
    border: none;
    background: none;
    box-shadow: none;
    -webkit-transition: all 0.3s ease-in-out;
    -ms-transition: all 0.3s ease-in-out;
    transition: all 0.3s ease-in-out;
    display: inline-block;
    opacity: 0;
    width: 2em;
    height: 2em;
    position: absolute;
    right: 5%;
    z-index: 1;
    display: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:focus, .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:active {
    box-shadow: none;
    border: none;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more:hover svg {
    fill: #f3ad00;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption .hide-more svg {
    -webkit-transition: fill 0.3s ease-in-out;
    -ms-transition: fill 0.3s ease-in-out;
    transition: fill 0.3s ease-in-out;
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    pointer-events: none;
    max-width: 1em;
    max-height: 1em;
    fill: white;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded {
    padding-bottom: 8.55em;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded figcaption {
    max-height: 100%;
    position: absolute;
    padding: 3em 5% 1.5em 5%;
    max-width: inherit;
    bottom: 0;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded p {
    max-height: inherit;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .hide-more {
    display: inline-block;
  }
  .js .plugin-container .Wallop-item--current figure.long-caption.expanded .see-more {
    display: none;
  }
}

.js .plugin-container .Wallop-item--current figure img {
  display: inline-block;
}

.js .plugin-container .Wallop-item--current h4 {
  color: white;
}

.js .plugin-container .Wallop-item--current figcaption,
.js .plugin-container .Wallop-item--current .caption {
  padding: 1.5em 0 0 0;
  background: rgba(0, 0, 0, 0.75);
  text-align: left;
  color: white;
  font-style: normal;
  max-width: 90%;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .Wallop-item--current figcaption p,
.js .plugin-container .Wallop-item--current .caption p {
  margin-bottom: 0.55em;
}

.js .plugin-container .Wallop-item--current figcaption span,
.js .plugin-container .Wallop-item--current .caption span {
  height: auto;
  display: block;
  margin-top: 3em;
}

.js .plugin-container .Wallop-item--current figcaption.credit,
.js .plugin-container .Wallop-item--current .caption.credit {
  display: block;
  position: relative;
  padding: 0 0 0 30px !important;
}

.js .plugin-container .Wallop-item--current figcaption.credit:before,
.js .plugin-container .Wallop-item--current .caption.credit:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 3px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.js .Wallop-buttonPrevious,
.js .Wallop-buttonNext {
  border: none;
  background: none;
  box-shadow: none;
}

.js .Wallop-buttonPrevious:hover, .js .Wallop-buttonPrevious:focus, .js .Wallop-buttonPrevious:active,
.js .Wallop-buttonNext:hover,
.js .Wallop-buttonNext:focus,
.js .Wallop-buttonNext:active {
  box-shadow: none;
  border: none;
}

.js .Wallop-buttonPrevious svg,
.js .Wallop-buttonNext svg {
  height: 1em;
  width: 1em;
}

.js .Wallop-buttonPrevious svg path,
.js .Wallop-buttonNext svg path {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  opacity: 0.85;
}

.js .Wallop-buttonPrevious:hover svg path,
.js .Wallop-buttonNext:hover svg path {
  fill: #f3ad00;
}

.js .full-screen {
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: #999999;
  border: 0;
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  background: none;
  padding: 0.3em 0.45em 0.5em 0.45em;
  text-transform: uppercase;
  font-weight: 700;
  position: absolute;
  top: 37.5em;
  left: 5%;
  display: none;
  line-height: 0;
  z-index: 1;
}

.js .full-screen * {
  vertical-align: middle;
}

@media (min-width: 68.75em) {
  .js .full-screen {
    display: inline-block;
  }
}

.js .full-screen .full-screen-icon {
  -webkit-transition: fill 0.3s ease-in-out;
  -ms-transition: fill 0.3s ease-in-out;
  transition: fill 0.3s ease-in-out;
  fill: white;
  width: 1.25em;
  height: 1.25em;
  display: inline-block;
  margin-right: 0.5em;
  margin-bottom: -0.05em;
}

.js .full-screen:hover {
  color: #f3ad00;
}

.js .full-screen:hover .full-screen-icon {
  fill: #f3ad00;
}

.js .slides-pagination {
  margin: 0;
  position: absolute;
  top: 27.75em;
  right: 5%;
  font-weight: 700;
  z-index: 1;
}

@media (min-width: 68.75em) {
  .js .slides-pagination {
    top: 37.75em;
  }
}

.js .slides-pagination .count {
  color: #999999;
  float: left;
  margin: -0.05em 1em 0 0;
}

.js .slides-pagination button {
  display: inline-block;
}

.js .slides-pagination button:first-of-type {
  margin-right: 0.75em;
}

.js .plugin-container .video-gallery {
  max-width: 44em;
  margin: 0 auto;
}

.js .plugin-container .video-gallery .slides-pagination,
.js .plugin-container .video-gallery .full-screen {
  top: 0.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .slides-pagination,
  .js .plugin-container .video-gallery .full-screen {
    top: 23.75em;
  }
}

@media (min-width: 81.25em) {
  .js .plugin-container .video-gallery .slides-pagination,
  .js .plugin-container .video-gallery .full-screen {
    top: 25.75em;
  }
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .full-screen {
    left: calc(5% - 0.45em);
  }
}

.js .plugin-container .video-gallery .caption {
  padding: 0;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .caption {
    margin-top: 3.75em;
  }
}

.js .plugin-container .video-gallery .cove-container {
  margin-top: 2.25em;
}

@media (min-width: 68.75em) {
  .js .plugin-container .video-gallery .cove-container {
    margin-top: 0;
  }
}

.js .plugin-container .video-gallery.viewing-full {
  max-width: 100%;
}

.js .plugin-container .video-gallery.viewing-full .slides-pagination {
  right: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .full-screen {
  left: calc(50% - 23em);
  top: 28em;
}

.js .plugin-container .video-gallery.viewing-full .Wallop-item--current.Wallop-item {
  height: 100vh;
}

.js .plugin-container .video-gallery.viewing-full .cove-wrapper {
  width: 40em;
  margin: 1.5em auto 0 auto;
}

.js .plugin-container .video-gallery.viewing-full .cove-container {
  margin: 0;
}

.js .plugin-container .video-gallery.viewing-full .caption {
  max-width: 100%;
}

/**
 * wallop--slide.css
 *
 * @fileoverview Slide animation for wallop
 *
 * @author Pedro Duarte
 * @author http://pedroduarte.me/wallop
 */
/* the 10ms animation-delay fixed some weird rendering issues with iPhone */
.Wallop--slide .Wallop-item--showPrevious {
  -webkit-animation: slideFromLeft 350ms 10ms linear both;
  -moz-animation: slideFromLeft 350ms 10ms linear both;
  -ms-animation: slideFromLeft 350ms 10ms linear both;
  animation: slideFromLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--showNext {
  -webkit-animation: slideFromRight 350ms 10ms linear both;
  -moz-animation: slideFromRight 350ms 10ms linear both;
  -ms-animation: slideFromRight 350ms 10ms linear both;
  animation: slideFromRight 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hidePrevious,
.Wallop--slide .Wallop-item--hideNext {
  visibility: visible;
}

.Wallop--slide .Wallop-item--hidePrevious {
  -webkit-animation: slideToLeft 350ms 10ms linear both;
  -moz-animation: slideToLeft 350ms 10ms linear both;
  -ms-animation: slideToLeft 350ms 10ms linear both;
  animation: slideToLeft 350ms 10ms linear both;
}

.Wallop--slide .Wallop-item--hideNext {
  -webkit-animation: slideToRight 350ms 10ms linear both;
  -moz-animation: slideToRight 350ms 10ms linear both;
  -ms-animation: slideToRight 350ms 10ms linear both;
  animation: slideToRight 350ms 10ms linear both;
}

@-webkit-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideFromLeft {
  0% {
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideFromRight {
  0% {
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-webkit-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-moz-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-ms-keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideToLeft {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
    -moz-transform: translate3d(-100%, 0, 0);
    -ms-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
  }
}

@-webkit-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-moz-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@-ms-keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideToRight {
  99% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
    -moz-transform: translate3d(100%, 0, 0);
    -ms-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
  }
}

.accordion-toggle {
  display: none;
}

.js .accordion-toggle {
  border: none;
  background: none;
  display: block;
  width: 100%;
  text-align: left;
  text-transform: uppercase;
  color: #bb0b0e;
  font-size: 1.25em;
  font-weight: 700;
  position: relative;
  margin-bottom: 1.5em;
  padding-bottom: 0.5em;
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle * {
  vertical-align: middle;
}

.js .accordion-toggle:hover {
  border-bottom: 0.125em solid #999999;
}

.js .accordion-toggle svg {
  display: inline-block;
  margin-top: -.15em;
  height: .75em;
  width: .75em;
  fill: #bb0b0e;
}

.js .accordion-toggle .vertical {
  -webkit-transition: transform 0.25s ease-in-out;
  -ms-transition: transform 0.25s ease-in-out;
  transition: transform 0.25s ease-in-out;
  -ms-transform-origin: center;
  transform-origin: center;
}

.js .accordion-toggle.open .vertical {
  -ms-transform: scaleY(0);
  transform: scaleY(0);
}

.js .accordion-content {
  display: none;
}

.js .accordion-content.open {
  display: block;
}

.filters {
  background: #d0dbed;
  padding: 1.5em;
  margin-bottom: 1.5em;
  position: relative;
  /* CAUTION: IE hackery ahead */
}

.filters:after {
  display: table;
  clear: both;
  content: '';
}

.filters:before {
  display: table;
  clear: both;
  content: '';
}

.filters fieldset {
  padding: 0;
  margin: 0;
  margin-bottom: 1.5em;
  border: none;
}

.filters fieldset input[type='radio'] {
  position: absolute;
  left: -9999px;
}

.filters fieldset input[type='radio']:checked + label {
  background-color: #4872b4;
  color: white;
  border: 0.125em solid #4872b4;
}

.filters fieldset input[type='radio']:focus + label {
  border: 0.125em solid #f3ad00;
}

.filters fieldset label {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  background: white;
  padding: .2em 1.5em;
  font-weight: 700;
  color: #4872b4;
  display: inline-block;
  border: .125em solid white;
}

.filters fieldset label:first-of-type {
  border-radius: 1.25em 0 0 1.25em;
  padding-right: 1.15em;
}

.filters fieldset label:last-of-type {
  border-radius: 0 1.25em 1.25em 0;
  padding-left: 1.15em;
}

@media (min-width: 81.25em) {
  .filters fieldset label {
    width: 12.8125em;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .filters fieldset {
    display: inline-block;
    margin-bottom: 0;
    margin-right: 0.75em;
  }
}

@media only screen and (max-width: 23.75em) {
  .filters fieldset {
    font-size: 3.85vw;
  }
}

.filters .label {
  display: inline-block;
  margin-bottom: 0.75em;
  font-weight: 700;
  color: #434343;
}

@media (min-width: 68.75em) {
  .filters .label {
    margin-bottom: 0;
    margin-right: 0.375em;
  }
}

@media (min-width: 81.25em) {
  .filters .label {
    margin-right: 0.75em;
  }
}

.filters .styled-select {
  background: white;
  position: relative;
  display: inline-block;
  width: 100%;
  margin-bottom: 0.75em;
  border: .125em solid white;
}

.filters .styled-select.focused {
  border: 0.125em solid #f3ad00;
}

.filters .styled-select.focused:after {
  border-color: #f3ad00 #f3ad00 #f3ad00 #4872b4;
}

.filters .styled-select:after {
  position: absolute;
  top: -.125em;
  right: -.125em;
  content: '';
  background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwIDQwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6IzQ4NzJCNDt9LnN0MXtmaWxsOiNGRkZGRkY7fTwvc3R5bGU+PHJlY3QgY2xhc3M9InN0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTEyLjMsMTdsNy43LDcuN2w3LjctNy43bC0xLjctMS44bC01LjksNmwtNS45LTZMMTIuMywxN3oiLz48L3N2Zz4=);
  background-repeat: no-repeat;
  background-position: center;
  background-color: #4872b4;
  height: calc(100% + .25em);
  width: 2.49em;
  pointer-events: none;
  border: 0.125em solid #4872b4;
  border-left: none;
}

.filters .styled-select:before {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  right: 0;
  content: '';
  display: inline-block;
  background-color: white;
  height: 100%;
  width: 5.25em \9;
}

@media (min-width: 68.75em) {
  .filters .styled-select {
    width: inherit;
    margin: 0;
    margin-right: 0.75em;
  }
}

@media (min-width: 81.25em) {
  .filters .styled-select {
    margin-right: 1.5em;
  }
}

.filters select {
  padding: .2em .75em .19em .75em;
  display: inline-block;
  width: 100%;
  font-weight: 700;
  color: #4872b4;
  border: none;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
  background: none;
  padding-right: 4em;
  background-image: none;
  -webkit-appearance: none;
}

.filters select::-ms-expand {
  display: none;
  /* remove default arrow on ie10 and ie11 */
}

.filters .sorting {
  display: inline-block;
  width: 100%;
}

.filters .sorting .styled-select {
  margin-right: 0;
}

@media (min-width: 68.75em) {
  .filters .sorting {
    width: inherit;
    float: right;
  }
}

.filters .submit {
  clear: both;
  margin-top: 1.5em;
}

.filters .submit input[type='submit'] {
  padding: .25em .5em;
}

@media (min-width: 68.75em) {
  .filters form * {
    vertical-align: middle;
  }
}

@media (min-width: 81.25em) {
  .filters {
    font-size: 1.0625em;
  }
}

@media (min-width: 95.625em) {
  .filters {
    font-size: 1.125em;
  }
}

.filter-target.loading {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
  position: relative;
  opacity: 0;
}

.filter-target.loading:before {
  content: 'Loading...';
  display: inline-block;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center;
  top: 0;
  left: 0;
  background-color: white;
  color: #434343;
  font-weight: 700;
  text-align: center;
  font-size: 1.25em;
  padding: 1.5em;
  z-index: 9;
  opacity: 1;
}

.filter-target.loaded ul {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.js .filters select:focus {
  outline: none;
}

.js .filters .submit {
  display: none;
}

.related-films {
  margin: 3em 0;
}

.related-films img {
  width: 100%;
}

.related-films ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.related-films ul:after {
  display: table;
  clear: both;
  content: '';
}

.related-films ul:before {
  display: table;
  clear: both;
  content: '';
}

.related-films ul li {
  list-style: none;
}

.related-films ul dd {
  margin: 0;
}

.related-films ul li {
  width: 44.44444%;
  float: left;
  margin-bottom: 11.11111%;
}

.related-films ul li:nth-child(2n + 1) {
  margin-left: 0;
  margin-right: -100%;
  clear: both;
  margin-left: 0;
}

.related-films ul li:nth-child(2n + 2) {
  margin-left: 55.55556%;
  margin-right: -100%;
  clear: none;
}

@media (min-width: 40.625em) {
  .related-films ul li {
    width: 29.73684%;
    float: left;
    margin-bottom: 3em;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 35%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 70%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 68.75em) {
  .related-films ul li {
    width: 31.61538%;
    float: left;
    margin-bottom: 2.5641%;
  }
  .related-films ul li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(3n + 2) {
    margin-left: 34.17949%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(3n + 3) {
    margin-left: 68.35897%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .related-films ul li {
    width: 18.64407%;
    float: left;
  }
  .related-films ul li:nth-child(5n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .related-films ul li:nth-child(5n + 2) {
    margin-left: 20.33898%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 3) {
    margin-left: 40.67797%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 4) {
    margin-left: 61.01695%;
    margin-right: -100%;
    clear: none;
  }
  .related-films ul li:nth-child(5n + 5) {
    margin-left: 81.35593%;
    margin-right: -100%;
    clear: none;
  }
}

.email-signup-form input, .email-signup-form button {
  font-family: 'Roboto Slab', serif;
  padding: 0.75em 1.5em;
}

.email-signup-form .email-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
}

.email-signup-form .email-field::placeholder {
  text-transform: uppercase;
}

.email-signup-form .zip-code-field {
  display: block;
  margin-bottom: 0.75em;
  width: 100%;
  border: 1px solid #777777;
  text-transform: uppercase;
}

.email-signup-form .note {
  display: block;
  width: 100%;
  text-align: left;
  margin-bottom: 0.75em;
  font-size: .85em;
  margin-top: 0.75em;
}

.email-signup-form button[type='submit'] {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #243757;
  border: 0;
  padding-right: 3em;
  position: relative;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  text-transform: uppercase;
  width: 9em;
  z-index: 2;
}

.email-signup-form button[type='submit']:hover, .email-signup-form button[type='submit']:focus, .email-signup-form button[type='submit']:active {
  box-shadow: none;
  border: none;
}

.email-signup-form button[type='submit'] * {
  vertical-align: middle;
}

.email-signup-form button[type='submit'] svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.email-signup-form button[type='submit']:hover {
  background: #1d2c45;
}

.email-signup-form button[type='submit']:before {
  content: '';
  display: inline-block;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  box-shadow: 0px 0px 0 #243757,1px 1px 0 #243757,2px 2px 0 #243757,3px 3px 0 #243757,4px 4px 0 #243757,5px 5px 0 #243757,6px 6px 0 #243757,7px 7px 0 #243757,8px 8px 0 #243757,9px 9px 0 #243757,10px 10px 0 #243757,11px 11px 0 #243757,12px 12px 0 #243757,13px 13px 0 #243757,14px 14px 0 #243757,15px 15px 0 #243757,16px 16px 0 #243757,17px 17px 0 #243757,18px 18px 0 #243757,19px 19px 0 #243757,20px 20px 0 #243757,21px 21px 0 #243757,22px 22px 0 #243757,23px 23px 0 #243757,24px 24px 0 #243757,25px 25px 0 #243757,26px 26px 0 #243757,27px 27px 0 #243757,28px 28px 0 #243757,29px 29px 0 #243757,30px 30px 0 #243757,31px 31px 0 #243757,32px 32px 0 #243757,33px 33px 0 #243757,34px 34px 0 #243757,35px 35px 0 #243757,36px 36px 0 #243757,37px 37px 0 #243757,38px 38px 0 #243757,39px 39px 0 #243757,40px 40px 0 #243757,41px 41px 0 #243757,42px 42px 0 #243757,43px 43px 0 #243757,44px 44px 0 #243757,45px 45px 0 #243757,46px 46px 0 #243757,47px 47px 0 #243757,48px 48px 0 #243757,49px 49px 0 #243757,50px 50px 0 #243757,51px 51px 0 #243757,52px 52px 0 #243757,53px 53px 0 #243757,54px 54px 0 #243757,55px 55px 0 #243757,56px 56px 0 #243757,57px 57px 0 #243757,58px 58px 0 #243757,59px 59px 0 #243757,60px 60px 0 #243757,61px 61px 0 #243757,62px 62px 0 #243757,63px 63px 0 #243757,64px 64px 0 #243757,65px 65px 0 #243757,66px 66px 0 #243757,67px 67px 0 #243757,68px 68px 0 #243757,69px 69px 0 #243757,70px 70px 0 #243757,71px 71px 0 #243757,72px 72px 0 #243757,73px 73px 0 #243757,74px 74px 0 #243757,75px 75px 0 #243757,76px 76px 0 #243757,77px 77px 0 #243757,78px 78px 0 #243757,79px 79px 0 #243757,80px 80px 0 #243757,81px 81px 0 #243757,82px 82px 0 #243757,83px 83px 0 #243757,84px 84px 0 #243757,85px 85px 0 #243757,86px 86px 0 #243757,87px 87px 0 #243757,88px 88px 0 #243757,89px 89px 0 #243757,90px 90px 0 #243757,91px 91px 0 #243757,92px 92px 0 #243757,93px 93px 0 #243757,94px 94px 0 #243757,95px 95px 0 #243757,96px 96px 0 #243757,97px 97px 0 #243757,98px 98px 0 #243757,99px 99px 0 #243757,100px 100px 0 #243757,101px 101px 0 #243757,102px 102px 0 #243757,103px 103px 0 #243757,104px 104px 0 #243757,105px 105px 0 #243757,106px 106px 0 #243757,107px 107px 0 #243757,108px 108px 0 #243757,109px 109px 0 #243757,110px 110px 0 #243757,111px 111px 0 #243757,112px 112px 0 #243757,113px 113px 0 #243757,114px 114px 0 #243757,115px 115px 0 #243757,116px 116px 0 #243757,117px 117px 0 #243757,118px 118px 0 #243757,119px 119px 0 #243757,120px 120px 0 #243757,121px 121px 0 #243757,122px 122px 0 #243757,123px 123px 0 #243757,124px 124px 0 #243757,125px 125px 0 #243757,126px 126px 0 #243757,127px 127px 0 #243757,128px 128px 0 #243757,129px 129px 0 #243757,130px 130px 0 #243757,131px 131px 0 #243757,132px 132px 0 #243757,133px 133px 0 #243757,134px 134px 0 #243757,135px 135px 0 #243757,136px 136px 0 #243757,137px 137px 0 #243757,138px 138px 0 #243757,139px 139px 0 #243757,140px 140px 0 #243757,141px 141px 0 #243757,142px 142px 0 #243757,143px 143px 0 #243757,144px 144px 0 #243757,145px 145px 0 #243757,146px 146px 0 #243757,147px 147px 0 #243757,148px 148px 0 #243757,149px 149px 0 #243757,150px 150px 0 #243757,151px 151px 0 #243757,152px 152px 0 #243757,153px 153px 0 #243757,154px 154px 0 #243757,155px 155px 0 #243757,156px 156px 0 #243757,157px 157px 0 #243757,158px 158px 0 #243757,159px 159px 0 #243757,160px 160px 0 #243757,161px 161px 0 #243757,162px 162px 0 #243757,163px 163px 0 #243757,164px 164px 0 #243757,165px 165px 0 #243757,166px 166px 0 #243757,167px 167px 0 #243757,168px 168px 0 #243757,169px 169px 0 #243757,170px 170px 0 #243757,171px 171px 0 #243757,172px 172px 0 #243757,173px 173px 0 #243757,174px 174px 0 #243757,175px 175px 0 #243757,176px 176px 0 #243757,177px 177px 0 #243757,178px 178px 0 #243757,179px 179px 0 #243757,180px 180px 0 #243757,181px 181px 0 #243757,182px 182px 0 #243757,183px 183px 0 #243757,184px 184px 0 #243757,185px 185px 0 #243757,186px 186px 0 #243757,187px 187px 0 #243757,188px 188px 0 #243757,189px 189px 0 #243757,190px 190px 0 #243757,191px 191px 0 #243757,192px 192px 0 #243757,193px 193px 0 #243757,194px 194px 0 #243757,195px 195px 0 #243757,196px 196px 0 #243757,197px 197px 0 #243757,198px 198px 0 #243757,200px 200px 0 rgba(0, 0, 0, 0);
  opacity: .35;
}

.homepage-hero-item {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}

.homepage-hero-item:empty {
  display: none;
}

.homepage-hero-item img {
  display: block;
  width: 100%;
}

.homepage-hero-item img.blackAndWhite {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
}

.homepage-hero-item .title {
  padding: 0.75em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.homepage-hero-item .title .zeta {
  color: white;
  display: block;
  margin-bottom: 1.5em;
}

.homepage-hero-item .title.right {
  margin-left: 0 !important;
}

.homepage-hero-item .title.left {
  margin-right: 0 !important;
}

.homepage-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: 'Josefin Sans', sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
}

.homepage-hero-item .title .alpha:before {
  display: none;
}

.homepage-hero-item .watch {
  text-decoration: none;
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  padding-right: 3em;
  position: relative;
}

.homepage-hero-item .watch:hover {
  text-decoration: none;
}

.homepage-hero-item .watch:active {
  text-decoration: none;
}

.homepage-hero-item .watch:visited {
  text-decoration: none;
}

.homepage-hero-item .watch:focus {
  text-decoration: none;
}

.homepage-hero-item .watch * {
  vertical-align: middle;
}

.homepage-hero-item .watch svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.homepage-hero-item .watch.zeta {
  display: inline-block;
  font-size: 1em;
}

.homepage-hero-item .watch:hover {
  background: rgba(255, 255, 255, 0.5);
}

@media (min-width: 68.75em) {
  .homepage-hero-item {
    position: relative;
  }
  .homepage-hero-item .title {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
    position: absolute;
    left: 0;
    bottom: 15%;
    padding: 1.5em 3em;
    background: none;
  }
  .homepage-hero-item .title.left {
    left: 0;
    margin-right: 0;
  }
  .homepage-hero-item .title.right {
    right: 0;
    margin-right: 0;
    left: inherit;
  }
  .homepage-hero-item .title .alpha {
    font-size: 3em;
  }
  .homepage-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .homepage-hero-item .title:after {
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .homepage-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: '';
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .homepage-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .homepage-hero-item .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.pagination {
  margin: 3em 0;
  text-align: center;
}

.pagination .load-more {
  display: none;
}

@media (min-width: 81.25em) {
  .pagination {
    margin: 4.5em 0;
  }
  .pagination .title {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
}

.js .pagination .load-more {
  display: inline-block;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  background-color: #bb0b0e;
  border: 0;
  -webkit-transition: background 0.35s ease-in-out;
  -ms-transition: background 0.35s ease-in-out;
  transition: background 0.35s ease-in-out;
}

.js .pagination .load-more * {
  vertical-align: middle;
}

.js .pagination .load-more:hover {
  background: #8c0007;
}

.js .pagination .page-numbers {
  display: none;
}

.no-results {
  font-weight: 700;
  text-align: center;
  font-weight: 1.25em;
  padding: 1.5em;
  color: #434343;
}

.no-results.error {
  color: #bb0b0e;
}

.no-results.error b {
  display: block;
}

.appended-item {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInUp;
  animation-name: slideInUp;
}

.modular-signup {
  position: relative;
  padding: 30px 0;
}

.modular-signup .form-row {
  display: flex;
  flex-flow: row;
  justify-content: space-between;
  margin: 20px 0;
}

@media (max-width: 600px) {
  .modular-signup .form-row {
    display: block;
  }
}

.modular-signup .form-row.noflex {
  flex: none;
  display: block;
}

.modular-signup .form-row.noflex input {
  height: 30px;
}

.modular-signup .pot {
  display: none;
}

.modular-signup input {
  height: 60px;
  padding: 15px;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 20px;
  font-family: "Muli", "Trebuchet MS";
  text-transform: uppercase;
  color: #777777;
  background-color: #e9e9e9;
  border: none;
  font-weight: 400;
}

.modular-signup input:first-child {
  margin-right: 20px;
}

@media (max-width: 600px) {
  .modular-signup input:first-child {
    margin-bottom: 20px;
  }
}

.modular-signup input.half {
  width: 50%;
}

@media (max-width: 600px) {
  .modular-signup input.half {
    width: 100%;
  }
}

.modular-signup input.short {
  width: 35%;
}

@media (max-width: 600px) {
  .modular-signup input.short {
    width: 100%;
  }
}

.modular-signup input.newsletter-checkbox {
  padding: 0;
  line-height: 1;
  margin-bottom: 0;
}

@media (max-width: 500px) {
  .modular-signup input.newsletter-checkbox {
    float: left;
  }
}

.modular-signup .submit {
  display: block;
  height: 60px;
  background-color: #bb0b0e;
  font-family: "Roboto Slab", serif;
  font-weight: 700;
  border: 0;
  opacity: 1;
  outline: none;
  color: #e9e9e9;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 15px;
  box-sizing: border-box;
  font-size: 16px;
  line-height: 20px;
  position: relative;
  padding-right: 40px;
  transition: background-color 0.3s ease-in-out;
}

.modular-signup .submit:hover {
  background-color: #8c0007;
}

.modular-signup .submit svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  fill: white;
  right: 1em;
  display: inline-block;
  width: 1em;
  height: 1em;
}

.modular-signup label {
  line-height: 30px;
  vertical-align: top;
  display: inline;
  font-family: "Muli", "Trebuchet MS";
  border: none;
  font-weight: 400;
}

.inline-email-signup {
  text-align: center;
  overflow: hidden;
  background: url("../images/bg-triangle-newsletter.png");
  margin: 55px 0;
  width: 100%;
  position: relative;
  padding: 30px;
}

@media (max-width: 600px) {
  .inline-email-signup {
    margin: 25px 0;
  }
}

.inline-email-signup .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
  text-align: left;
  display: block;
  margin-bottom: 10px;
  color: #fff;
  font-size: 14px;
}

.inline-email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

.inline-email-signup h3 {
  text-align: left;
  margin-bottom: 10px;
  font-weight: normal;
  color: #fff !important;
}

.inline-email-signup .email-signup-form {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  width: 100%;
  padding-right: 10%;
  color: #ffffff;
}

.inline-email-signup .email-signup-form .email-field {
  float: left;
  display: inline-block;
  margin-bottom: 0;
  margin-right: 1%;
  margin-left: 0;
  width: 45%;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form .email-field {
    width: 100%;
    float: none;
    display: block;
    margin-right: 0;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form .zip-code-field {
  float: left;
  display: inline-block;
  margin-bottom: 0;
  width: 30%;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form .zip-code-field {
    width: 100%;
    float: none;
    display: block;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form button[type="submit"] {
  width: 24%;
  display: inline-block;
}

@media (max-width: 650px) {
  .inline-email-signup .email-signup-form button[type="submit"] {
    width: 100%;
    float: none;
    display: block;
    margin-bottom: 10px;
  }
}

.inline-email-signup .email-signup-form .note {
  width: 75%;
}

.film-listings ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-listings ul li {
  list-style: none;
}

.film-listings ul dd {
  margin: 0;
}

.film-listings ul li {
  margin-bottom: 3em;
}

.film-listings ul li:after {
  display: table;
  clear: both;
  content: '';
}

.film-listings ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .film-listings ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .film-listings .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .film-listings .image {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .film-listings .image {
    width: 49.15254%;
    float: left;
    margin-right: 1.69492%;
  }
}

.film-listings .description h3 {
  margin-bottom: 0;
}

.film-listings .description .zeta {
  display: block;
  margin-top: 0.375em;
  margin-bottom: 0.75em;
}

.film-listings .description p {
  margin-bottom: 0.75em;
}

.film-listings .description .parts {
  color: #777777;
  font-weight: 700;
}

.film-listings .description .parts a:not(:last-of-type):after {
  content: '|';
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: .4375em;
  margin-right: .3125em;
  line-height: 1;
}

@media (min-width: 40.625em) {
  .film-listings .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .film-listings .description {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .film-listings .description {
    width: 49.15254%;
    float: right;
    margin-right: 0;
  }
  .film-listings .description p {
    margin-bottom: 1.5em;
  }
}

.film-detail-hero-item {
  margin: 0;
  margin-top: 3em;
}

.film-detail-hero-item img {
  display: block;
  width: 100%;
}

.film-detail-hero-item .mp4-wrapper {
  position: relative;
}

.film-detail-hero-item .mp4-wrapper .hero {
  width: 100%;
  padding-top: 56%;
  position: relative;
}

.film-detail-hero-item .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.film-detail-hero-item .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.film-detail-hero-item .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.film-detail-hero-item .title {
  padding: 0.75em 1.5em 1em 1.5em;
  background: #ac0b0e;
  color: white;
  float: none !important;
  margin-bottom: 0 !important;
}

.film-detail-hero-item .title.right {
  margin-left: 0 !important;
}

.film-detail-hero-item .title.left {
  margin-right: 0 !important;
}

.film-detail-hero-item .title .alpha {
  text-transform: uppercase;
  font-family: "Josefin Sans", sans-serif;
  color: white;
  font-size: 2em;
  margin-bottom: 0;
  line-height: 1.2;
  display: block;
  padding-top: 0.25em;
}

.film-detail-hero-item .title .alpha:before {
  display: none;
}

.film-detail-hero-item .title .zeta {
  display: inline-block;
  color: white;
  margin-bottom: 0.5em;
}

.film-detail-hero-item .title .underline {
  display: inline-block;
  font-size: 4vw;
  font-weight: 700;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .title .underline {
    font-size: 1.5em;
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title .zeta {
    margin-bottom: 1.5em;
  }
  .film-detail-hero-item .title .underline {
    margin-top: 0.5em;
  }
}

.film-detail-hero-item .overlay {
  font-size: 3vw;
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .overlay {
    font-size: inherit;
  }
}

.film-detail-hero-item .watch-link {
  text-decoration: none;
  display: block;
  position: relative;
  font-size: 3vw;
}

.film-detail-hero-item .watch-link:hover {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:active {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:visited {
  text-decoration: none;
}

.film-detail-hero-item .watch-link:focus {
  text-decoration: none;
}

.film-detail-hero-item .watch-link .alpha {
  -webkit-transition: color 0.35s ease-in-out;
  -ms-transition: color 0.35s ease-in-out;
  transition: color 0.35s ease-in-out;
}

.film-detail-hero-item .watch-link .alpha:after {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: table;
  clear: both;
  content: '';
}

.film-detail-hero-item .watch-link .alpha:before {
  display: none;
}

.film-detail-hero-item .watch-link .alpha .title-copy {
  float: left;
  width: calc(100% - 2em);
  padding-top: 0.125em;
}

.film-detail-hero-item .watch-link .alpha .title-copy:after {
  -webkit-transition: all 0.3s ease-in-out;
  -ms-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  background: white;
  height: 1px;
  width: 100%;
  visibility: hidden;
  -ms-transform: scaleX(0);
  transform: scaleX(0);
}

.film-detail-hero-item .watch-link .alpha .play-icon {
  max-height: 1.25em;
  max-width: 1.25em;
  display: inline-block;
  float: left;
  margin-right: 0.5em;
}

.film-detail-hero-item .watch-link .alpha .play-icon path {
  -webkit-transition: fill 0.35s ease-in-out;
  -ms-transition: fill 0.35s ease-in-out;
  transition: fill 0.35s ease-in-out;
  fill: white;
}

.film-detail-hero-item .watch-link:hover .title-copy {
  position: relative;
}

.film-detail-hero-item .watch-link:hover .title-copy:after {
  visibility: visible;
  -ms-transform: scaleX(1);
  transform: scaleX(1);
}

@media (min-width: 40.625em) {
  .film-detail-hero-item .watch-link {
    font-size: inherit;
  }
}

@media (min-width: 68.75em) {
  .film-detail-hero-item {
    position: relative;
  }
  .film-detail-hero-item .title {
    position: absolute;
    bottom: 15%;
    padding: 1.5em 1.875em;
    background: none;
  }
  .film-detail-hero-item .title.left {
    width: 55.12821%;
    float: left;
    margin-right: 2.5641%;
    left: 0;
    padding-right: 0.25em;
  }
  .film-detail-hero-item .title.right {
    width: 55.12821%;
    float: right;
    margin-right: 0;
    right: 0;
    padding-right: 0.25em;
  }
  .film-detail-hero-item .title .alpha {
    font-size: 3em;
  }
  .film-detail-hero-item .title * {
    position: relative;
    z-index: 3;
  }
  .film-detail-hero-item .title:after {
    content: "";
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 1;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:after {
      background: rgba(255, 255, 255, 0.2);
    }
  }
  .film-detail-hero-item .title:before {
    background: rgba(0, 0, 0, 0.6);
    content: "";
    position: absolute;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 2;
  }
  @supports (mix-blend-mode: multiply) {
    .film-detail-hero-item .title:before {
      background: #d90002;
      mix-blend-mode: multiply;
    }
  }
}

@media (min-width: 81.25em) {
  .film-detail-hero-item .title.left {
    width: 47.0339%;
    float: left;
    margin-right: 1.69492%;
    left: 0;
  }
  .film-detail-hero-item .title.right {
    width: 47.0339%;
    float: right;
    margin-right: 0;
    right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-detail-hero-item .title.left {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
  }
  .film-detail-hero-item .title.right {
    width: 40.67797%;
    float: right;
    margin-right: 0;
  }
}

.film-detail-hero-item .watch-link + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .title-copy + .zeta {
  margin-top: 1.5em;
}

.film-detail-hero-item .zeta + .watch-link .alpha {
  padding-top: 0;
}

.film-sub-nav {
  background: #174189;
  color: white;
  -webkit-transition: background 0.3s ease-in-out;
  -ms-transition: background 0.3s ease-in-out;
  transition: background 0.3s ease-in-out;
  margin-bottom: 1.5em;
}

.film-sub-nav:after {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav:before {
  display: table;
  clear: both;
  content: '';
}

.film-sub-nav a {
  text-decoration: none;
  display: inline-block;
  color: white;
  text-transform: uppercase;
  font-size: 1.125em;
}

.film-sub-nav a:hover {
  text-decoration: none;
}

.film-sub-nav a:active {
  text-decoration: none;
}

.film-sub-nav a:visited {
  text-decoration: none;
}

.film-sub-nav a:focus {
  text-decoration: none;
}

.film-sub-nav a:hover {
  color: white;
  text-decoration: none;
}

.film-sub-nav ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-sub-nav ul li {
  list-style: none;
}

.film-sub-nav ul dd {
  margin: 0;
}

@media (min-width: 68.75em) {
  .film-sub-nav {
    margin-bottom: 3em;
  }
}

.film-parts,
.tab-mobile-toggle {
  display: none;
}

.film-parts {
  position: relative;
}

@media (min-width: 81.25em) {
  .film-parts {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 95.625em) {
  .film-parts {
    width: 23.72881%;
    float: right;
    margin-right: 0;
  }
}

.info-tabs .tab-link {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  padding: 0.5625em 1em;
  width: 100%;
}

.info-tabs .tab-link:hover {
  background: #103066;
}

.info-tabs .tab-link.active {
  background: #103066;
  cursor: default;
}

@media (min-width: 81.25em) {
  .info-tabs .tab-list {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .info-tabs .tab-list li {
    display: inline-block;
  }
  .info-tabs .tab-list li a {
    padding: 1.3em 1.5em;
  }
}

@media (min-width: 81.25em) {
  .info-tabs {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 95.625em) {
  .info-tabs {
    width: 74.57627%;
    float: left;
    margin-right: 1.69492%;
  }
}

.tab-panel .tab-panel-title {
  margin-bottom: 0.25em;
}

.tab-panel .part-content {
  margin-top: 3em;
}

.tab-panel .bio figure {
  text-align: center;
  margin: 0 auto;
  margin-bottom: 1.5em;
}

.tab-panel .bio figure span {
  height: 75vw;
  width: 75vw;
  display: inline-block;
  position: relative;
  overflow: hidden;
  border-radius: 50%;
}

.tab-panel .bio figure img {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  object-fit: cover;
  min-height: 100%;
  min-width: 100%;
}

@media (min-width: 40.625em) {
  .tab-panel .bio figure span {
    width: 10em;
    height: 10em;
  }
}

@media (min-width: 68.75em) {
  .tab-panel .bio {
    display: grid;
    grid-template-columns: 2.5fr 4fr;
  }
  .tab-panel .bio figure,
  .tab-panel .bio .bio-content {
    display: inline-block;
  }
  .tab-panel .bio figure {
    width: 30%;
    vertical-align: top;
  }
  .tab-panel .bio figure span {
    width: 12.5em;
    height: 12.5em;
  }
  .tab-panel .bio .bio-content {
    width: 65%;
  }
  @supports (display: grid) {
    .tab-panel .bio figure,
    .tab-panel .bio .bio-content {
      width: auto;
      vertical-align: inherit;
    }
    .tab-panel .bio figure {
      align-content: center;
    }
  }
}

@media (min-width: 81.25em) {
  .tab-panel .bio figure span {
    width: 15em;
    height: 15em;
  }
}

@media (min-width: 95.625em) {
  .tab-panel .bio figure span {
    width: 20em;
    height: 20em;
  }
}

.tab-panel .pdf-links strong {
  display: inline-block;
  margin-right: 0.5em;
}

.tab-panel .pdf-links .part-download {
  display: inline-block;
}

.tab-panel .pdf-links .part-download:not(:last-of-type):after {
  content: "|";
  color: #999999;
  font-weight: 400;
  display: inline-block;
  margin-left: 0.4375em;
  margin-right: 0.3125em;
  line-height: 1;
  vertical-align: text-top;
}

.tab-panel .single-download {
  display: inline-block;
}

@media (min-width: 40.625em) {
  .tab-panel {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
    float: none;
  }
}

@media (min-width: 68.75em) {
  .tab-panel {
    width: 74.35897%;
    float: left;
    margin-right: 2.5641%;
    float: none;
  }
}

@media (min-width: 81.25em) {
  .tab-panel {
    max-width: 65.25em;
  }
}

@media (min-width: 81.25em) {
  .related-feature-list .filters .label {
    margin-left: -4.1875em;
  }
}

.related-feature-list .filters form {
  text-align: center;
}

.related-feature-list .filters form fieldset label {
  width: 100%;
}

.related-feature-list .filters form fieldset label:first-of-type {
  border-radius: 0;
}

.related-feature-list .filters form fieldset label:last-of-type {
  border-radius: 0;
}

@media only screen and (min-width: 45.3125em) {
  .related-feature-list .filters form fieldset label {
    width: 7.5em;
  }
  .related-feature-list .filters form fieldset label:first-of-type {
    border-radius: 1.25em 0 0 1.25em;
    padding-right: 1.15em;
  }
  .related-feature-list .filters form fieldset label:last-of-type {
    border-radius: 0 1.25em 1.25em 0;
    padding-left: 1.15em;
  }
}

@media (min-width: 68.75em) {
  .related-feature-list .filters form fieldset label {
    width: 10em;
  }
}

@media only screen and (max-width: 23.75em) {
  .related-feature-list .filters form fieldset label {
    font-size: 4.85vw;
  }
}

.js .film-parts {
  display: block;
}

.js .part-selection {
  font-size: 1.125em;
  text-transform: uppercase;
  display: block;
  margin: 0.25em 0.3em;
}

.js .part-selection:after {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection:before {
  display: table;
  clear: both;
  content: '';
}

.js .part-selection .instruction {
  display: none;
}

.js .part-selection button {
  height: 3.8175em;
  width: 100%;
  position: relative;
  z-index: 2;
  background: white;
  text-align: left;
  border: 0.0625em solid #999999;
  border-bottom: none;
  padding: 0.25em 1em;
  text-transform: uppercase;
  color: #434343;
  position: relative;
}

.js .part-selection button .part {
  width: calc(100% - 1em);
  font-weight: 700;
}

.js .part-selection button .part span {
  display: block;
  font-size: 0.777em;
  color: #4872b4;
}

.js .part-selection button svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: #999999;
  transform-origin: 50% 22.5%;
}

.js .part-selection button.close-state svg {
  transform: rotate(180deg);
}

.js .film-parts-large {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  padding: 0.25em 0.35em;
  width: 100%;
  position: absolute;
  right: 0;
  top: 4.05em;
  position: absolute;
  z-index: 1;
  overflow: hidden;
  visibility: hidden;
  max-height: 0;
}

.js .film-parts-large.open {
  max-height: 20em;
  visibility: visible;
}

.js .film-parts-large a {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  background: white;
  padding: 0.25em 1em;
  width: 100%;
  color: #434343;
  border: 0.0625em solid #999999;
}

.js .film-parts-large a span {
  display: block;
  font-size: 0.777em;
  color: #4872b4;
}

.js .film-parts-large a:hover {
  background: #e6e6e6;
}

.js .film-parts-large a:hover span {
  color: #4872b4;
}

.js .film-parts-large a.active {
  background: #e6e6e6;
  cursor: default;
}

.js .film-parts-large a.active span {
  color: #4872b4;
}

.js .film-parts-large li:not(:last-of-type) a {
  border-bottom: none;
}

@media (min-width: 68.75em) {
  .js .film-parts-large {
    top: 4.35em;
    padding: 0.25em 0.35em;
  }
}

.js .tab-mobile-toggle {
  background: transparent;
  padding: 0.75em 1.5em;
  text-align: center;
  display: inline-block;
  color: white;
  border-color: white;
  border-width: 0.0625em;
  border-style: solid;
  text-align: left;
  display: inline-block;
  position: relative;
  height: 3.8175em;
  width: calc(100% - 0.65em);
  margin: 0.3em;
  font-size: 1.125em;
  text-transform: uppercase;
}

.js .tab-mobile-toggle * {
  vertical-align: middle;
}

.js .tab-mobile-toggle.mutiple-episodes {
  margin: 0 0.3em 0.3em 0.3em;
}

.js .tab-mobile-toggle span {
  display: inline-block;
  margin-right: 1.5em;
  padding-bottom: 0.15em;
}

.js .tab-mobile-toggle:hover, .js .tab-mobile-toggle:focus, .js .tab-mobile-toggle:active {
  border: 0.0625em solid 0.0625em;
}

.js .tab-mobile-toggle svg {
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
  max-height: 1em;
  max-width: 1em;
  right: 1em;
  fill: white;
  transform-origin: 50% 22.5%;
}

.js .tab-mobile-toggle.close-state svg {
  transform: rotate(180deg);
}

@media (min-width: 81.25em) {
  .js .tab-mobile-toggle {
    display: none;
  }
}

.js .info-tabs .tab-list.menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  width: 100%;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

.js .info-tabs .tab-list.menu.open {
  visibility: visible;
  max-height: 20em;
}

@media (min-width: 81.25em) {
  .js .info-tabs .tab-list.menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .tab-panel {
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  margin-top: 1.5em;
  display: none;
}

.js .tab-panel.default {
  display: block;
}

.js .tab-panel.open {
  display: block;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

@media (min-width: 81.25em) {
  .js .tab-panel {
    max-width: 65.25em;
  }
}

.film-shop-links {
  margin: 3.75em 0;
  clear: both;
}

.film-shop-links img {
  max-width: 6.25em;
}

.film-shop-links * {
  vertical-align: middle;
}

.film-shop-links a {
  display: inline-block;
}

.film-shop-links ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-shop-links ul li {
  list-style: none;
}

.film-shop-links ul dd {
  margin: 0;
}

.film-shop-links ul li {
  display: inline-block;
}

.film-shop-links ul li:not(:first-of-type) {
  margin-left: 1em;
}

.film-funders {
  margin-bottom: 3.75em;
  text-align: center;
}

.film-funders * {
  vertical-align: middle;
}

.film-funders a {
  display: inline-block;
}

.film-funders img {
  max-width: 10em;
}

.film-funders ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.film-funders ul li {
  list-style: none;
}

.film-funders ul dd {
  margin: 0;
}

.film-funders ul li {
  display: inline-block;
  margin-bottom: 1em;
}

.film-funders ul li:not(:first-of-type) {
  margin-left: 1em;
}

@media (min-width: 68.75em) {
  .film-funders {
    text-align: left;
  }
}

.film-title {
  margin-bottom: 0;
}

.film-title .passport-icon {
  max-width: 1.15em;
  max-height: 1.15em;
  padding-right: 0.25em;
}

.premiere-date {
  color: #4872b4;
}

.tagline {
  font-weight: 700;
  display: block;
  font-size: 1.25em;
  color: #999999;
  text-transform: uppercase;
}

.feature-listings:after {
  display: table;
  clear: both;
  content: '';
}

.feature-listings:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list:after {
  display: table;
  clear: both;
  content: '';
}

.feature-list:before {
  display: table;
  clear: both;
  content: '';
}

.feature-list li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .feature-list li {
    width: 31.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 2.5641%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 65.64103%;
    float: left;
    margin-right: 2.5641%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-list li {
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-list li:nth-child(3n) {
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-child(3n+1) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-child(5) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
  .feature-list li:nth-of-type(6) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(7) {
    clear: none;
  }
  .feature-list li:nth-of-type(8) {
    float: right;
    margin-right: 0;
    margin-right: 1.69492%;
    clear: none;
  }
  .feature-list li:nth-of-type(9) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(10) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(11) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(12) {
    float: left;
  }
  .feature-list li:nth-of-type(13) {
    float: right;
    margin-right: 0;
    clear: none;
  }
  .feature-list li:nth-of-type(14) {
    margin-left: 0;
    clear: both;
  }
  .feature-list li:nth-of-type(15) {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
    float: right;
    margin-right: 0;
  }
}

.features-paginated li {
  margin-bottom: 3em;
}

@media (min-width: 68.75em) {
  .features-paginated li {
    width: 31.53846%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 34.10256%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 68.20513%;
    margin-right: -100%;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .features-paginated li {
    width: 32.20339%;
    float: left;
  }
  .features-paginated li:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0;
  }
  .features-paginated li:nth-child(3n + 2) {
    margin-left: 33.89831%;
    margin-right: -100%;
    clear: none;
  }
  .features-paginated li:nth-child(3n + 3) {
    margin-left: 67.79661%;
    margin-right: -100%;
    clear: none;
  }
}

.feature .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature .overline .zeta {
  display: block;
}

.feature .overline + h4 {
  margin-top: -0.65em;
}

.feature .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.25em;
}

.feature .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature .overline .social-sharing span {
  display: inline-block;
  margin-top: 0.015em;
}

.feature .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature .overline .social-sharing ul li {
  list-style: none;
}

.feature .overline .social-sharing ul dd {
  margin: 0;
}

.feature .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: 0.1em;
}

.feature .overline .social-sharing li:first-of-type {
  margin-left: 0.25em;
}

.feature .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: 0.25em;
  font-size: 0.95em;
}

.feature .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature .overline .social-sharing li button:hover, .feature .overline .social-sharing li button:focus, .feature .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature .overline .social-sharing li a,
.feature .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: 0.1em;
}

.feature .overline .social-sharing li svg {
  overflow: visible;
}

.feature .overline .social-sharing li svg .color {
  fill: white;
}

.feature .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature .mp4-wrapper {
  position: relative;
  margin-bottom: 30px;
}

.feature .mp4-wrapper .hero {
  width: 100%;
  padding-top: 56%;
  position: relative;
}

.feature .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.feature .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.feature .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.feature .mp4-wrapper .caption-wrapper {
  padding: 10px 0;
}

.feature .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

@media only screen and (min-width: 57.8125em) {
  .feature .center.large-media img {
    max-width: inherit;
    width: 57.8125em;
    margin-left: -6.640625em;
  }
}

@media (min-width: 68.75em) {
  .feature .right.medium-media {
    max-width: inherit;
    margin-right: -5em;
  }
}

@media (min-width: 68.75em) {
  .feature .left.medium-media {
    max-width: inherit;
    margin-left: -5em;
  }
}

.js .feature .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: 0.65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature .overline .copy-url-container {
    width: 24em;
  }
  .js .feature .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

@media (min-width: 68.75em) {
  .js .feature .ad-block.desktop {
    padding: 0 0 1.5em 0;
    margin-top: -1.5em;
  }
}

.collection-page .collection-detail-hero-item {
  margin-bottom: 3em;
}

.collection-page .collection-detail-hero-item img {
  width: 100%;
}

.collection-page .collection-section {
  position: relative;
  padding: 2em 0;
  width: 100%;
}

.collection-page .collection-section.no_title {
  padding: 0 0 2em;
}

.collection-page .collection-section:after {
  content: "";
  width: 100vw;
  position: absolute;
  left: calc(-100vw / 2 + 50%);
  right: 0;
  top: 0;
  height: 100%;
  z-index: -1;
}

.collection-page .collection-section.white:after {
  background-color: #ffff;
}

.collection-page .collection-section.grey:after {
  background-color: rgba(227, 227, 227, 0.75);
  background-image: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
}

.grid {
  z-index: 1;
}

.feature-full-width {
  width: 50%;
  margin: 0 auto;
  float: none;
  margin-bottom: 15px !important;
  min-width: 700px;
}

@media (max-width: 1024px) {
  .feature-full-width {
    width: 100%;
    min-width: 0;
  }
}

.feature-full-width.alt {
  padding: 0;
  margin-top: 0;
  margin-bottom: 45px;
}

.feature-full-width h3 {
  font-family: "Muli", sans-serif !important;
  font-size: 32px !important;
  line-height: 34px !important;
  font-weight: 700 !important;
  font-style: normal !important;
}

.feature-full-width h3:not(.white) {
  color: #434343 !important;
}

.feature-full-width .overline {
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0;
}

.feature-full-width .overline:after {
  display: table;
  clear: both;
  content: '';
}

.feature-full-width .overline:before {
  display: table;
  clear: both;
  content: '';
}

.feature-full-width .overline.flat {
  margin-bottom: 25px;
}

.feature-full-width .overline .zeta {
  display: block;
  margin-top: 20px;
}

.feature-full-width .overline + h4 {
  margin-top: -0.65em;
}

.feature-full-width .overline .intro-content {
  max-width: 45em;
  margin: 0 auto;
}

.feature-full-width .overline .intro {
  margin: 1em 0 0 0;
  font-size: 1.375em;
}

.feature-full-width .overline .byline {
  margin-top: 1.5em;
  color: #777777;
  font-weight: 700;
  vertical-align: middle;
}

.feature-full-width .overline .byline + .social-sharing {
  margin-top: 0.75em;
}

@media (min-width: 40.625em) {
  .feature-full-width .overline .byline + .social-sharing {
    margin-top: 1.8em;
  }
}

@media (min-width: 40.625em) {
  .feature-full-width .overline .byline {
    display: inline-block;
    margin-right: 2.25em;
  }
}

.feature-full-width .overline .social-sharing {
  display: none;
  color: #777777;
  font-weight: 700;
  margin-top: 1.5em;
  vertical-align: middle;
}

.feature-full-width .overline .social-sharing span {
  display: inline-block;
  margin-top: 0.015em;
}

.feature-full-width .overline .social-sharing ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  display: inline-block;
  vertical-align: middle;
  height: 1.95em;
}

.feature-full-width .overline .social-sharing ul li {
  list-style: none;
}

.feature-full-width .overline .social-sharing ul dd {
  margin: 0;
}

.feature-full-width .overline .social-sharing li {
  display: inline-block;
  padding: 0;
  margin: 0;
  position: relative;
  width: 1.95em;
  height: 1.95em;
  margin-right: 0.1em;
}

.feature-full-width .overline .social-sharing li:first-of-type {
  margin-left: 0.25em;
}

.feature-full-width .overline .social-sharing li .copy-url-container {
  background: #eaa700;
  padding: 1em;
  font-weight: 400;
  font-size: 1em;
  color: white;
}

.feature-full-width .overline .social-sharing li .copy-url-container label {
  display: inline-block;
  margin-bottom: 0.25em;
  font-size: 0.95em;
}

.feature-full-width .overline .social-sharing li .copy-url-container textarea {
  vertical-align: middle;
  max-width: 100%;
}

.feature-full-width .overline .social-sharing li button {
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
}

.feature-full-width .overline .social-sharing li button:hover, .feature-full-width .overline .social-sharing li button:focus, .feature-full-width .overline .social-sharing li button:active {
  box-shadow: none;
  border: none;
}

.feature-full-width .overline .social-sharing li a,
.feature-full-width .overline .social-sharing li button {
  display: inline-block;
  width: 100%;
  height: 100%;
  padding: 0.1em;
}

.feature-full-width .overline .social-sharing li svg {
  overflow: visible;
}

.feature-full-width .overline .social-sharing li svg .color {
  fill: white;
}

.feature-full-width .overline .social-sharing li svg .facebook {
  fill: #4073b7;
}

.feature-full-width .overline .social-sharing li svg .twitter {
  fill: #28a9e0;
}

.feature-full-width .overline .social-sharing li svg .mailto {
  fill: #8db729;
}

.feature-full-width .overline .social-sharing li svg .copy {
  fill: #eaa700;
}

.feature-full-width .overline .social-sharing li:before {
  display: none;
}

@media (min-width: 68.75em) {
  .feature-full-width .overline .intro-content {
    max-width: inherit;
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
  .feature-full-width .overline .ad-block {
    text-align: right;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .feature-full-width .overline .intro-content {
    width: 70.33898%;
    float: left;
    margin-right: 1.69492%;
  }
  .feature-full-width .overline .ad-block {
    width: 27.9661%;
    float: right;
    margin-right: 0;
  }
}

.feature-full-width .feature-content {
  max-width: 44.53125em;
  margin: 0 auto;
}

.feature-full-width p + figure.full-width {
  margin: 55px auto 35px !important;
}

.feature-full-width figure {
  display: block;
}

.feature-full-width figure.full-width {
  float: none !important;
}

.feature-full-width figure.full-width.center {
  background-position: center center;
}

.feature-full-width figure.full-width.left {
  background-position: left center;
}

.feature-full-width figure.full-width.right {
  background-position: right center;
}

.feature-full-width figure.full-width .media-container {
  display: block;
  width: 100vw;
  height: auto;
  background-repeat: no-repeat;
  background-size: cover;
  margin-left: calc(-100vw / 2 + 50%);
}

.feature-full-width figure.full-width .media-container img {
  display: block;
  width: 100vw;
  height: auto;
  object-fit: cover;
  margin-left: calc(-100vw / 2 + 50%);
  max-width: 100vw;
}

@media (max-width: 1024px) {
  .feature-full-width figure.full-width .media-container {
    height: auto;
  }
  .feature-full-width figure.full-width .media-container img {
    position: relative;
    left: 0;
    top: 0;
    transform: none;
  }
}

.feature-full-width figure.full-width figcaption {
  width: 100vw;
  text-align: left;
  padding: 10px 0;
  margin-left: calc(-100vw / 2 + 55%);
}

@media (max-width: 1200px) {
  .feature-full-width figure.full-width figcaption {
    width: 95vw;
  }
}

.feature-full-width figure img:not(.cropped) {
  max-width: 1200px;
  width: 200%;
  margin-left: calc(-600px + 50%);
}

@media (max-width: 1200px) {
  .feature-full-width figure img:not(.cropped) {
    width: 100%;
    margin: 0 auto;
  }
}

.feature-full-width figure figcaption {
  text-align: left;
  padding: 10px 0;
  margin-left: calc(-600px + 50%);
}

.feature-full-width figure figcaption.cropped {
  margin-left: auto;
}

.feature-full-width figure figcaption span {
  display: block;
}

@media (max-width: 1200px) {
  .feature-full-width figure figcaption {
    margin: 0;
  }
}

.feature-full-width .cove-wrapper {
  max-width: 1200px;
  width: 200%;
  margin-left: calc(-600px + 50%);
  position: relative;
  margin-top: 35px;
  margin-bottom: 35px;
}

@media (max-width: 1200px) {
  .feature-full-width .cove-wrapper {
    margin: 35px auto;
    width: 100%;
  }
}

.feature-full-width .cove-wrapper .caption {
  padding: 15px 0 0;
}

.feature-full-width .carousel-container {
  width: 200%;
  max-width: 1200px;
  margin-left: calc(-600px + 50%);
  margin-top: 55px;
  margin-bottom: 55px;
}

@media (max-width: 1200px) {
  .feature-full-width .carousel-container {
    margin: 0;
    width: 100%;
  }
}

.feature-full-width .carousel-container figure {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.feature-full-width .carousel-container figure img,
.feature-full-width .carousel-container img {
  max-width: 100%;
  height: auto;
  width: auto;
  display: block;
  margin: 0;
}

.feature-full-width .carousel-container figcaption .caption {
  margin: 0 !important;
  margin-bottom: 30px !important;
}

.feature-full-width .carousel-container figcaption .credit {
  display: block;
  position: relative;
  padding: 0 0 0 30px !important;
}

.feature-full-width .carousel-container figcaption .credit:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 3px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.feature-full-width q {
  margin: 55px auto;
  max-width: 95%;
  display: block;
  color: #174189;
  font-family: "Roboto Slab", sans-serif;
  font-size: 22px;
  line-height: 40px;
  max-width: 575px;
  font-weight: 700;
}

@media (max-width: 500px) {
  .feature-full-width q {
    margin: 25px 0;
  }
}

.feature-full-width q:before, .feature-full-width q:after {
  display: inline;
  content: '"';
  background: none;
  height: auto;
  position: relative;
  left: auto;
  left: unset;
  top: auto;
  top: unset;
  transform: none;
}

.feature-full-width .related-features-block {
  position: relative;
  margin-top: 55px;
  margin-bottom: 55px;
  margin-left: calc(-975px / 2 + 50%);
  max-width: 975px;
  padding-bottom: 25px;
  width: 100vw;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block {
    width: 100%;
    margin-left: 0;
  }
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block {
    margin-top: 35px;
    margin-bottom: 35px;
  }
}

.feature-full-width .related-features-block:after {
  position: absolute;
  width: 100%;
  display: block;
  content: "";
  height: 25px;
  border-top: 3px solid #e6e6e6;
  z-index: -1;
}

.feature-full-width .related-features-block h3.heading {
  background-color: #fff;
  display: inline-block;
  padding-right: 5px;
  font-size: 22px !important;
  line-height: 26px !important;
  margin-bottom: 25px !important;
}

.feature-full-width .related-features-block h3.heading:before {
  position: absolute;
  width: 100%;
  display: block;
  content: "";
  height: 25px;
  border-bottom: 3px solid #e6e6e6;
  top: -8px;
  z-index: -1;
}

.feature-full-width .related-features-block ul.list {
  display: inline-flex;
  justify-content: space-evenly;
  flex-flow: row;
  flex-wrap: wrap;
  position: relative;
  list-style-type: none;
  padding-left: 0;
  width: 100%;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block ul.list {
    display: block;
  }
}

.feature-full-width .related-features-block ul.list li {
  position: relative;
  width: 50%;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

.feature-full-width .related-features-block ul.list li:before, .feature-full-width .related-features-block ul.list li:after {
  display: none;
}

@media (max-width: 975px) {
  .feature-full-width .related-features-block ul.list li {
    width: 100%;
    margin-bottom: 25px;
  }
}

.feature-full-width .related-features-block ul.list li:nth-child(odd) {
  padding-right: 27px;
}

@media (min-width: 975px) {
  .feature-full-width .related-features-block ul.list li:nth-child(even) {
    padding-left: 27px;
  }
}

.feature-full-width .related-features-block ul.list .related-item {
  position: relative;
  display: flex;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item {
    display: block;
  }
}

.feature-full-width .related-features-block ul.list .related-item .image {
  margin-right: 15px;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item .image {
    margin-right: 0;
  }
}

.feature-full-width .related-features-block ul.list .related-item a.thumbnail-image {
  position: relative;
  display: block;
  width: 224px;
  min-height: 126px;
  background-size: contain;
  background-position: center top;
}

@media (max-width: 500px) {
  .feature-full-width .related-features-block ul.list .related-item a.thumbnail-image {
    width: 100%;
    min-height: 0;
    padding-top: 56.65%;
    margin-bottom: 15px;
  }
}

.feature-full-width .related-features-block ul.list .related-item .details .type {
  font-family: "Roboto Slab", sans-serif;
  color: #777777;
  text-transform: uppercase;
  display: block;
  font-weight: 700;
  margin-bottom: 0;
  font-size: 14px;
  line-height: 20px;
}

.feature-full-width .related-features-block ul.list .related-item .details .title-link {
  font-size: 18px;
  line-height: 22px;
}

.feature-full-width .related-features-block ul.list .related-item .details .text p,
.feature-full-width .related-features-block ul.list .related-item .details .text i,
.feature-full-width .related-features-block ul.list .related-item .details .text b {
  font-family: "Muli", sans-serif;
  font-size: 16px;
  line-height: 22px;
  font-weight: 400;
  margin-bottom: 0;
}

.about-collection {
  width: 100%;
  max-width: 725px;
  margin-left: auto;
  margin-top: 30px;
  margin-right: auto;
  background-color: #e9e9e9;
  padding: 30px 35px;
}

.about-collection:first-child {
  margin-top: 80px;
}

.about-collection .heading {
  display: block;
  font-size: 24px;
  line-height: 28px;
  padding-bottom: 20px;
  color: #777;
}

.about-collection .heading a {
  color: #bb0b0e;
}

.about-collection .heading a:hover {
  color: #8c0007;
  text-decoration: none;
}

.about-collection .about-details {
  display: flex;
  justify-content: space-between;
}

@media (max-width: 768px) {
  .about-collection .about-details {
    display: block;
  }
}

.about-collection .about-details .image {
  width: 40%;
}

@media (max-width: 768px) {
  .about-collection .about-details .image {
    width: 100%;
  }
}

.about-collection .about-details .image img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 224px;
}

@media (max-width: 768px) {
  .about-collection .about-details .image img {
    margin: 0 auto 30px;
  }
}

.about-collection .about-details .description {
  width: 60%;
}

@media (max-width: 768px) {
  .about-collection .about-details .description {
    width: 100%;
  }
}

.full-width-image {
  position: relative;
  width: 100%;
  max-width: 100vw;
  max-height: 785px;
  height: auto;
  z-index: -1;
}

.full-width-image .mp4-wrapper {
  position: relative;
  margin-bottom: 30px;
  max-height: 785px;
}

.full-width-image .mp4-wrapper .hero {
  width: 100%;
  position: relative;
  max-height: 785px;
}

.full-width-image .mp4-wrapper .hero video {
  object-fit: cover;
  width: 100%;
  height: auto;
  margin: 0 auto;
  display: block;
  max-height: 785px;
  max-width: 1366px;
}

.full-width-image .mp4-wrapper .hero button.play-pause {
  width: 34px;
  height: 34px;
  background: transparent url(../images/button_video_play.png) no-repeat 0 0;
  background-size: 34px 68px;
  position: absolute;
  top: 10px;
  right: 10px;
  display: block;
  outline: none;
  border: none;
  opacity: 0.35;
}

.full-width-image .mp4-wrapper .hero button.play-pause.paused {
  background-position: 0 -34px;
}

.full-width-image .mp4-wrapper .caption-wrapper {
  padding: 15px 0;
  max-width: 1366px;
  margin: 0 auto;
}

@media (max-width: 1200px) {
  .full-width-image .mp4-wrapper .caption-wrapper {
    padding: 15px 10px;
  }
}

.full-width-image figure {
  width: auto;
  max-width: 100%;
  display: block;
}

.full-width-image figure.center .media-container {
  background-position: center center;
}

.full-width-image figure.left .media-container {
  background-position: left center;
}

.full-width-image figure.right .media-container {
  background-position: right center;
}

.full-width-image figure .media-container {
  overflow: hidden;
  position: relative;
  height: 785px;
  display: block;
  width: 100%;
  background-size: cover;
}

@media (max-width: 1200px) {
  .full-width-image figure .media-container {
    height: 510px;
  }
}

@media (max-width: 1024px) {
  .full-width-image figure .media-container {
    height: auto;
  }
  .full-width-image figure .media-container img {
    position: relative;
    left: 0;
    top: 0;
    transform: none;
  }
}

.full-width-image figure img {
  display: block;
  width: 100%;
  max-width: 100vw;
  position: absolute;
  height: auto;
  margin: 0 auto;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.full-width-image figure figcaption {
  bottom: 0;
  display: block;
  text-align: left;
  max-width: 15%;
  margin: 20px 0 0 2%;
}

@media (max-width: 1200px) {
  .full-width-image figure figcaption {
    max-width: 95%;
    margin: 20px auto;
  }
}

.full-width-image figure figcaption span.desc {
  display: block;
  position: relative;
  padding: 5px 0 0 30px !important;
}

.full-width-image figure figcaption span.desc:before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  position: absolute;
  left: 0;
  top: 9px;
  background: url(../images/icon-camera.svg) no-repeat left top;
  background-size: contain;
}

.js .feature-full-width .overline.flat:before {
  display: none;
}

.js .feature-full-width .overline .social-sharing {
  display: block;
}

@media (min-width: 40.625em) {
  .js .feature-full-width .overline .social-sharing {
    display: inline-block;
  }
}

.js .feature-full-width .overline .copy-url-container {
  position: absolute;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  top: -6em;
  width: 15em;
  left: -10em;
  opacity: 0;
  z-index: -1;
}

.js .feature-full-width .overline .copy-url-container.open {
  opacity: 1;
  z-index: 1;
}

.js .feature-full-width .overline .copy-url-container button {
  position: absolute;
  right: 1em;
  top: 0.65em;
  width: 1.5em;
  height: 1.5em;
  padding: 0;
}

.js .feature-full-width .overline .copy-url-container button svg {
  width: 1.24em;
  height: 1.24em;
  fill: white;
}

@media (min-width: 68.75em) {
  .js .feature-full-width .overline .copy-url-container {
    width: 24em;
  }
  .js .feature-full-width .overline .copy-url-container textarea {
    width: calc(100% - 7em);
  }
}

.js .feature-full-width .ad-block.open {
  background-color: transparent;
  position: relative;
  border-top: 1px solid #bebebe;
  border-bottom: 1px solid #bebebe;
  margin: 75px 0;
}

@media (max-width: 500px) {
  .js .feature-full-width .ad-block.open {
    margin: 25px 0;
  }
}

.js .feature-full-width .ad-block.open:before, .js .feature-full-width .ad-block.open:after {
  background: transparent !important;
}

.js .feature-full-width .ad-block .ad {
  display: block;
  margin: 0 auto;
}

.search-results ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.search-results ul li {
  list-style: none;
}

.search-results ul dd {
  margin: 0;
}

.search-results ul li {
  margin-bottom: 3em;
}

.search-results ul li:after {
  display: table;
  clear: both;
  content: '';
}

.search-results ul li:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 81.25em) {
  .search-results ul li {
    margin-bottom: 1.5em;
  }
}

@media (min-width: 40.625em) {
  .search-results .image {
    width: 34.21053%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .search-results .image {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .image {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.search-results .description h3 {
  margin-bottom: 0;
}

.search-results .description p {
  margin-bottom: 0.75em;
}

@media (min-width: 40.625em) {
  .search-results .description {
    width: 60.52632%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .search-results .description {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .search-results .description {
    width: 53.38983%;
    float: left;
    margin-right: 1.69492%;
  }
  .search-results .description p {
    margin-bottom: 1.5em;
  }
}

.newsletter-dialog {
  display: none;
}

.js .newsletter-dialog {
  display: block;
}

.newsletter-dialog.general {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.general:after {
  content: "";
  display: block;
  width: 100%;
  height: 100vh;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
  position: relative;
  z-index: 50;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general:after {
    margin-top: 12.5em;
  }
}

.newsletter-dialog.general.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.general[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.general div[role="dialog"] {
  overflow-y: scroll;
  max-height: 80vh;
}

@media screen and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.general div[role="document"] {
  max-width: 50em;
  margin: 1em auto 0 auto;
  width: 95%;
  position: relative;
}

@media screen and (min-width: 68.75em) and (min-height: 37.5em) {
  .newsletter-dialog.general div[role="document"] {
    margin-top: 0;
    top: 12.5vh;
  }
}

.newsletter-dialog.general .gamma {
  color: white;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .gamma {
    font-size: 2.25em;
  }
}

.newsletter-dialog.general .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  right: 0;
  top: -2.5em;
  display: inline-block;
  border-radius: 100%;
}

.newsletter-dialog.general .dimsiss:hover, .newsletter-dialog.general .dimsiss:focus, .newsletter-dialog.general .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.general .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: white;
  display: block;
}

.newsletter-dialog.general .dimsiss:hover svg {
  fill: #f3ad00;
}

.newsletter-dialog.general h1 {
  margin: 1.5em 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 {
    margin-top: 2em;
  }
}

.newsletter-dialog.general h1 .logo-type {
  max-width: 13em;
  max-height: 0.95em;
}

.newsletter-dialog.general h1 span {
  font-size: 0.75em;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general h1 span {
    font-size: 1.2em;
  }
}

.newsletter-dialog.general .email-signup-form {
  margin-top: 1.5em;
  padding-bottom: 1.5em;
}

.newsletter-dialog.general .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:before {
  content: none;
}

.newsletter-dialog.general .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.general .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.general .email-signup-form .note {
  display: block;
  font-size: 1em;
  text-align: center;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .note {
    font-size: 1.25em;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.general .email-signup-form .email-field,
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.general .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.general .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

.newsletter-dialog.vote {
  background-color: rgba(0, 0, 0, 0.85);
  color: white;
  position: fixed;
  height: 100vh;
  width: 100%;
  z-index: 10002;
  top: 0;
  left: 0;
  text-align: center;
}

.newsletter-dialog.vote.dismissed {
  -webkit-animation-duration: 0.35s;
  animation-duration: 0.35s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  animation-name: slideOutDown;
}

.newsletter-dialog.vote[aria-hidden="true"] {
  display: none;
}

.newsletter-dialog.vote div[role="dialog"] {
  overflow-y: scroll;
  max-height: 90vh;
  margin-top: 4.5vh;
}

@media screen and (min-height: 750vh) {
  .newsletter-dialog.vote div[role="dialog"] {
    max-height: inherit;
    overflow: visible;
  }
}

.newsletter-dialog.vote div[role="document"] {
  max-width: 600px;
  margin: 6vh auto 0;
  width: 95%;
  position: relative;
  border: 10px solid #fcc320;
  background-color: #3c225e;
}

@media screen and (min-width: 68.75em) and (min-height: 750px) {
  .newsletter-dialog.vote div[role="document"] {
    margin-top: 0;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

.newsletter-dialog.vote .gamma {
  color: #ebe3d7;
  font-weight: 400;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .gamma {
    font-size: 20px;
  }
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .gamma {
    font-size: 30px;
  }
}

.newsletter-dialog.vote .dimsiss {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  display: inline-block;
  border-radius: 100%;
  right: -0.5em;
  top: -3em;
}

.newsletter-dialog.vote .dimsiss:hover, .newsletter-dialog.vote .dimsiss:focus, .newsletter-dialog.vote .dimsiss:active {
  box-shadow: none;
  border: none;
}

.newsletter-dialog.vote .dimsiss svg {
  -webkit-transition: fill 0.5s ease-in-out;
  -ms-transition: fill 0.5s ease-in-out;
  transition: fill 0.5s ease-in-out;
  width: 2em;
  height: 2em;
  fill: #fcc320;
  display: block;
}

@media (min-width: 675px) {
  .newsletter-dialog.vote .dimsiss {
    right: -2.5em;
    top: -2.5em;
  }
}

.newsletter-dialog.vote #newsletter-dialog-title {
  margin: 0 0 0.5em 0;
  text-transform: uppercase;
  line-height: 1;
  font-size: 25px;
  color: #ebe3d7;
}

.newsletter-dialog.vote #newsletter-dialog-title .logo-type {
  max-width: 8em;
  max-height: 0.92em;
}

.newsletter-dialog.vote span.under {
  display: block;
  margin: 5px auto;
  font-size: 24px;
  font-family: "Muli", sans-serif;
  color: #fcc320;
  font-weight: 500;
  text-transform: uppercase;
}

.newsletter-dialog.vote .vote-image {
  position: relative;
  max-width: 600px;
  width: 100%;
  margin: 0;
  padding: 0;
  height: auto;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .vote-image {
    background: url(../images/vote_image_header.jpg) no-repeat center center;
    background-size: cover;
    height: 150px;
  }
  .newsletter-dialog.vote .vote-image img {
    display: none;
  }
}

.newsletter-dialog.vote .title-wrapper {
  background-color: #3c225e;
  position: relative;
  display: block;
  padding: 10px;
  margin: -87px auto 0;
  height: 87px;
  width: 100%;
}

@media (min-width: 650px) {
  .newsletter-dialog.vote .title-wrapper {
    width: 70%;
  }
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper {
    margin-top: 0;
  }
}

.newsletter-dialog.vote .title-wrapper .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto 15px;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .newsletter-dialog.vote .title-wrapper .vote-headline {
    max-width: 80%;
  }
}

.newsletter-dialog.vote .email-signup-form {
  padding: 20px 40px;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"] {
  padding-right: 1.5em;
  background: #f3ad00;
  color: #243757;
  margin-top: 1.5em;
  display: block;
  width: 100%;
  cursor: pointer;
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:hover {
  background: #da9b00;
}

@media (min-width: 68.75em) {
  .newsletter-dialog.vote .email-signup-form button[type="submit"] {
    display: inline-block;
    width: inherit;
  }
  .newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
    content: "";
  }
}

.newsletter-dialog.vote .email-signup-form button[type="submit"]:before {
  box-shadow: none !important;
}

.newsletter-dialog.vote .email-signup-form .note {
  display: block;
  font-size: 20px;
  color: #ebe3d7;
  text-align: center;
}

@media (max-width: 650px) {
  .newsletter-dialog.vote .email-signup-form .note {
    font-size: 14px;
  }
}

@media (min-width: 40.625em) {
  .newsletter-dialog.vote .email-signup-form .email-field,
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    float: left;
  }
  .newsletter-dialog.vote .email-signup-form .email-field {
    width: 55%;
  }
  .newsletter-dialog.vote .email-signup-form .zip-code-field {
    width: 44%;
    margin-left: 1%;
  }
}

#sticky-header {
  width: 100%;
  -webkit-transform: translate3d(0px, 0px, 0px);
  transform: translate3d(0px, 0px, 0px);
}

.sticky #sticky-header {
  top: 0;
  position: fixed;
  -webkit-animation-duration: 0.5s;
  animation-duration: 0.5s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: slideInDown;
  animation-name: slideInDown;
}

.site-header ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
}

.site-header ul li {
  list-style: none;
}

.site-header ul dd {
  margin: 0;
}

.site-header .secondary {
  background: #333;
  text-align: center;
  color: white;
}

.site-header .secondary:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary * {
  vertical-align: middle;
}

.site-header .secondary .title {
  display: block;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-social {
  display: none;
}

.site-header .secondary .header-social .social-list {
  width: 70%;
  margin: 0 auto;
}

.site-header .secondary .header-social .social-list a {
  display: block;
}

.site-header .secondary .header-social .social-list a:hover svg .background {
  fill: black;
}

.site-header .secondary .header-social:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-social:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-social {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    display: block;
    margin-top: .75em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-social {
    width: 40.67797%;
    float: left;
    margin-right: 1.69492%;
    margin-top: 0;
    text-align: left;
  }
  .site-header .secondary .header-social .title {
    display: inline-block;
    margin-bottom: 0;
    font-size: .8125em;
  }
  .site-header .secondary .header-social .social-list {
    width: auto;
    display: inline-block;
  }
}

.site-header .secondary .header-sponsors {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.site-header .secondary .header-sponsors ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  line-height: 1;
}

.site-header .secondary .header-sponsors ul:after {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors ul:before {
  display: table;
  clear: both;
  content: '';
}

.site-header .secondary .header-sponsors li {
  display: inline-block;
  margin: .25em .5em;
}

.site-header .secondary .header-sponsors a {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.site-header .secondary .header-sponsors .title {
  margin-bottom: .25em;
}

.site-header .secondary .header-sponsors img {
  max-height: 3.125em;
  max-width: 7.375em;
}

@media (min-width: 40.625em) {
  .site-header .secondary .header-sponsors {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .header-sponsors {
    width: 57.62712%;
    float: right;
    margin-right: 0;
    margin-top: 0;
    margin-bottom: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .site-header .secondary .header-sponsors .title {
    display: inline-block;
    font-size: .8125em;
    vertical-align: middle;
    margin-bottom: 0;
  }
  .site-header .secondary .header-sponsors .sponsor {
    display: inline-block;
  }
}

@media (min-width: 81.25em) {
  .site-header .secondary .header-sponsors img {
    max-height: 3.125em;
    max-width: 8.375em;
  }
}

@media (min-width: 68.75em) {
  .site-header .secondary .grid {
    margin-top: .5em;
    margin-bottom: .5em;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
  }
}

.site-header .primary {
  background: #174189;
  position: relative;
  z-index: 10;
}

.site-header .primary .grid {
  position: relative;
}

.site-header .primary .header-logo {
  position: relative;
  margin: 0;
  line-height: 0;
  width: 72.22222%;
  float: left;
  margin-right: 11.11111%;
}

.site-header .primary .header-logo a {
  display: block;
  padding: .45em;
}

.site-header .primary .header-logo a svg {
  max-height: .5em;
}

.site-header .primary .header-logo a svg .type {
  fill: white;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo a svg {
    max-height: .75em;
  }
}

.site-header .primary .header-logo .logo-type {
  display: inline-block;
  max-width: 100%;
}

@media (min-width: 40.625em) {
  .site-header .primary .header-logo {
    width: 73.68421%;
    float: left;
    margin-right: 5.26316%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-logo {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
    padding-top: .2em;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-logo {
    padding-top: 0;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
  .site-header .primary .header-logo a {
    padding: .55em .45em .45em .45em;
  }
  .site-header .primary .header-logo a svg {
    max-height: 1em;
  }
}

.site-header .primary .main-nav-toggle {
  border: none;
  background: none;
  box-shadow: none;
  display: none;
  position: absolute;
  top: 0;
  right: 5%;
  width: 2.75em;
  height: 2.75em;
  overflow: hidden;
  padding: .5em;
  text-align: center;
}

.site-header .primary .main-nav-toggle:hover, .site-header .primary .main-nav-toggle:focus, .site-header .primary .main-nav-toggle:active {
  box-shadow: none;
  border: none;
}

.site-header .primary .main-nav-toggle svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  display: inline-block;
  width: 1.5em;
}

.site-header .primary .main-nav-toggle .one, .site-header .primary .main-nav-toggle .two, .site-header .primary .main-nav-toggle .three {
  -webkit-transition: all .35s linear;
  transition: all .35s linear;
  -webkit-transform: rotate(0deg) scale(1);
  transform: rotate(0deg) scale(1);
  -webkit-transform-origin: 0 50%;
  transform-origin: 0 50%;
  fill: white;
}

.site-header .primary .main-nav-toggle.close-state .one {
  -webkit-transform: rotateZ(-45deg) scale(0.95);
  transform: rotateZ(-45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

.site-header .primary .main-nav-toggle.close-state .two {
  -webkit-transform: translateY(-25em);
  transform: translateY(-25em);
}

.site-header .primary .main-nav-toggle.close-state .three {
  -webkit-transform: rotateZ(45deg) scale(0.95);
  transform: rotateZ(45deg) scale(0.95);
  -webkit-transform-origin: 11.5em 5em;
  transform-origin: 11.5em 5em;
}

@media (min-width: 40.625em) {
  .site-header .primary .main-nav-toggle {
    width: 3.3em;
    height: 3.3em;
  }
}

.site-header .primary .dropdown-menu {
  clear: both;
}

@media (min-width: 68.75em) {
  .site-header .primary .dropdown-menu {
    width: 74.35897%;
    float: right;
    margin-right: 0;
    clear: none;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .dropdown-menu {
    width: 66.10169%;
    float: right;
    margin-right: 0;
  }
}

.site-header .primary .header-main-navigation {
  font-size: 1.125em;
  font-family: 'Josefin Sans', sans-serif;
  text-transform: uppercase;
  margin-bottom: 1.5em;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation {
    width: 61.2069%;
    float: left;
    margin-right: 3.44828%;
    clear: none;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .header-main-navigation {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.site-header .primary .header-main-navigation ul li {
  border-bottom: 1px solid #777777;
}

.site-header .primary .header-main-navigation ul li a {
  text-decoration: none;
  display: block;
  padding: 1.1em 1em .9em 1em;
  color: white;
  position: relative;
}

.site-header .primary .header-main-navigation ul li a:hover {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:active {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:visited {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:focus {
  text-decoration: none;
}

.site-header .primary .header-main-navigation ul li a:after {
  -webkit-transition: background 0.5s ease-in-out;
  -ms-transition: background 0.5s ease-in-out;
  transition: background 0.5s ease-in-out;
  width: 100%;
  height: .3333em;
  content: '';
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
}

.site-header .primary .header-main-navigation ul li a:hover:after, .site-header .primary .header-main-navigation ul li a.active:after {
  background: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .primary .header-main-navigation ul li {
    text-align: center;
    display: inline-block;
    border-bottom: none;
    flex-grow: 1;
  }
}

.site-header .primary .search {
  position: relative;
  font-size: 1.125em;
  margin-bottom: 1.5em;
}

.site-header .primary .search .search-input {
  display: inline-block;
  height: 2.25em;
  padding: 0 0 0 1em;
  width: 100%;
  border: 1px solid #777777;
  padding-right: 2.5em;
}

.site-header .primary .search .search-button {
  border: none;
  background: none;
  box-shadow: none;
  position: absolute;
  top: .15em;
  right: .45em;
  display: inline-block;
  height: 2em;
  width: 2em;
  padding: .15em;
  background: white;
}

.site-header .primary .search .search-button:hover, .site-header .primary .search .search-button:focus, .site-header .primary .search .search-button:active {
  box-shadow: none;
  border: none;
}

@media (min-width: 68.75em) {
  .site-header .primary .search {
    width: 22.41379%;
    float: left;
    margin-right: 3.44828%;
    margin-top: .7em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .primary .search {
    width: 23.07692%;
    float: left;
    margin-right: 2.5641%;
  }
}

.site-header .shop {
  margin-bottom: 1.5em;
  display: block;
  padding: .5em .5em .5em 1em;
  border-bottom: 1px solid #777777;
}

.site-header .shop svg {
  height: 2.5em;
  width: 2.5em;
  fill: white;
}

.site-header .shop svg path {
  -webkit-transition: fill 0.25s ease-in-out;
  -ms-transition: fill 0.25s ease-in-out;
  transition: fill 0.25s ease-in-out;
}

.site-header .shop:hover svg path {
  fill: #f3ad00;
}

@media (min-width: 68.75em) {
  .site-header .shop {
    width: 9.48276%;
    float: right;
    margin-right: 0;
    border: none;
    padding: 0;
    display: inline-block;
    text-align: center;
    margin-top: .75em;
    margin-bottom: 0;
  }
}

@media (min-width: 81.25em) {
  .site-header .shop {
    width: 10.25641%;
    float: right;
    margin-right: 0;
  }
}

.js .site-header .primary .main-nav-toggle {
  display: inline-block;
}

@media (min-width: 68.75em) {
  .js .site-header .primary .main-nav-toggle {
    display: none;
  }
}

.js .js-dropdown-menu {
  visibility: hidden;
  overflow: hidden;
  max-height: 0;
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
}

@media (min-width: 68.75em) {
  .js .js-dropdown-menu {
    visibility: visible;
    max-height: inherit;
  }
}

.js .js-dropdown-menu.open {
  visibility: visible;
  max-height: 35em;
}

.js .header-main-navigation.open + .header-search.open {
  margin-top: 1.5em;
}

.cms-ready .primary.fixed {
  position: relative;
}

.site-footer ul {
  margin-right: 0;
  margin-top: 0;
  margin-left: 0;
  margin-bottom: 0;
  padding: 0;
  margin-bottom: 1.5em;
}

.site-footer ul li {
  list-style: none;
}

.site-footer ul dd {
  margin: 0;
}

.site-footer .credit-heading {
  font-size: 1em;
  color: #ffffff;
}

.footer-links {
  padding: 0 0 0.75em 0;
  background: url("../images/bg-triangle-footer.png");
  background-size: 11.75em 11.125em;
  color: #4872b4;
}

.footer-links:before {
  display: block;
  content: "";
  background-image: url("../images/bg-american-flag.jpg");
  background-repeat: no-repeat;
  background-position: center;
  padding-bottom: 6.5%;
  background-size: cover;
  margin-bottom: 4.5em;
}

.footer-links a {
  display: inline-block;
  color: white;
  text-transform: uppercase;
}

.footer-links a:hover {
  color: white;
}

.footer-links ul li {
  margin-bottom: 0.75em;
}

@media (min-width: 81.25em) {
  .footer-links ul li {
    margin-bottom: 1.5em;
  }
}

@media screen and (max-width: 95.625em) and (orientation: portrait) {
  .footer-links:before {
    padding-bottom: 15%;
  }
}

@media (min-width: 40.625em) {
  .footer-navigation {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    min-height: 15em;
  }
  .footer-navigation ul {
    -moz-column-count: 2;
    -webkit-column-count: 2;
    column-count: 2;
  }
  .footer-navigation ul:after {
    display: table;
    clear: both;
    content: '';
  }
  .footer-navigation ul:before {
    display: table;
    clear: both;
    content: '';
  }
}

@media (min-width: 68.75em) {
  .footer-navigation {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-navigation {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .footer-navigation ul {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
  }
}

.footer-production-by {
  margin-bottom: 1.5em;
}

.footer-production-by .wgbh {
  fill: white;
  width: 6em;
  max-height: 3em;
}

.footer-production-by ul {
  margin-top: 1.5em;
}

@media (min-width: 40.625em) {
  .footer-production-by {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-production-by {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-production-by {
    width: 19.49153%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-funding {
  color: white;
}

.footer-funding ul li {
  margin-bottom: 1.5em;
}

.footer-funding svg {
  width: 12em;
  max-height: 12em;
}

.footer-funding svg * {
  fill: white;
}

@media (min-width: 40.625em) {
  .footer-funding {
    width: 47.36842%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-funding {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-funding {
    width: 19.49153%;
    float: right;
    margin-right: 0;
  }
}

.footer-copyright {
  display: inline-block;
  color: #ffffff;
  margin-bottom: 1.5em;
}

.footer-copyright span {
  display: block;
}

@media (min-width: 40.625em) {
  .footer-copyright {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    clear: both;
    padding-top: 2.75vw;
    margin-bottom: 0;
  }
}

@media (min-width: 68.75em) {
  .footer-copyright {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .footer-copyright {
    padding-top: 2.925vw;
    width: 32.20339%;
    float: left;
    margin-right: 1.69492%;
  }
}

.footer-logo-type {
  display: block;
  font-size: 4vw;
  line-height: 1.275;
}

.footer-logo-type svg {
  fill: #243757;
  max-height: 3.875em;
}

@media (min-width: 40.625em) {
  .footer-logo-type {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    text-align: center;
  }
}

@media (min-width: 68.75em) {
  .footer-logo-type {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .footer-logo-type {
    width: 66.10169%;
    float: right;
    margin-right: 0;
    font-size: 3.5vw;
  }
}

.connect-social {
  background-image: url("../images/bg-triangle-newsletter.png");
  background-size: 11.75em 11.125em;
  color: white;
  margin-bottom: 4.5em;
  overflow-x: hidden;
}

.connect-social h3 {
  color: white;
}

.connect-social .email-signup {
  text-align: center;
  padding: 1.5em 0;
  overflow: hidden;
}

.connect-social .email-signup h3 {
  margin-bottom: 0.769em;
}

.connect-social .email-signup .email-signup-form .note {
  -webkit-box-ordinal-group: 2;
  -ms-flex-order: 1;
  order: 1;
}

.connect-social .email-signup.vote .headline {
  padding: 0 10% 0 0;
  width: 100%;
}

.connect-social .email-signup.vote .headline .vote-headline {
  background: url(../images/title_the-vote.png) no-repeat center center;
  background-size: contain;
  max-width: 300px;
  width: 100%;
  height: 57px;
  display: block;
  margin: 0 auto;
  text-indent: -99999px;
}

@media (max-width: 500px) {
  .connect-social .email-signup.vote .headline .vote-headline {
    max-width: 80%;
    margin: 0;
  }
}

.connect-social .email-signup .headline {
  width: 100%;
  padding: 0 10%;
}

@media (min-width: 40.625em) {
  .connect-social .email-signup {
    width: 47.36842%;
    float: left;
    margin-right: 5.26316%;
    position: relative;
  }
  .connect-social .email-signup .email-signup-form {
    width: 80%;
    margin: 0 auto;
  }
}

@media (min-width: 68.75em) {
  .connect-social .email-signup {
    width: 48.71795%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .email-signup {
    width: 57.62712%;
    float: left;
    margin-right: 1.69492%;
  }
  .connect-social .email-signup.vote h3 {
    text-align: center;
    margin-bottom: 15px;
  }
  .connect-social .email-signup h3 {
    text-align: left;
    margin-bottom: 15px;
  }
  .connect-social .email-signup .email-signup-form {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 100%;
    padding-right: 10%;
  }
  .connect-social .email-signup .email-signup-form .email-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    margin-right: 1%;
    margin-left: 0;
    width: 45%;
  }
  .connect-social .email-signup .email-signup-form .zip-code-field {
    float: left;
    display: inline-block;
    margin-bottom: 0;
    width: 30%;
  }
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 24%;
    display: inline-block;
  }
  .connect-social .email-signup .email-signup-form .note {
    width: 75%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .email-signup .email-signup-form button[type="submit"] {
    width: 19%;
  }
}

.connect-social .footer-social-links {
  text-align: center;
  padding: 3em 0;
  background: #243757;
  width: 110%;
  margin-left: -5%;
}

.connect-social .footer-social-links .social-list {
  margin-bottom: 0;
  width: 70%;
  margin: 0 auto;
}

.connect-social .footer-social-links .social-list a {
  width: 3em;
  height: 3em;
}

.connect-social .footer-social-links .social-list a:hover svg .background {
  fill: #835d00;
}

.connect-social .footer-social-links .social-list svg {
  width: 100%;
  height: 100%;
}

.connect-social .footer-social-links .social-list svg .background {
  fill: #f3ad00;
}

.connect-social .footer-social-links .hashtag {
  display: block;
}

@media (min-width: 40.625em) {
  .connect-social .footer-social-links {
    width: 47.36842%;
    float: right;
    margin-right: 0;
    position: relative;
    padding-left: 5.625%;
    margin-left: inherit;
  }
  .connect-social .footer-social-links:before {
    content: "";
    position: absolute;
    background: white;
    height: 100%;
    top: 0;
    right: 100%;
    width: calc(5.26316% * 2);
  }
  .connect-social .footer-social-links:after {
    content: "";
    position: absolute;
    height: 100%;
    width: 11.25%;
    background: #243757;
    top: 0;
    left: 100%;
  }
  .connect-social .footer-social-links .social-list {
    width: 90%;
  }
}

@media (min-width: 68.75em) {
  .connect-social .footer-social-links {
    width: 48.71795%;
    float: right;
    margin-right: 0;
  }
  .connect-social .footer-social-links .social-list {
    display: inline-block;
    width: auto;
  }
  .connect-social .footer-social-links:before {
    width: 5.26316%;
  }
}

@media (min-width: 81.25em) {
  .connect-social .footer-social-links {
    width: 40.67797%;
    float: right;
    margin-right: 0;
    padding-left: 0;
  }
  .connect-social .footer-social-links:after {
    width: 50%;
  }
  .connect-social .footer-social-links:before {
    width: 4%;
    right: 100%;
  }
}

@media (min-width: 95.625em) {
  .connect-social .footer-social-links:after {
    width: calc((100vw - 1400px) / 2);
  }
}

@media (min-width: 40.625em) {
  .connect-social .grid {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
}

.ad-block {
  max-height: 0;
  padding: 0;
  visibility: hidden;
  line-height: 0;
}

.js .ad-block {
  -webkit-transition: all 0.35s ease-in-out;
  -ms-transition: all 0.35s ease-in-out;
  transition: all 0.35s ease-in-out;
  position: relative;
  text-align: center;
}

.js .ad-block.open.ad-side-interior:before, .js .ad-block.open.ad-side-interior:after {
  background: none;
}

.js .ad-block.open {
  padding: 1.5em 0 3em;
  max-height: 25em;
  visibility: visible;
  z-index: inherit;
  line-height: inherit;
}

.js .ad-block.open .ad {
  display: inline-block;
}

.js .ad-block.open:before, .js .ad-block.open:after {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.js .ad-block.open:before {
  background: url("../images/bg-deco-circle.png");
  background-size: 18em 18em;
  z-index: -2;
}

.js .ad-block.open:after {
  z-index: -1;
  background: rgba(227, 227, 227, 0.5);
}

.js .ad-block.open.footer-ad {
  padding-top: 2.25em;
  padding-bottom: 2.625em;
  margin-bottom: 4.5em;
}

.js .ad-block .ad {
  margin: 0 auto;
  position: relative;
  display: inline-block;
  display: none;
}

.js .ad-block .ad:after {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad:before {
  display: table;
  clear: both;
  content: '';
}

.js .ad-block .ad div {
  clear: both;
}

.js .ad-block .ad span, .js .ad-block .ad a {
  font-size: .75em;
  float: left;
}

.js .ad-block .ad a {
  float: right;
  color: #174189;
}

.js .ad-block .ad button {
  border: none;
  background: none;
  box-shadow: none;
  background: #777777;
  width: 1.5em;
  height: 1.5em;
  position: absolute;
  top: 1.25em;
  right: 0;
}

.js .ad-block .ad button:hover, .js .ad-block .ad button:focus, .js .ad-block .ad button:active {
  box-shadow: none;
  border: none;
}

.js .ad-block .ad button svg {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  width: 75%;
  height: 75%;
}

@media (min-width: 68.75em) {
  .js .ad-block .ad button {
    width: 2em;
    height: 2em;
  }
}

.shop-ad {
  background: white;
  text-align: center;
  padding-top: 4.5em;
  padding-bottom: 4.5em;
}

.shop-ad a {
  display: inline-block;
  position: relative;
}

.shop-ad a.mobile {
  background-image: url("../images/amex_shop_mobile.png");
  background-repeat: no-repeat;
  width: 20em;
  height: 6.25em;
}

.shop-ad a.desktop {
  background-image: url("../images/amex_shop_desktop.png");
  background-repeat: no-repeat;
  width: 75em;
  height: 9.375em;
}

.connect-social + .shop-ad {
  padding-top: 0;
}

@media (min-width: 68.75em) {
  .ad-interior-content {
    width: 61.53846%;
    float: left;
    margin-right: 2.5641%;
  }
}

@media (min-width: 81.25em) {
  .ad-interior-content {
    width: 66.10169%;
    float: left;
    margin-right: 1.69492%;
  }
}

@media (min-width: 68.75em) {
  .ad-side-interior {
    margin-top: 1.5em;
    width: 35.89744%;
    float: right;
    margin-right: 0;
  }
}

@media (min-width: 81.25em) {
  .ad-side-interior {
    width: 32.20339%;
    float: right;
    margin-right: 0;
  }
}

:-webkit-full-screen-ancestor:not(iframe) .pbs-cleanslate, :-webkit-full-screen-ancestor:not(iframe) .site-header, :-webkit-full-screen-ancestor:not(iframe) .ad-block, :-webkit-full-screen-ancestor:not(iframe) .cms, :-webkit-full-screen-ancestor:not(iframe) .teaser-item, :-webkit-full-screen-ancestor:not(iframe) .site-footer,
:-webkit-full-screen-ancestor:not(iframe) .film-sub-nav, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonPrevious, :-webkit-full-screen-ancestor:not(iframe) .Wallop-buttonNext, :-webkit-full-screen-ancestor:not(iframe) .accordion-toggle, :-webkit-full-screen-ancestor:not(iframe) .tab-panel, :-webkit-full-screen-ancestor:not(iframe) .full-screen {
  display: none !important;
}

body {
  overflow-x: hidden;
}

body.fixed {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
}

iframe {
  background: #999999;
}

img {
  max-width: 100%;
}

a {
  -webkit-transition: color 0.3s ease-in-out;
  -ms-transition: color 0.3s ease-in-out;
  transition: color 0.3s ease-in-out;
  color: #bb0b0e;
  text-decoration: none;
  font-weight: 700;
}

a:hover {
  color: #8c0007;
  text-decoration: underline;
}

.call-to-action {
  -webkit-transition: all 0.5s ease-in-out;
  -ms-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out;
  background: #bb0b0e;
  color: white;
  border-radius: .4375em;
  font-weight: 700;
  text-transform: uppercase;
  font-size: 1.125em;
  padding: 1em 3.5em;
  position: relative;
  top: 0;
}

.call-to-action:hover {
  color: white;
  background: #a30a0c;
  text-decoration: none;
}

.call-to-action:active {
  top: .2777777778em;
}

figure {
  margin: 0;
}

figcaption, .caption {
  font-size: .85em;
  color: #999999;
  font-style: italic;
}

figcaption p, .caption p {
  margin: 0;
}

.caption h4, .caption .delta {
  margin: .25em 0;
  font-style: normal;
}

q {
  display: block;
  color: #999999;
  font-size: 1.15em;
  margin: 1.5em 5%;
  position: relative;
}

q:before {
  content: '';
  position: absolute;
  height: 110%;
  width: .5em;
  background: #999999;
  left: -1.5em;
  position: absolute;
  top: 50%;
  -ms-transform: translate(0, -50%);
  -webkit-transform: translate(0, -50%);
  transform: translate(0, -50%);
}

@media (min-width: 68.75em) {
  q {
    margin-left: 10%;
    margin-right: 10%;
  }
}

cite {
  display: block;
  font-size: 1.25em;
  margin: 1.5em 5%;
  color: #999999;
}

@media (min-width: 68.75em) {
  cite {
    margin-left: 10%;
    margin-right: 10%;
    position: relative;
  }
  cite:before {
    content: '';
    position: absolute;
    display: inline-block;
    top: 0;
    left: -3.5em;
    background: url("../images/quote.svg") no-repeat;
    background-size: 2.5em;
    width: 2.5em;
    height: 2.5em;
  }
}

.jump-link:before {
  display: block;
  content: "";
  height: 6em;
  margin: -6em 0 0;
}

.jump-link.site-footer:before {
  height: 9em;
  margin: -9em 0 0;
}

.cove-wrapper {
  margin-bottom: 1.5em;
}

.cove-container:before {
  position: absolute;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  z-index: 3;
  color: white;
  content: 'Video Requires Javascript';
}

.js .cove-container:before {
  content: none;
}

.cove-container {
  position: relative;
  height: 0;
  padding-bottom: 56.25%;
  background: transparent;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.cove-container iframe {
  background: transparent;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

.grid {
  max-width: 87.5em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 5%;
}

.grid:after {
  content: " ";
  display: block;
  clear: both;
}

.grid:after {
  display: table;
  clear: both;
  content: '';
}

.grid:before {
  display: table;
  clear: both;
  content: '';
}

@media (min-width: 95.625em) {
  .grid {
    padding: 0;
  }
}

.grid.full {
  max-width: 100%;
  padding: 0;
}

.plugin-item-block:after {
  display: table;
  clear: both;
  content: '';
}

.plugin-item-block:before {
  display: table;
  clear: both;
  content: '';
}

.page {
  margin-top: 3em;
  margin-bottom: 3em;
}

.page:after {
  display: table;
  clear: both;
  content: '';
}

.page:before {
  display: table;
  clear: both;
  content: '';
}

.right-arrow {
  fill: white;
  max-width: 2em;
  max-height: 2em;
}

.passport-icon {
  vertical-align: middle;
  margin-top: -.15em;
  max-width: 1.25em;
  max-height: 1.25em;
}

.related-feature-list {
  clear: both;
  margin-bottom: 3em;
  margin-top: 3em;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIl9ub3JtYWxpemUuc2NzcyIsIl9jb25maWcuc2NzcyIsIl9taXhpbnMuc2NzcyIsIl9hbmltYXRpb25zLnNjc3MiLCJfdHlwb2dyYXBoeS5zY3NzIiwiX2dyaWRIZWxwZXJzLnNjc3MiLCJfc29jaWFsLnNjc3MiLCJfdGVhc2VySXRlbS5zY3NzIiwiX3BsYWNlaG9sZGVycy5zY3NzIiwiX2Nhcm91c2VsLnNjc3MiLCJfYWNjb3JkaW9ucy5zY3NzIiwiX2ZpbHRlcnMuc2NzcyIsIl9yZWxhdGVkRmlsbXMuc2NzcyIsIl9uZXdzbGV0dGVyRm9ybS5zY3NzIiwiX2hvbWVQYWdlSGVyby5zY3NzIiwiX3BhZ2luYXRpb24uc2NzcyIsIl9zbmlwcGV0cy5zY3NzIiwiX2ZpbG1MaXN0LnNjc3MiLCJfZmlsbURldGFpbC5zY3NzIiwiX2ZlYXR1cmVMaXN0aW5ncy5zY3NzIiwiX2ZlYXR1cmVEZXRhaWwuc2NzcyIsIl9jb2xsZWN0aW9uRGV0YWlsLnNjc3MiLCJfZmVhdHVyZUZ1bGxXaWR0aC5zY3NzIiwiX3NlYXJjaFJlc3VsdHMuc2NzcyIsIl9uZXdzbGV0dGVyTW9kYWwuc2NzcyIsIl9oZWFkZXIuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl9jb25uZWN0LnNjc3MiLCJfYWRzLnNjc3MiLCJfZ2xvYmFsR2VuZXJhbC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vYmFzZSBzdHVmZlxuQGltcG9ydCBcImJyZWFrcG9pbnRcIjtcbkBpbXBvcnQgXCJzdXN5XCI7XG5AaW1wb3J0IFwibm9ybWFsaXplXCI7XG5AaW1wb3J0IFwiY29uZmlnXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwiYW5pbWF0aW9uc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHlcIjtcbkBpbXBvcnQgXCJncmlkSGVscGVyc1wiO1xuXG4vLyBzbWFsbCByZXVzYWJsZSBjb21wb25lbnRzXG5AaW1wb3J0IFwic29jaWFsXCI7XG5AaW1wb3J0IFwidGVhc2VySXRlbVwiO1xuQGltcG9ydCBcInBsYWNlaG9sZGVyc1wiO1xuQGltcG9ydCBcImNhcm91c2VsXCI7XG5AaW1wb3J0IFwiYWNjb3JkaW9uc1wiO1xuQGltcG9ydCBcImZpbHRlcnNcIjtcbkBpbXBvcnQgXCJyZWxhdGVkRmlsbXNcIjtcbkBpbXBvcnQgXCJuZXdzbGV0dGVyRm9ybVwiO1xuQGltcG9ydCBcImhvbWVQYWdlSGVyb1wiO1xuQGltcG9ydCBcInBhZ2luYXRpb25cIjtcbkBpbXBvcnQgXCJzbmlwcGV0c1wiO1xuXG4vLyBwYWdlc1xuQGltcG9ydCBcImZpbG1MaXN0XCI7XG5AaW1wb3J0IFwiZmlsbURldGFpbFwiO1xuQGltcG9ydCBcImZlYXR1cmVMaXN0aW5nc1wiO1xuQGltcG9ydCBcImZlYXR1cmVEZXRhaWxcIjtcbkBpbXBvcnQgXCJjb2xsZWN0aW9uRGV0YWlsXCI7XG5AaW1wb3J0IFwiZmVhdHVyZUZ1bGxXaWR0aFwiO1xuQGltcG9ydCBcInNlYXJjaFJlc3VsdHNcIjtcblxuLy8gaGlnaCBsZXZlbCBjb21wb25lbnRzXG5AaW1wb3J0IFwibmV3c2xldHRlck1vZGFsXCI7XG5AaW1wb3J0IFwiaGVhZGVyXCI7XG5AaW1wb3J0IFwiZm9vdGVyXCI7XG5AaW1wb3J0IFwiY29ubmVjdFwiO1xuQGltcG9ydCBcImFkc1wiO1xuXG4vL2dlbmVyYWwgZ2xvYmFsXG5AaW1wb3J0IFwiZ2xvYmFsR2VuZXJhbFwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcblxuICAgICAgICAkX3Bhc3MgOiBudWxsO1xuXG4gICAgICAgIC8vIHNhc3MgMy41IG9yIGdyZWF0ZXJcbiAgICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cygnZ2V0LWZ1bmN0aW9uJykge1xuICAgICAgICAgICRfcGFzczogY2FsbChnZXQtZnVuY3Rpb24odW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIikpLCAkX2kpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNhc3MgMy40IG9yIGxlc3NcbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjQuMS4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gSUUgYW5kIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cblxuLyogYXBwbHkgYSBuYXR1cmFsIGJveCBsYXlvdXQgbW9kZWwgdG8gYWxsIGVsZW1lbnRzLCBidXQgYWxsb3dpbmcgY29tcG9uZW50cyB0byBjaGFuZ2UgKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveC5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsIC8qIDEgKi9cbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5tYWluLCAvKiAyICovXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkgeyAvKiAxICovXG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBpT1MgNC03LlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbnRlbXBsYXRlLCAvKiAxICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmUgYWxzbyBhY3RpdmUgb3IgaG92ZXJlZFxuICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZS13aWR0aDogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIEZpcmVmb3ggMzktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCB0aGUgZHVwbGljYXRlIGFwcGxpY2F0aW9uIG9mIGBib2xkZXJgIGJ5IHRoZSBuZXh0IHJ1bGUgaW4gU2FmYXJpIDYuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGJhY2tncm91bmQgYW5kIGNvbG9yIGluIElFIDktLlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICogYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbiAqIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDaGFuZ2UgdGhlIGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMyAqL1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSB0ZXh0IHN0eWxlIG9mIHBsYWNlaG9sZGVycyBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDAuNTQ7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKipcbiAqICByZW1vdmUgaW9zIHN0eWxpbmcuIE9ubHkgdXNlIG9uIGJ1dHRvbnMgYW5kIHNlYXJjaCBpbnB1dHNcbiAqL1xuYnV0dG9uLCBbdHlwZT1cInNlYXJjaFwiXSwgW3R5cGU9XCJidXR0b25cIl0geyBcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXItcmFkaXVzOjA7XG4gIHBhZGRpbmc6MDtcbn1cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG4gIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xufVxuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xufVxuIiwiLy8gY29sb3JzXG4kY3JpbXNvbjojOGMwMDA3O1xuJHJlZDojYmIwYjBlO1xuJHllbGxvdzojZjNhZDAwO1xuJG11c3RhcmQ6IzgzNWQwMDtcbiRibHVlOiMxNzQxODk7IFxuJGRhcmtCbHVlOiMxMDMwNjY7XG4kbmF2eTojMjQzNzU3O1xuJGNvcm5mbG93ZXI6IzQ4NzJiNDtcbiRjaGFyY29hbDojNDM0MzQzO1xuJGdyYXk6Izc3Nzc3NztcbiRtZWRHcmF5OiM5OTk5OTk7XG4kZGFya0dyYXk6IzMzMztcbiR3YXJtR3JheTojZWJlYmViO1xuJGRvdmU6I2U2ZTZlNjtcbiRvdmVybGF5OiNlM2UzZTM7XG5cblxuLy8gY2hhc2luZyB0aGUgbW9vblxuJGNoYXNpbmdCbHVlOiAjMDAzZmE2O1xuJGNoYXNpbmdIZWF0aGVyOiAjZDZkNmQ2O1xuJGNoYXNpbmdDb3JuZmxvd2VyOiAjMjY3ZGZlO1xuJGNoYXNpbmdTbGF0ZTogIzFjMWMxYztcbiRjaGFzaW5nR3JheTojNWI1YjViO1xuJG5vdEluU3R5bGd1aWRlQnV0SW5TdHlsZ3VpZGU6IzI0MjQyNDtcbiRjaGFzaW5nV3RmQmxhY2s6IzEwMTAxMDtcblxuXG4vLyBicmVha3BvaW50c1xuLy8gNjUwcHhcbiRzY3JlZW4tc20tbWluOjQwLjYyNWVtO1xuLy8gMTEwMHB4XG4kc2NyZWVuLW1kLW1pbjo2OC43NWVtO1xuLy8gMTMwMHB4XG4kc2NyZWVuLWxnLW1pbjo4MS4yNWVtO1xuLy8gMTUzMHB4XG4kc2NyZWVuLWpiLW1pbjo5NS42MjVlbTtcblxuLy8gdmVydGljYWwgcmh5dGhtIHZhci4gdXNlZCB0byBicmVhayB1cCBzZWN0aW9ucyBiYXNlZCBvbiBhIHNjYWxlXG4kdi1yaHl0aG06MS41ZW07XG5cbi8vIHN1c3kgYmFzZSBjb25maWcgZm9yIHNtYWxsZXIgc2NyZWVuc1xuLy8gZ3JpZCBjaGFuZ2VzIGJhc2VkIG9uIHdyYXBwZXIgY2xhc3MgZGVmaW5lZCBpbiBjdXN0b20uc2Nzc1xuJHN1c3k6IChcbiAgY29sdW1uczooMiksXG4gIGNvbnRhaW5lcjo4Ny41ZW0sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICAvLyBkZWJ1ZzooaW1hZ2U6c2hvdylcbik7XG5cbiRtYXAtc206IChcbiAgY29sdW1uczooNCksXG4pO1xuXG4kbWFwLW1kOiAoXG4gIGNvbHVtbnM6KDgpLFxuKTtcblxuJG1hcC1sZzogKFxuICBjb2x1bW5zOigxMiksXG4pO1xuXG4vLyBncmlkXG5AbWl4aW4gZ3JpZCgpIHtcbiAgQGluY2x1ZGUgY29udGFpbmVyKCk7XG4gIEBpbmNsdWRlIGNsZWFyZml4KCk7XG4gIHBhZGRpbmc6MCA1JTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgQGluY2x1ZGUgc2hvdy1ncmlkKDEyKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbikge1xuICAgIHBhZGRpbmc6MDtcbiAgfVxufSIsIiAvLyBjbGVhciBmaXhpblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICAgIGNvbnRlbnQ6Jyc7XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6dGFibGU7XG4gICAgY2xlYXI6Ym90aDtcbiAgICBjb250ZW50OicnO1xuICB9XG59XG4vLyBwYXJlbnQgc2hvdWxkIGJlIHNldCB0byByZWxhdGl2ZVxuLy8gaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL2NlbnRlcmluZy1taXhpbi9cbkBtaXhpbiBjZW50ZXIoJGhvcml6b250YWw6IHRydWUsICR2ZXJ0aWNhbDogdHJ1ZSkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpZiAoJGhvcml6b250YWwgYW5kICR2ZXJ0aWNhbCkge1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblxuICB9IEBlbHNlIGlmICgkaG9yaXpvbnRhbCkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTtcbiAgfSBAZWxzZSBpZiAoJHZlcnRpY2FsKSB7XG4gICAgdG9wOiA1MCU7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTp0cmFuc2xhdGUoMCwgLTUwJSk7XG4gIH1cbn1cblxuLy8gdHJhbnNpdGlvbnNcbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9uLXByb3BlcnR5LCAkdHJhbnNpdGlvbi10aW1lLCAkbWV0aG9kKSB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG4gICAgICAtbXMtdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG4gICAgICAgICAgdHJhbnNpdGlvbjokdHJhbnNpdGlvbi1wcm9wZXJ0eSAkdHJhbnNpdGlvbi10aW1lICRtZXRob2Q7XG59XG5cbi8vIGdyYWRpZW50c1xuQG1peGluIGxpbmVhci1ncmFkaWVudCgkZnJvbUNvbG9yLCAkdG9Db2xvcikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiR0b0NvbG9yOyAvKiBGYWxsYmFjayBDb2xvciAqL1xuICBiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oJGZyb21Db2xvciksIHRvKCR0b0NvbG9yKSk7IC8qIFNhZjQrLCBDaHJvbWUgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTotd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogQ2hyb21lIDEwKywgU2FmNS4xKywgaU9TIDUrICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIEZGMy42ICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7IC8qIElFMTAgKi9cbiAgYmFja2dyb3VuZC1pbWFnZTogICAgIC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICRmcm9tQ29sb3IsICR0b0NvbG9yKTsgLyogT3BlcmEgMTEuMTArICovXG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgICBsaW5lYXItZ3JhZGllbnQodG9wLCAkZnJvbUNvbG9yLCAkdG9Db2xvcik7XG5cbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoR3JhZGllbnRUeXBlPTAsU3RhcnRDb2xvclN0cj0nI3skZnJvbUNvbG9yfScsIEVuZENvbG9yU3RyPScjeyR0b0NvbG9yfScpO1xufVxuXG4vLyBwbGFpbiBsaXN0c1xuQG1peGluIHBsYWluLWxpc3Qge1xuICBtYXJnaW4tcmlnaHQ6MDtcbiAgbWFyZ2luLXRvcDowO1xuICBtYXJnaW4tbGVmdDowO1xuICBtYXJnaW4tYm90dG9tOjA7XG4gIHBhZGRpbmc6MDtcbiAgbGkge1xuICAgIGxpc3Qtc3R5bGU6bm9uZTtcbiAgfVxuICBkZCB7XG4gICAgbWFyZ2luOjA7XG4gIH1cbn1cblxuQG1peGluIHBsYWluLWJ1dHRvbiB7XG4gIGJvcmRlcjpub25lO1xuICBiYWNrZ3JvdW5kOm5vbmU7XG4gIGJveC1zaGFkb3c6bm9uZTtcbiAgJjpob3ZlciwgJjpmb2N1cywgJjphY3RpdmUge1xuICAgIGJveC1zaGFkb3c6bm9uZTtcbiAgICBib3JkZXI6bm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gYnV0dG9uKCRiYWNrZ3JvdW5kOm51bGwsICRjb2xvcjpudWxsKSB7XG4gICoge1xuICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgfVxuICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICBjb2xvcjojeyRjb2xvcn07XG4gIGJhY2tncm91bmQtY29sb3I6I3skYmFja2dyb3VuZH07XG4gIGJvcmRlcjowO1xufVxuXG5AbWl4aW4gYm9yZGVyLWJ1dHRvbigkYm9yZGVyQ29sb3I6bnVsbCwgJGJvcmRlcldpZHRoOm51bGwsICRjb2xvcjpudWxsKSB7XG4gICoge1xuICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgfVxuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICBjb2xvcjojeyRjb2xvcn07XG4gIGJvcmRlci1jb2xvcjojeyRib3JkZXJDb2xvcn07XG4gIGJvcmRlci13aWR0aDojeyRib3JkZXJXaWR0aH07XG4gIGJvcmRlci1zdHlsZTpzb2xpZDtcbn1cblxuQG1peGluIGFycm93LWJ1dHRvbigkY29sb3IpIHtcbiAgcGFkZGluZy1yaWdodDozZW07XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBzdmcge1xuICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgZmlsbDokY29sb3I7XG4gICAgcmlnaHQ6MWVtO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjFlbTtcbiAgICBoZWlnaHQ6MWVtO1xuICB9XG4gIC8vIHJlcXVpcmVzIHRoaXMgc3ZnIGFzIGEgY2hpbGRcbiAgLy8gICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDU1IDEwMVwiPlxuICAvLyAgIDxwYXRoIGQ9XCJNNy40NSAxMDBMMCA5Mi4xIDM5LjU1IDUwIDAgOC4xOCA3LjQ1IDBsNDcuMSA1MFwiLz5cbiAgLy8gPC9zdmc+XG59XG5cbi8vIGxpbmsgcmVzZXRcbkBtaXhpbiBsaW5rLXJlc2V0IHtcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6YWN0aXZlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG4gICY6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICB9XG59XG5cbi8vIGxvbmcgc2hhZG93IGdlbmVyYXRvclxuLy8gaHR0cDovL2NvZGVwZW4uaW8vbWF4YWtvaGxlci9wZW4vbUF4SHpcbkBtaXhpbiBsb25nLXNoYWRvdygkdHlwZSwgJGNvbG9yLCAkbGVuZ3RoLCAkZmFkZW91dDogdHJ1ZSwgJHNrZXc6IGZhbHNlLCAkZGlyZWN0aW9uOiByaWdodCl7XG4gICRzaGFkb3c6ICcnO1xuICBAaWYgJHNrZXcgPT0gZmFsc2Ugb3IgJHR5cGUgPT0gdGV4dHtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICAgICRzaGFkb3c6ICRzaGFkb3cgKyAkaSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGNvbG9yICsgJywnO1xuICAgICAgfVxuICAgIH1cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRvICRsZW5ndGggLSAxIHtcbiAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICogLTEgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRjb2xvciArICcsJztcbiAgICAgICB9XG4gICAgICB9XG4gICAgIH1cbiAgICAgICAgXG4gICBAaWYgJGZhZGVvdXQgPT0gdHJ1ZXtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkbGVuZ3RoIC0gMSB7XG4gICAgICBAaWYgJHR5cGUgPT0gdGV4dCBvciAkc2tldyA9PSBmYWxzZXtcbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gcmlnaHR7XG4gICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAgICAgICByZ2JhKCRjb2xvciwgMSAtICRpIC8gJGxlbmd0aCkgKyAnLCc7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgICAgICAgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKCR0eXBlID09IGJveCkgYW5kICRza2V3ID09IHRydWV7XG4gICAgICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKyAncHggJyArICRpICsgJ3B4IDAgJyArICRpICogLjIgKyAncHggJyArIHJnYmEoJGNvbG9yLCAxIC0gJGkgLyAkbGVuZ3RoKSArICcsJztcbiAgICAgICAgfVxuICAgICAgICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgICAgICAkc2hhZG93OiAkc2hhZG93ICsgJGkgKiAtMSArICdweCAnICsgJGkgKyAncHggMCAnICsgJGkgKiAuMiArICdweCAnICsgcmdiYSgkY29sb3IsIDEgLSAkaSAvICRsZW5ndGgpICsgJywnO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cbiAgJHNoYWRvdzogJHNoYWRvdyArICRsZW5ndGggKyAncHggJyArICRsZW5ndGggKyAncHggMCAnICsgcmdiYSgkY29sb3IsIDApO1xuIH1cbiBAaWYgJGZhZGVvdXQgPT0gZmFsc2V7XG4gICBAaWYgJHNrZXcgPT0gdHJ1ZSBhbmQgKCAkdHlwZSA9PSBib3ggKXtcbiAgICAgQGZvciAkaSBmcm9tIDAgdG8gJGxlbmd0aCAtIDEge1xuICAgICAgICAgICAgJHNoYWRvdzogJHNoYWRvdyArICRpICsgJ3B4ICcgKyAkaSArICdweCAwICcgKyAkaSAqIC4xICsgJ3B4ICcgKyAkY29sb3IgKyAnLCc7XG4gICAgICB9XG4gICB9XG4gICAgJHNoYWRvdzogJHNoYWRvdyArICRsZW5ndGggKyAncHggJyArICRsZW5ndGggKyAncHggMCAnICsgcmdiYSgwLDAsMCwwKTtcbiB9XG4gJHNoYWRvdzogdW5xdW90ZSgkc2hhZG93KTtcbiAgQGlmICR0eXBlID09ICdib3gnIHtib3gtc2hhZG93OiAkc2hhZG93O31cbiAgQGlmICR0eXBlID09ICd0ZXh0JyB7dGV4dC1zaGFkb3c6ICRzaGFkb3c7fVxufVxuXG4vLyBhc3NpdGl2ZSB0ZXh0LiBub3QgYSBtaXhpbiBidXQgYW4gaW1wb3J0YW50IHV0aWxpdHkgY2xhc3Ncbi5hc3Npc3RpdmUtdGV4dCB7XG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGhlaWdodDogMXB4O1xuICB3aWR0aDogMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uYXNzaXN0aXZlLXRleHQ6aG92ZXIsIC5hc3Npc3RpdmUtdGV4dDphY3RpdmUsIC5hc3Npc3RpdmUtdGV4dDpmb2N1cyB7XG4gIGZvbnQtc2l6ZTouODc1ZW07XG4gIGZvbnQtd2VpZ2h0OmJvbGQ7XG4gIGxpbmUtaGVpZ2h0Om5vcm1hbDtcbiAgei1pbmRleDoxMDAwMDA7XG4gIHRvcDo1cHg7XG4gIGxlZnQ6NXB4O1xuICBkaXNwbGF5OmJsb2NrO1xuICBjbGlwOmF1dG8gIWltcG9ydGFudDtcbiAgd2lkdGg6YXV0bztcbiAgaGVpZ2h0OmF1dG87XG4gIHBhZGRpbmc6MTVweCAyM3B4IDE0cHg7XG4gIHRleHQtZGVjb3JhdGlvbjpub25lO1xuICBjb2xvcjojMjE3NTliO1xuICBib3JkZXItcmFkaXVzOjNweDtcbiAgYmFja2dyb3VuZC1jb2xvcjojZjFmMWYxO1xuICBib3gtc2hhZG93OjAgMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgLjYpO1xufVxuXG4uaGlkZSB7XG4gIGRpc3BsYXk6bm9uZTtcbn1cblxuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gIGRpc3BsYXk6ZmxleDtcbn1cblxuQG1peGluIGZsZXgtd3JhcCB7XG4gIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuQG1peGluIGZsZXgtYWxpZ24tY2VudGVyIHtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcbiAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuQG1peGluIGZsZXgtYWxpZ24tZW5kIHtcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGVuZDtcbiAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDtcbn1cblxuQG1peGluIGZsZXgtanVzdGlmeS1lbmQge1xuICAtd2Via2l0LWJveC1wYWNrOiBlbmQ7XG4gICAgIC1tcy1mbGV4LXBhY2s6IGVuZDtcbiAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IFxufVxuXG5AbWl4aW4gZmxleC1qdXN0aWZ5LXN0YXJ0IHtcbiAtd2Via2l0LWJveC1wYWNrOiBzdGFydDtcbiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyBcbn1cblxuQG1peGluIGZsZXgtanVzdGlmeS1jZW50ZXIge1xuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XG4gICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcbiAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyBcbn1cbiIsIkBtaXhpbiBhbmltYXRlZCgkZHVyKSB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAkZHVyO1xuICBhbmltYXRpb24tZHVyYXRpb246ICRkdXI7XG4gIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5AbWl4aW4gZmFkZUluIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmFkZUluO1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluO1xufVxuXG5AbWl4aW4gZmFkZUluU3RhcnRlZCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblN0YXJ0ZWQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5TdGFydGVkO1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuQG1peGluIGZhZGVPdXQge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5MZWZ0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluTGVmdDtcbn1cblxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5SaWdodCB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQG1peGluIHNsaWRlSW5SaWdodCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZU91dFJpZ2h0IHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0UmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVPdXREb3duIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dERvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG5cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXREb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0TGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB9XG59XG5cbi5zbGlkZU91dExlZnQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRMZWZ0O1xufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluRG93biB7XG4gIGZyb20ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJbkRvd24ge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93bjtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5Eb3duO1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJblVwIHtcbiAgZnJvbSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG5AbWl4aW4gc2xpZGVJblVwIHtcbiAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGVJblVwO1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJblVwO1xufVxuXG5cbkAtd2Via2l0LWtleWZyYW1lcyBib3VuY2Uge1xuICAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuICBcbiAgNTAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMzBweCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG4gIDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIFxuICA1MCUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAzMHB4LCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwcHgsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBib3VuY2Uge1xuICAtd2Via2l0LWFuaW1hdGlvbjogYm91bmNlIDNzIGluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbjogYm91bmNlIDNzIGluZmluaXRlO1xufVxuXG4vLyBjaGFzaW5nIG1vb24gYW5pbWF0aW9uc1xuLy8gYW5pbWF0aW9ucyBsYXN0IDMwc2Vjb25kc1xuLy8gbGFzdCAxLjVzZWNvbmRzIG9mIGFuaW1hdGlvbiBpcyB0cmFuc2Zvcm0gYmFja3RvIG9yaWdpbmFsIHN0YXRlXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vbkltYWdlQW5pbWF0aW9uIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IC4xNTtcbiAgfVxuXG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICBcbiAgODUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbn1cblxuQGtleWZyYW1lcyBNb29uSW1hZ2VBbmltYXRpb24ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogLjE1O1xuICB9XG5cbiAgNzUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFxuICA4NSUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAuMTU7XG4gIH1cbn1cblxuQG1peGluIE1vb25JbWFnZUFuaW1hdGlvbiB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25JbWFnZUFuaW1hdGlvbjtcbiAgICAgICAgICBhbmltYXRpb24tbmFtZTogTW9vbkltYWdlQW5pbWF0aW9uO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vbkdyYWRpZW50UmlzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICA4NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIE1vb25HcmFkaWVudFJpc2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICB9XG5cbiAgODUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cblxuQG1peGluIE1vb25HcmFkaWVudFJpc2Uge1xuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBNb29uR3JhZGllbnRSaXNlO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uR3JhZGllbnRSaXNlO1xuICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7XG4gICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTsgIFxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgTW9vblR5cGVSZXZlYWwge1xuICAwJSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtcbiAgfVxuXG4gIDg1JSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIE1vb25UeXBlUmV2ZWFsIHtcbiAgMCUge1xuICAgIGxldHRlci1zcGFjaW5nOmluaGVyaXQ7XG4gIH1cbiAgXG4gIDg1JSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6LjE1ZW07XG4gIH1cblxuICAxMDAlIHtcbiAgICBsZXR0ZXItc3BhY2luZzouMTVlbTtcbiAgfVxufVxuXG5cbkBtaXhpbiBNb29uVHlwZVJldmVhbCB7XG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IE1vb25UeXBlUmV2ZWFsO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiBNb29uVHlwZVJldmVhbDtcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7ICBcbn1cblxuXG5cblxuXG4iLCIvLyBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4vLyBmb250LWZhbWlseTogJ011bGknLCBzYW5zLXNlcmlmO1xuLy8gZm9udC1mYW1pbHk6ICdSb2JvdG8gU2xhYicsIHNlcmlmO1xuXG4vLyBib2R5IGJhc2VcbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgXCJUcmVidWNoZXQgTVNcIiwgc2Fucy1zZXJpZjtcbiAgICBsaW5lLWhlaWdodDogMS42MjU7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG4vLyBiYXNlIGhlYWRpbmcgc3R5bGluZ1xuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2LFxuLmFscGhhLFxuLmJldGEsXG4uZ2FtbWEsXG4uZGVsdGEsXG4uZXBzaWxvbixcbi56ZXRhIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG4vLyBoMSBpcyB1c2VkIGZvciB0aGUgc2l0ZSBsb2dvIG9ubHkgZm9yIHBhZ2UgaGVhZGluZ3Mgb3IgY3JlYXRpbmcgdG9wIGxldmVsIHNlY3Rpb25zXG4vLyB1c2UgaDIgb3IgLmJldGFcbi5hbHBoYSB7XG4gICAgY29sb3I6ICRjaGFyY29hbDtcbiAgICBmb250LXNpemU6IDIuMjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBoZWlnaHQ6IDAuMTY2NmVtO1xuICAgICAgICB3aWR0aDogNC4xNjc3ZW07XG4gICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzVlbTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5oMixcbi5iZXRhIHtcbiAgICBjb2xvcjogJGNoYXJjb2FsO1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNjI1O1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjRlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGhlaWdodDogMC4xODc1ZW07XG4gICAgICAgIHdpZHRoOiAzLjEyNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkeWVsbG93O1xuICAgIH1cbiAgICAmLmFsdGVybmF0ZSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDAgMC4yNWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBoZWlnaHQ6IDAuMTg3NWVtO1xuICAgICAgICAgICAgd2lkdGg6IDMuMTI1ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29ybmZsb3dlcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMC44ZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGFsdGVybmF0ZSBsZXZlbCB0d28gaGVhZGluZ1xuLnByZW1pZXJlLWRhdGUge1xuICAgIGNvbG9yOiAkZ3JheTtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBsaW5lLWhlaWdodDogMS4wNjI1O1xufVxuXG4ub3ZlcmxpbmUge1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICBoMSxcbiAgICAuYWxwaGEge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjRlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43NWVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgaGVpZ2h0OiAwLjM3NWVtO1xuICAgICAgICB3aWR0aDogOS4zNzVlbTtcbiAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICB9XG59XG5cbi8vIGhlYWRpbmcgYW5pbWF0aW9uXG4uanMge1xuICAgIC5hbHBoYSxcbiAgICBoMixcbiAgICAuYmV0YSxcbiAgICAub3ZlcmxpbmUge1xuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHdpZHRoLCAwLjc1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm92ZXJsaW5lIHtcbiAgICAgICAgJi5hbmltYXRlIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOS4zNzVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuYWxwaGEsXG4gICAgaDIuYWxwaGEge1xuICAgICAgICAmLmFuaW1hdGUge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0LjE2NzdlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBoMixcbiAgICAuYmV0YSB7XG4gICAgICAgICYuYW5pbWF0ZSB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMy4xMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuaDMsXG4uZ2FtbWEge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIGNvbG9yOiAkY2hhcmNvYWw7XG4gICAgZm9udC1zaXplOiAxLjYyNWVtO1xufVxuXG5oNCxcbi5kZWx0YSB7XG4gICAgY29sb3I6ICRtZWRHcmF5O1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDc7XG59XG5cbmg1LFxuLmVwaXNsb24ge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBmb250LXNpemU6IDEuMzc1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMDg7XG59XG5cbmg2LFxuLnpldGEge1xuICAgIGNvbG9yOiAkZ3JheTtcbiAgICBmb250LWZhbWlseTogXCJSb2JvdG8gU2xhYlwiLCBzZXJpZjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNzE0ZW07XG59XG5cbi8vIGNvcHkgYW5kIGxpc3RzXG5wIHtcbiAgICBtYXJnaW46IDAgMCAxLjY2NjY2N2VtO1xuICAgIGZvbnQtc2l6ZTogMS4xMjVlbTtcbiAgICAmOmVtcHR5IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIHRhcmdldGluZyBwbHVnaW4gY29udGFpbmVyIGNsYXNzIGluY2x1ZGVkIG9uIGZlYXR1cmUtZGV0YWlsLCB1dGlpbHR5IHBhZ2UgYW5kIDQwNCB0ZW1wbGF0ZVxuLy8gcHJldmVudHMgY29sbGlzaW9ucyB3aXRoIGxpc3RzIHNpdGUgd2lkZVxuLnBsdWdpbi1jb250YWluZXIge1xuICAgIG9sLFxuICAgIHVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICBtYXJnaW46IDAgMCAxLjY2NjY2N2VtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNWVtO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMi41ZW07XG4gICAgICAgIH1cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9sIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyZW07XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNWVtO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IC0wLjVlbTtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFwyMDIyXCI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIudHdvLXVwIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDIgb2YgNCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg2IG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRocmVlLXVwIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSg0IG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZvdXItdXAge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgaDMuZGVsdGEge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1ZW0gIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgzIG9mIDEyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG59XG5cbi5maXZlLXVwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC1nYXA6ICR2LXJoeXRobTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1jb250ZW50OiBzdGFydDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxZnIgMWZyIDFmcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmciAxZnI7XG4gICAgfVxuXG4gICAgaDMuZGVsdGEge1xuICAgICAgICBmb250LXNpemU6IDEuMzc1ZW0gIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICY6bnRoLWNoaWxkKDEpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMjtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDQgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAzIC8gc3BhbiAyO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMiAvIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDUgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMTtcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiA0IC8gc3BhbiAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMSAvIHNwYW4gMztcbiAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDIgLyAzO1xuICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpudGgtY2hpbGQoNSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyBzcGFuIDY7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDQgLyBzcGFuIDM7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDI7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDMgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDEgLyBzcGFuIDI7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTm8gR3JpZCBGYWxsYmFja1xuICAgIEBzdXBwb3J0cyBub3QgKGRpc3BsYXk6IGdyaWQpIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42NjYgb2YgOCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDQgb2YgMTIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2l4LXVwIHtcbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyIG9mIDQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDMgb2YgOSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMyBvZiAxMik7XG5cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDUpLFxuICAgICAgICAgICAgJjpudGgtY2hpbGQoNikge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMiBvZiA0KTtcblxuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMTI1ZW07XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjYyNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc29jaWFsLWxpc3Qge1xuICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICBkaXNwbGF5OmZsZXg7XG4gIHRleHQtYWxpZ246Y2VudGVyOyAgXG4gIGEge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjJlbTtcbiAgICBoZWlnaHQ6MmVtO1xuICAgIHN2ZyB7XG4gICAgICBwYXRoIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbGkge1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6MCAuMjVlbTtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xuICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7XG4gICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICBzdmcge1xuICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6JGdyYXk7ICAgIFxuICAgIH1cbiAgICAuY29sb3Ige1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICB9XG4gIH1cbn0iLCIudGVhc2VyLWxpc3Qge1xuICBAaW5jbHVkZSBwbGFpbi1saXN0O1xufVxuXG4udGVhc2VyLWl0ZW0ge1xuICBmaWd1cmUge1xuICAgIG1hcmdpbjowIDAgJHYtcmh5dGhtLzI7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nLWJvdHRvbTo1Ni4yNSU7XG4gICAgYSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgIH1cbiAgICBpbWcgIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgIH1cbiAgfVxuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOjA7XG4gIH1cbiAgaDMge1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzQ7XG4gICAgLnBhc3Nwb3J0LWljb24ge1xuICAgICAgbWF4LXdpZHRoOjFlbTtcbiAgICAgIG1heC1oZWlnaHQ6MWVtO1xuICAgIH1cbiAgfVxuICAuemV0YSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vNDtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgfVxuICAuaWNvbiB7XG4gICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgYm90dG9tOjA7XG4gICAgbGVmdDowO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjMuMTI1ZW07XG4gICAgaGVpZ2h0OjMuMTI1ZW07XG4gICAgYmFja2dyb3VuZDpyZ2JhKCRibHVlLCAuNzUpO1xuICAgIGltZyB7XG4gICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICBtYXgtd2lkdGg6MS41NjI1ZW07XG4gICAgICBtYXgtaGVpZ2h0OjEuNTYyNWVtO1xuICAgICAgd2lkdGg6YXV0bztcbiAgICAgIGhlaWdodDphdXRvO1xuICAgIH1cbiAgfVxufVxuXG4uY29sbGVjdGlvbi1pdGVtIHtcbiAgZmlndXJlIHtcbiAgICBwYWRkaW5nLWJvdHRvbToyNy41JTtcbiAgfVxufVxuXG4uanMge1xuICAudGVhc2VyLWl0ZW0ge1xuICAgICYuc2xpZGUtaW4taXRlbSB7XG4gICAgICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICAgICAgQGluY2x1ZGUgc2xpZGVJblVwO1xuICAgIH1cbiAgICAmLmhpZGRlbi1pdGVtIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbn0iLCIvLyBHZW5lcmljIFN0eWxpbmcgZm9yIHBsYWNlaG9sZGVycy4gTGF5b3V0IGNhbiBiZSBmb3VuZCBpbiBncmlkIGhlbHBlcnNcbi5wbHVnaW4tYmxvY2ssIC5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xufVxuXG4ucGx1Z2luLWJsb2NrIHtcbiAgICBoMyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgfVxufVxuXG4ucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgaDMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gLyA4O1xuICAgIH1cbn1cblxuLnBsdWdpbi1saXN0LWJsb2NrIHtcbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIH1cbn1cblxuLmFscGhhIHtcbiAgICAmICsgLnBsdWdpbi1ibG9jaywgJiArIC5wbHVnaW4tbGlzdC1ibG9jayB7XG4gICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDI7XG4gICAgfVxufVxuXG4ucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgZmlndXJlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41ZW07XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jZW50ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gamFua3kgb3ZlcmlkZSBvZiBkamFuZ28gaW5saW5lIHN0eWxpbmcgZm9yIGZsb2F0aW5nIHN0dWZmXG4qW3N0eWxlKj1cImZsb2F0OiBsZWZ0XCJdLCAubGVmdCB7XG4gICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDAgYXV0byAoJHYtcmh5dGhtICogMS41KSBhdXRvO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJHYtcmh5dGhtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAoJHYtcmh5dGhtIC8gMikgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbipbc3R5bGUqPVwiZmxvYXQ6IHJpZ2h0XCJdLCAucmlnaHQge1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIGF1dG8gKCR2LXJoeXRobSAqIDEuNSkgYXV0bztcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgICAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICR2LXJoeXRobTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogKCR2LXJoeXRobSAvIDIpICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uY2VudGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufSIsIi8qKlxuICogd2FsbG9wLmNzc1xuICpcbiAqIEBmaWxlb3ZlcnZpZXcgRGVmYXVsdCBzdHlsZXMgZm9yIHdhbGxvcCDigJMgcmVjb21tZW5kZWRcbiAqXG4gKiBAYXV0aG9yIFBlZHJvIER1YXJ0ZVxuICogQGF1dGhvciBodHRwOi8vcGVkcm9kdWFydGUubWUvd2FsbG9wXG4gKi9cblxuLmNhcm91c2VsLWNvbnRhaW5lciB7XG4gICAgKjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDAuMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICB9XG5cbiAgICAuZnVsbC1zY3JlZW4sXG4gICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLldhbGxvcC1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjUwcHgsIDFmcikpO1xuICAgICAgICBncmlkLWdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICB3aWR0aDogMTUwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMjUlO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgd2lkdGg6IDIwMCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmpzIHtcbiAgICAvLyBhZGRlZCB0byBmb3IgZXhpdCBhbmltYXRpb25zXG4gICAgLmNhcm91c2VsLWNvbnRhaW5lciB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgLnNsaWRlcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgICB3aWR0aDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAuY2Fyb3VzZWwge1xuICAgICAgICAmLmV4cGFuZGVkIHtcbiAgICAgICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbixcbiAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLldhbGxvcCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjQ1cyk7XG4gICAgICAgICAgICAmLmVudGVyaW5nLWZ1bGxzY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNsaWRlSW5Eb3duO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5leGl0aW5nLWZ1bGxzY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZW50ZXJpbmctYmFjayB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmFkZUluO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi52aWV3aW5nLWZ1bGwge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMjE0NzQ4MzY0NztcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMjAlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IGNhbGMoNzV2aCArIDFlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDIwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjYWxjKDc1dmggKyAxLjE1ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuV2FsbG9wLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAmLldhbGxvcC1pdGVtLS1jdXJyZW50IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDc1dmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAzZW0gYXV0byAwIGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjB2dztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogY2FsYygyMCUgLSAwLjQ1ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGNhbGMoNzV2aCArIDcuNzVlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaWRlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMjAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmLmxvbmctY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlnY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDNlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgVGhpcyBlbGVtZW50IGdyb3VwcyBhbGwgdGhlIGl0ZW1zLCBidXQgbm90IHRoZSBidXR0b25zXG4gICAgSXQncyBhIHJlY29tbWVuZGF0aW9uIGJ1dCBpdCdzIHZlcnkgbGlrZWx5XG4gICAgeW91J2xsIHdhbnQgdG8gaGlkZSBhbnkgb3ZlcmZsb3cgZnJvbSB0aGUgaXRlbXNcbiAgICBFc3BlY2lhbGx5IHdoZW4gZG9pbmcgYW5pbWF0aW9ucyBzdWNoIGFzIHNjYWxlXG4gICAqL1xuXG4gICAgLnBsdWdpbi1jb250YWluZXIge1xuICAgICAgICAuV2FsbG9wLWxpc3Qge1xuICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICBUaGlzIGlzIHRoZSBpdGVtIGVsZW1lbnRcbiAgICBCeSBkZWZhdWx0LCB0aGV5IGFyZSBhbGwgaGlkZGVuIGFuZFxuICAgIHBvc2l0aW9uZWQgYWJzb2x1dGVcbiAgICBJIHJlY29tbWVuZCBhbHdheXMgaGF2aW5nIC5XYWxsb3AtaXRlbS0tY3VycmVudFxuICAgIGluIHlvdXIgbWFya3VwIGJ5IGRlZmF1bHQgKHByb2JhYmx5IG9uIHRoZSBmaXJzdCBlbGVtZW50KVxuICAgKi9cblxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0ZW07XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyLjgxMjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcm91c2VsLWl0ZW0tY2FwdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtICR2LXJoeXRobTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAvKlxuICAgIFRoaXMgaXMgdGhlIGN1cnJlbnQgaXRlbSBlbGVtZW50XG4gICAgQWxsIHdlIGRvIGhlcmUsIGlzIG1ha2UgaXQgdmlzaWJsZSBhZ2FpbiByZXNldFxuICAgIHRoZSBwb3NpdGlvbiB0byBzdGF0aWMuIENvdWxkIGFsc28gYmUgcmVsYXRpdmVcbiAgICovXG5cbiAgICAucGx1Z2luLWNvbnRhaW5lciB7XG4gICAgICAgIC5XYWxsb3AtaXRlbS0tY3VycmVudCB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgJi5sb25nLWNhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlLFxuICAgICAgICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obWF4LWhlaWdodCwgMXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA0LjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA0LjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNlZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHJlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogY2FsYyg1JSAtIDAuNDVlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiA0MC4yNWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC40NWVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHllbGxvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogNSU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJHllbGxvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuM3MsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgJi5leHBhbmRlZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDguNTVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAkdi1yaHl0aG0gKiAyIDUlICR2LXJoeXRobSA1JTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGlkZS1tb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2VlLW1vcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZ2NhcHRpb24sXG4gICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtIDAgMCAwO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoYmxhY2ssIDAuNzUpO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEuNWVtIGF1dG8gMCBhdXRvO1xuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjU1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0gKiAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY3JlZGl0IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCAwIDAgMzBweCAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogM3B4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9pY29uLWNhbWVyYS5zdmcpIG5vLXJlcGVhdCBsZWZ0IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5XYWxsb3AtYnV0dG9uUHJldmlvdXMsXG4gICAgLldhbGxvcC1idXR0b25OZXh0IHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBzdmcge1xuICAgICAgICAgICAgaGVpZ2h0OiAxZW07XG4gICAgICAgICAgICB3aWR0aDogMWVtO1xuICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgcGF0aCB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZ1bGwtc2NyZWVuIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uKG51bGwsICRtZWRHcmF5KTtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwLjNlbSAwLjQ1ZW0gMC41ZW0gMC40NWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMzcuNWVtO1xuICAgICAgICBsZWZ0OiA1JTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIC5mdWxsLXNjcmVlbi1pY29uIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC4zcywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICB3aWR0aDogMS4yNWVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTAuMDVlbTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkeWVsbG93O1xuICAgICAgICAgICAgLmZ1bGwtc2NyZWVuLWljb24ge1xuICAgICAgICAgICAgICAgIGZpbGw6ICR5ZWxsb3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpZGVzLXBhZ2luYXRpb24ge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAyNy43NWVtO1xuICAgICAgICByaWdodDogNSU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgdG9wOiAzNy43NWVtO1xuICAgICAgICB9XG4gICAgICAgIC5jb3VudCB7XG4gICAgICAgICAgICBjb2xvcjogJG1lZEdyYXk7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogLTAuMDVlbSAxZW0gMCAwO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC43NWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5wbHVnaW4tY29udGFpbmVyIHtcbiAgICAgICAgLnZpZGVvLWdhbGxlcnkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0NGVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAuc2xpZGVzLXBhZ2luYXRpb24sXG4gICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgIHRvcDogMC41ZW07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjMuNzVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjUuNzVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZnVsbC1zY3JlZW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjYWxjKDUlIC0gMC40NWVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDIuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY292ZS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDEuNTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLnZpZXdpbmctZnVsbCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIC5zbGlkZXMtcGFnaW5hdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBjYWxjKDUwJSAtIDIzZW0pO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI4ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5mdWxsLXNjcmVlbiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjNlbSk7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMjhlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLldhbGxvcC1pdGVtLS1jdXJyZW50LldhbGxvcC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvdmUtd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MGVtO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICR2LXJoeXRobSBhdXRvIDAgYXV0bztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvdmUtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY2FwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogd2FsbG9wLS1zbGlkZS5jc3NcbiAqXG4gKiBAZmlsZW92ZXJ2aWV3IFNsaWRlIGFuaW1hdGlvbiBmb3Igd2FsbG9wXG4gKlxuICogQGF1dGhvciBQZWRybyBEdWFydGVcbiAqIEBhdXRob3IgaHR0cDovL3BlZHJvZHVhcnRlLm1lL3dhbGxvcFxuICovXG5cbi8qIHRoZSAxMG1zIGFuaW1hdGlvbi1kZWxheSBmaXhlZCBzb21lIHdlaXJkIHJlbmRlcmluZyBpc3N1ZXMgd2l0aCBpUGhvbmUgKi9cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0tc2hvd1ByZXZpb3VzIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIC1tb3otYW5pbWF0aW9uOiBzbGlkZUZyb21MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIGFuaW1hdGlvbjogc2xpZGVGcm9tTGVmdCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLXNob3dOZXh0IHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbW96LWFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbXMtYW5pbWF0aW9uOiBzbGlkZUZyb21SaWdodCAzNTBtcyAxMG1zIGxpbmVhciBib3RoO1xuICAgIGFuaW1hdGlvbjogc2xpZGVGcm9tUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuLldhbGxvcC0tc2xpZGUgLldhbGxvcC1pdGVtLS1oaWRlUHJldmlvdXMsXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVOZXh0IHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uV2FsbG9wLS1zbGlkZSAuV2FsbG9wLWl0ZW0tLWhpZGVQcmV2aW91cyB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1vei1hbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb0xlZnQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICBhbmltYXRpb246IHNsaWRlVG9MZWZ0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG59XG5cbi5XYWxsb3AtLXNsaWRlIC5XYWxsb3AtaXRlbS0taGlkZU5leHQge1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZVRvUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbiAgICAtbW96LWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgLW1zLWFuaW1hdGlvbjogc2xpZGVUb1JpZ2h0IDM1MG1zIDEwbXMgbGluZWFyIGJvdGg7XG4gICAgYW5pbWF0aW9uOiBzbGlkZVRvUmlnaHQgMzUwbXMgMTBtcyBsaW5lYXIgYm90aDtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlRnJvbUxlZnQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZUZyb21MZWZ0IHtcbiAgICAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRnJvbUxlZnQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQC1tcy1rZXlmcmFtZXMgc2xpZGVGcm9tUmlnaHQge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUZyb21SaWdodCB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvTGVmdCB7XG4gICAgOTklIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVUb0xlZnQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuXG5ALW1zLWtleWZyYW1lcyBzbGlkZVRvUmlnaHQge1xuICAgIDk5JSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVUb1JpZ2h0IHtcbiAgICA5OSUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gICAgfVxufVxuIiwiLmFjY29yZGlvbi10b2dnbGUge1xuICBkaXNwbGF5Om5vbmU7XG59XG5cbi5qcyB7XG4gIC5hY2NvcmRpb24tdG9nZ2xlIHtcbiAgICBib3JkZXI6bm9uZTtcbiAgICBiYWNrZ3JvdW5kOm5vbmU7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiRyZWQ7XG4gICAgZm9udC1zaXplOjEuMjVlbTtcbiAgICBmb250LXdlaWdodDo3MDA7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgcGFkZGluZy1ib3R0b206JHYtcmh5dGhtLzM7XG4gICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgKiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTouMTI1ZW0gc29saWQgJG1lZEdyYXk7XG4gICAgfVxuICAgIHN2ZyB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi10b3A6LS4xNWVtO1xuICAgICAgaGVpZ2h0Oi43NWVtO1xuICAgICAgd2lkdGg6Ljc1ZW07XG4gICAgICBmaWxsOiRyZWQ7XG4gICAgfVxuICAgIC52ZXJ0aWNhbCB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSwgLjI1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46Y2VudGVyO1xuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAudmVydGljYWwge1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZVkoMCk7IFxuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMCk7XG4gICAgIH1cbiAgICB9XG4gIH1cbiAgLmFjY29yZGlvbi1jb250ZW50IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gICAgJi5vcGVuIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgfVxuICB9XG59IiwiLmZpbHRlcnMge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgYmFja2dyb3VuZDojZDBkYmVkO1xuICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBmaWVsZHNldCB7XG4gICAgcGFkZGluZzowO1xuICAgIG1hcmdpbjowO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGJvcmRlcjpub25lO1xuICAgIGlucHV0W3R5cGU9J3JhZGlvJ10ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTk5OTlweDtcbiAgICAgICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgICAmOmZvY3VzICsgbGFiZWwge1xuICAgICAgICBib3JkZXI6LjEyNWVtIHNvbGlkICR5ZWxsb3c7XG4gICAgICB9XG4gICAgfVxuICAgIGxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgICAgcGFkZGluZzouMmVtIDEuNWVtO1xuICAgICAgZm9udC13ZWlnaHQ6NzAwO1xuICAgICAgY29sb3I6JGNvcm5mbG93ZXI7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOjEuMjVlbSAwIDAgMS4yNWVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czowIDEuMjVlbSAxLjI1ZW0gMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OjEuMTVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICB3aWR0aDoxMi44MTI1ZW07XG4gICAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAgIGZvbnQtc2l6ZTozLjg1dnc7XG4gICAgfVxuICB9XG5cbiAgLmxhYmVsIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjojNDM0MzQzO1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgbWFyZ2luLXJpZ2h0OiR2LXJoeXRobS80OyAgICAgIFxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjsgIFxuICAgIH1cbiAgfVxuXG4gIC5zdHlsZWQtc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kOndoaXRlO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgd2hpdGU7XG4gICAgJi5mb2N1c2VkIHtcbiAgICAgIGJvcmRlcjouMTI1ZW0gc29saWQgJHllbGxvdztcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6JHllbGxvdyAkeWVsbG93ICR5ZWxsb3cgJGNvcm5mbG93ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOi0uMTI1ZW07XG4gICAgICByaWdodDotLjEyNWVtO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlkWFJtTFRnaVB6NDhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElpQjJhV1YzUW05NFBTSXdJREFnTkRBZ05EQWlJSE4wZVd4bFBTSmxibUZpYkdVdFltRmphMmR5YjNWdVpEcHVaWGNnTUNBd0lEUXdJRFF3T3lJZ2VHMXNPbk53WVdObFBTSndjbVZ6WlhKMlpTSStQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0dWMzUXdlMlpwYkd3Nkl6UTROekpDTkR0OUxuTjBNWHRtYVd4c09pTkdSa1pHUmtZN2ZUd3ZjM1I1YkdVK1BISmxZM1FnWTJ4aGMzTTlJbk4wTUNJZ2QybGtkR2c5SWpRd0lpQm9aV2xuYUhROUlqUXdJaTgrUEhCaGRHZ2dZMnhoYzNNOUluTjBNU0lnWkQwaVRURXlMak1zTVRkc055NDNMRGN1TjJ3M0xqY3ROeTQzYkMweExqY3RNUzQ0YkMwMUxqa3NObXd0TlM0NUxUWk1NVEl1TXl3eE4zb2lMejQ4TDNOMlp6ND0pO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjokY29ybmZsb3dlcjtcbiAgICAgIGhlaWdodDpjYWxjKDEwMCUgKyAuMjVlbSk7XG4gICAgICB3aWR0aDoyLjQ5ZW07XG4gICAgICBwb2ludGVyLWV2ZW50czpub25lO1xuICAgICAgYm9yZGVyOi4xMjVlbSBzb2xpZCAkY29ybmZsb3dlcjtcbiAgICAgIGJvcmRlci1sZWZ0Om5vbmU7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlcihmYWxzZSwgdHJ1ZSk7XG4gICAgICByaWdodDowO1xuICAgICAgY29udGVudDonJztcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGhlaWdodDoxMDAlOyAgXG4gICAgICB3aWR0aDo1LjI1ZW0gXFw5O1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBtYXJnaW46MDtcbiAgICAgIG1hcmdpbi1yaWdodDokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6JHYtcmh5dGhtO1xuICAgIH0gICAgXG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmc6LjJlbSAuNzVlbSAuMTllbSAuNzVlbTtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIGZvbnQtd2VpZ2h0OjcwMDtcbiAgICBjb2xvcjokY29ybmZsb3dlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOjA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZDpub25lO1xuICAgIHBhZGRpbmctcmlnaHQ6NGVtO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICB9XG4gIFxuICAvKiBDQVVUSU9OOiBJRSBoYWNrZXJ5IGFoZWFkICovXG4gIHNlbGVjdDo6LW1zLWV4cGFuZCB7IFxuICAgIGRpc3BsYXk6IG5vbmU7IC8qIHJlbW92ZSBkZWZhdWx0IGFycm93IG9uIGllMTAgYW5kIGllMTEgKi9cbiAgfVxuXG4gIC5zb3J0aW5nIHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB3aWR0aDoxMDAlO1xuICAgIC5zdHlsZWQtc2VsZWN0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIHdpZHRoOmluaGVyaXQ7XG4gICAgICBmbG9hdDpyaWdodDtcbiAgICB9XG4gIH1cbiAgXG4gIC5zdWJtaXQge1xuICAgIGNsZWFyOmJvdGg7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgaW5wdXRbdHlwZT0nc3VibWl0J10ge1xuICAgICAgcGFkZGluZzouMjVlbSAuNWVtO1xuICAgIH1cbiAgfVxuICBcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgZm9ybSB7XG4gICAgICAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBmb250LXNpemU6MS4wNjI1ZW07XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tamItbWluLCAkbWFwLWxnKSB7XG4gICAgZm9udC1zaXplOjEuMTI1ZW07XG4gIH1cbn1cblxuXG4vLyBsb2FkaW5nXG4uZmlsdGVyLXRhcmdldCB7XG4gICYubG9hZGluZyB7XG4gICAgQGluY2x1ZGUgYW5pbWF0ZWQoLjM1cyk7XG4gICAgQGluY2x1ZGUgZmFkZUluOyBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3BhY2l0eTowO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6J0xvYWRpbmcuLi4nO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDoxMDAlO1xuICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHRvcDowO1xuICAgICAgbGVmdDowO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbiAgICAgIGNvbG9yOiM0MzQzNDM7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIGZvbnQtc2l6ZToxLjI1ZW07XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobTtcbiAgICAgIHotaW5kZXg6OTtcbiAgICAgIG9wYWNpdHk6MTtcbiAgICB9XG4gIH1cbiAgJi5sb2FkZWQge1xuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKC41cyk7XG4gICAgICBAaW5jbHVkZSBzbGlkZUluVXA7XG4gICAgfVxuICB9XG59XG5cbi8vIHJlbW92ZSBzdWJtaXQgd2hlbiBqYXZhc2NyaXB0IGlzIGVuYWJsZWRcbi5qcyB7XG4gIC5maWx0ZXJzIHtcbiAgICBzZWxlY3Qge1xuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnN1Ym1pdCB7XG4gICAgICBkaXNwbGF5Om5vbmUgXG4gICAgfVxuICB9XG59IiwiLnJlbGF0ZWQtZmlsbXMge1xuICBtYXJnaW46JHYtcmh5dGhtKjIgMDtcbiAgaW1nIHtcbiAgICB3aWR0aDoxMDAlO1xuICB9XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMSBvZiAyKTtcbiAgICAgIG1hcmdpbi1ib3R0b206Z3V0dGVyKCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgbGkge1xuICAgICAgICBAaW5jbHVkZSBnYWxsZXJ5KDEuMzMpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgZ2FsbGVyeSgyLjY2NiBvZiA4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTpndXR0ZXIoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBsaSB7XG4gICAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi40IG9mIDEyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIuZW1haWwtc2lnbnVwLWZvcm0ge1xuICBpbnB1dCwgYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBTbGFiJywgc2VyaWY7XG4gICAgcGFkZGluZzokdi1yaHl0aG0vMiAkdi1yaHl0aG07XG4gIH1cbiAgLmVtYWlsLWZpZWxkIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgd2lkdGg6MTAwJTtcbiAgICBib3JkZXI6MXB4IHNvbGlkICRncmF5O1xuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuICB9XG4gIC56aXAtY29kZS1maWVsZCB7XG4gICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgIHdpZHRoOjEwMCU7XG4gICAgIGJvcmRlcjoxcHggc29saWQgJGdyYXk7XG4gICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbiAgLm5vdGUge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgd2lkdGg6MTAwJTtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICBmb250LXNpemU6Ljg1ZW07XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgfVxuICBidXR0b25bdHlwZT0nc3VibWl0J10ge1xuICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICBAaW5jbHVkZSBidXR0b24oJG5hdnksIHdoaXRlKTtcbiAgICBAaW5jbHVkZSBhcnJvdy1idXR0b24od2hpdGUpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCwgLjNzLCBlYXNlLWluLW91dCk7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgIHdpZHRoOjllbTtcbiAgICB6LWluZGV4OjI7XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOmRhcmtlbigkbmF2eSwgNSUpO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OicnO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6MTAwJTtcbiAgICAgIGhlaWdodDoxMDAlO1xuICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIHotaW5kZXg6LTE7XG4gICAgICBAaW5jbHVkZSBsb25nLXNoYWRvdyhib3gsICRuYXZ5LCAyMDAsIGZhbHNlLCBmYWxzZSwgcmlnaHQpO1xuICAgICAgb3BhY2l0eTouMzU7XG4gICAgfVxuICB9XG59IiwiLy8gSG9tZSBQYWdlIEhlcm8gQ29tcG9uZW50XG4uaG9tZXBhZ2UtaGVyby1pdGVtIHtcbiAgIG1hcmdpbi10b3A6JHYtcmh5dGhtO1xuICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gIC8vIGFsbCBjb250ZW50IGluc2lkZSBpcyBkeW5hbWljLiB0aGVyZSBpcyBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXB0eVxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgaW1nIHtcbiAgICBkaXNwbGF5OmJsb2NrO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgJi5ibGFja0FuZFdoaXRlIHtcbiAgICAgIC13ZWJraXQtZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICAgICAgICAgICAgZmlsdGVyOmdyYXlzY2FsZSgxKTtcbiAgICB9XG4gIH1cbiAgLnRpdGxlIHtcbiAgICBwYWRkaW5nOiR2LXJoeXRobS8yICR2LXJoeXRobTtcbiAgICBiYWNrZ3JvdW5kOiNhYzBiMGU7XG4gICAgY29sb3I6d2hpdGU7XG4gICAgZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50O1xuICAgIC56ZXRhIHtcbiAgICAgIGNvbG9yOndoaXRlO1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIH1cbiAgICAmLnJpZ2h0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5sZWZ0IHtcbiAgICAgIG1hcmdpbi1yaWdodDowICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5hbHBoYSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gICAgICBmb250LWZhbWlseTogJ0pvc2VmaW4gU2FucycsIHNhbnMtc2VyaWY7XG4gICAgICBjb2xvcjp3aGl0ZTtcbiAgICAgIGZvbnQtc2l6ZToyZW07XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICBsaW5lLWhlaWdodDoxLjI7XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLndhdGNoIHtcbiAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIC4wNjI1ZW0sIHdoaXRlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zcywgZWFzZS1pbi1vdXQpO1xuICAgIEBpbmNsdWRlIGFycm93LWJ1dHRvbih3aGl0ZSk7XG4gICAgJi56ZXRhIHtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZm9udC1zaXplOjFlbTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC41KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgLnRpdGxlIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNCk7XG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgIGxlZnQ6MDtcbiAgICAgIGJvdHRvbToxNSU7XG4gICAgICBwYWRkaW5nOiR2LXJoeXRobSAkdi1yaHl0aG0qMjtcbiAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgICYubGVmdCB7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICB9XG4gICAgICAmLnJpZ2h0IHtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OjA7XG4gICAgICAgIGxlZnQ6aW5oZXJpdDtcbiAgICAgIH1cbiAgICAgIC5hbHBoYSB7XG4gICAgICAgIGZvbnQtc2l6ZTozZW07XG4gICAgICB9XG4gICAgICAqIHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6MztcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOnJnYmEod2hpdGUsIC4yKTtcbiAgICAgICAgfVxuICAgICAgICB6LWluZGV4OjE7XG4gICAgICB9XG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6cmdiYShibGFjaywgLjYpO1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OjEwMCU7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHRvcDowO1xuICAgICAgICBsZWZ0OjA7XG4gICAgICAgIEBzdXBwb3J0cyhtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOigjZDkwMDAyKTtcbiAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgIH1cbiAgICAgICAgei1pbmRleDoyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn0iLCIvLyBkZWZhdWx0IHBhZ2luYXRpb25cbi5wYWdpbmF0aW9uIHtcbiAgbWFyZ2luOiR2LXJoeXRobSoyIDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICAubG9hZC1tb3JlIHtcbiAgICBkaXNwbGF5Om5vbmU7XG4gIH1cbiAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICBtYXJnaW46JHYtcmh5dGhtKjMgMDtcbiAgICAudGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gYWpheCBwYWdpbmF0aW9uXG4uanMge1xuICAucGFnaW5hdGlvbiB7XG4gICAgLmxvYWQtbW9yZSB7XG4gICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbigkcmVkLCB3aGl0ZSk7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQsIC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiRjcmltc29uO1xuICAgICAgfVxuICAgIH1cbiAgICAucGFnZS1udW1iZXJzIHtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLm5vLXJlc3VsdHMge1xuICBmb250LXdlaWdodDo3MDA7XG4gIHRleHQtYWxpZ246Y2VudGVyO1xuICBmb250LXdlaWdodDoxLjI1ZW07XG4gIHBhZGRpbmc6JHYtcmh5dGhtO1xuICBjb2xvcjojNDM0MzQzO1xuICAmLmVycm9yIHtcbiAgICBjb2xvcjokcmVkO1xuICAgIGIge1xuICAgICAgZGlzcGxheTpibG9jaztcbiAgICB9XG4gIH1cbn1cblxuLmFwcGVuZGVkLWl0ZW0ge1xuICBAaW5jbHVkZSBhbmltYXRlZCguNXMpO1xuICBAaW5jbHVkZSBzbGlkZUluVXA7XG59XG4iLCIvLyBWb3RlIEdpdmVhd2F5XG4ubW9kdWxhci1zaWdudXAge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAzMHB4IDA7XG5cbiAgICAuZm9ybS1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IHJvdztcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBtYXJnaW46IDIwcHggMDtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5ub2ZsZXgge1xuICAgICAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnBvdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgXCJUcmVidWNoZXQgTVNcIjtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgY29sb3I6ICRncmF5O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllOWU5O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmhhbGYge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnNob3J0IHtcbiAgICAgICAgICAgIHdpZHRoOiAzNSU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5uZXdzbGV0dGVyLWNoZWNrYm94IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1Ym1pdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRyZWQ7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90byBTbGFiXCIsIHNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAjZTllOWU5O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLWluLW91dDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjcmltc29uO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgICAgICByaWdodDogMWVtO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDFlbTtcbiAgICAgICAgICAgIGhlaWdodDogMWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBmb250LWZhbWlseTogXCJNdWxpXCIsIFwiVHJlYnVjaGV0IE1TXCI7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICB9XG59XG5cbi8vIElubGluZSBFbWFpbCBTaWdudXBcbi5pbmxpbmUtZW1haWwtc2lnbnVwIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvYmctdHJpYW5nbGUtbmV3c2xldHRlci5wbmdcIik7XG4gICAgbWFyZ2luOiA1NXB4IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDMwcHg7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgbWFyZ2luOiAyNXB4IDA7XG4gICAgfVxuXG4gICAgLm5vdGUge1xuICAgICAgICAvLyBmbGV4IGJveCBvdmVyaWRlIGZvciBzb3VyY2Ugb3JkZXIgaW4gY29ubmVjdCBzZWN0aW9uXG4gICAgICAgIC13ZWJraXQtYm94LW9yZGluYWwtZ3JvdXA6IDI7XG4gICAgICAgIC1tcy1mbGV4LW9yZGVyOiAxO1xuICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuXG4gICAgLmhlYWRsaW5lIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAgMTAlO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZW1haWwtc2lnbnVwLWZvcm0ge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwJTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG5cbiAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMSU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiA0NSU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2NTBweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgICAgICAgICAgd2lkdGg6IDI0JTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDY1MHB4KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgIHdpZHRoOiA3NSU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuZmlsbS1saXN0aW5ncyB7XG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH0gICAgXG4gICAgfVxuICB9XG4gIC5pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDEuNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDYgZmlyc3QpO1xuICAgIH0gICAgXG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIC56ZXRhIHtcbiAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICBtYXJnaW4tdG9wOiR2LXJoeXRobS80O1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgcCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobS8yO1xuICAgIH1cbiAgICAucGFydHMge1xuICAgICAgY29sb3I6JGdyYXk7XG4gICAgICBmb250LXdlaWdodDo3MDA7XG4gICAgICBhIHtcbiAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDonfCc7XG4gICAgICAgICAgICBjb2xvcjokbWVkR3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OjQwMDtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6LjQzNzVlbTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDouMzEyNWVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH1cbiAgICB9ICBcbiAgfVxufSIsIi8vIGZpbG0gRGV0YWlsIEhlcm8gQ29tcG9uZW50XG4uZmlsbS1kZXRhaWwtaGVyby1pdGVtIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtICogMjtcblxuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAubXA0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmhlcm8ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogNTYlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnV0dG9uLnBsYXktcGF1c2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2J1dHRvbl92aWRlb19wbGF5LnBuZykgbm8tcmVwZWF0IDAgMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM0cHggNjhweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzU7XG5cbiAgICAgICAgICAgICAgICAmLnBhdXNlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTM0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogJHYtcmh5dGhtLzIgJHYtcmh5dGhtIDFlbSAkdi1yaHl0aG07XG4gICAgICAgIGJhY2tncm91bmQ6ICNhYzBiMGU7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICAmLnJpZ2h0IHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgJi5sZWZ0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIC5hbHBoYSB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiSm9zZWZpbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMC4yNWVtO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnpldGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnVuZGVybGluZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDR2dztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgLnpldGEge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnVuZGVybGluZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMC41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3ZlcmxheSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM3Z3O1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAud2F0Y2gtbGluayB7XG4gICAgICAgIEBpbmNsdWRlIGxpbmstcmVzZXQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGZvbnQtc2l6ZTogM3Z3O1xuICAgICAgICAuYWxwaGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb2xvciwgMC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAudGl0bGUtY29weSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDJlbSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDAuMTI1ZW07XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgwKTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBsYXktaWNvbiB7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMS4yNWVtO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMS4yNWVtO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgICAgICAgICAgICAgIHBhdGgge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIDAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC50aXRsZS1jb3B5IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IDE1JTtcbiAgICAgICAgICAgIHBhZGRpbmc6ICR2LXJoeXRobSAkdi1yaHl0aG0gKiAxLjI1O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgICYubGVmdCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUpO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5yaWdodCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0LjUgbGFzdCk7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMC4yNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmFscGhhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIEBzdXBwb3J0cyAobWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIDAuMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYShibGFjaywgMC42KTtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgQHN1cHBvcnRzIChtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogKCNkOTAwMDIpO1xuICAgICAgICAgICAgICAgICAgICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICAmLmxlZnQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSk7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYucmlnaHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNS43NSBsYXN0KTtcbiAgICAgICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICAgICYubGVmdCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYucmlnaHQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNSBsYXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzcGFjaW5nIGFkanVzdG1lbnRzIGRlcGVuZGluZyBvbiBwcmVzZW5jZSBvZiBjb250ZW50XG4gICAgLndhdGNoLWxpbmsgKyAuemV0YSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgIH1cbiAgICAudGl0bGUtY29weSArIC56ZXRhIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgfVxuICAgIC56ZXRhICsgLndhdGNoLWxpbmsge1xuICAgICAgICAuYWxwaGEge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGJhc2Ugc3R5bGluZyBmb3IgZmlsbSBkZXRhaWwgbmF2IGZvciB0YWJzIGFuZCBjb3ZlIGxpbmtzXG4uZmlsbS1zdWItbmF2IHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBiYWNrZ3JvdW5kOiAkYmx1ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjNzLCBlYXNlLWluLW91dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgIGEge1xuICAgICAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0gKiAyO1xuICAgIH1cbn1cbi8vIGhpZGUgamF2YXNjcmlwdCBkZXBlbmRlbnQgcGFydHNcbi5maWxtLXBhcnRzLFxuLnRhYi1tb2JpbGUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBkZXNrdG9wIGxheW91dCBmb3IgZmlsbSBzdWIgbmF2aWdhdGlvbnNcbi5maWxtLXBhcnRzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICAgIH1cbn1cblxuLmluZm8tdGFicyB7XG4gICAgLnRhYi1saW5rIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgIHBhZGRpbmc6IDAuNTYyNWVtIDFlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGRhcmtCbHVlO1xuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkYXJrQmx1ZTtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgLnRhYi1saXN0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMS4zZW0gMS41ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDkgZmlyc3QpO1xuICAgIH1cbn1cblxuLy8gdGFiIGNvbnRlbnQgZGVmYXVsdFxuLnRhYi1wYW5lbCB7XG4gICAgLnRhYi1wYW5lbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTtcbiAgICB9XG4gICAgLnBhcnQtY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDNlbTtcbiAgICB9XG5cbiAgICAuYmlvIHtcbiAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3NXZ3O1xuICAgICAgICAgICAgICAgIHdpZHRoOiA3NXZ3O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMGVtO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZmlndXJlLFxuICAgICAgICAgICAgLmJpby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEyLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMi41ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmJpby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNjUlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7XG4gICAgICAgICAgICAgICAgZmlndXJlLFxuICAgICAgICAgICAgICAgIC5iaW8tY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIuNWZyIDRmcjtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIGZpZ3VyZSB7XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNWVtO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwZW07XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjBlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucGRmLWxpbmtzIHtcbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnBhcnQtZG93bmxvYWQge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcInxcIjtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRtZWRHcmF5O1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjQzNzVlbTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjMxMjVlbTtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNpbmdsZS1kb3dubG9hZCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyk7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig2KTtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBtYXgtd2lkdGg6IDY1LjI1ZW07XG4gICAgfVxufVxuXG4ucmVsYXRlZC1mZWF0dXJlLWxpc3Qge1xuICAgIC5maWx0ZXJzIHtcbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtNC4xODc1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9ybSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmaWVsZHNldCBsYWJlbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1LjMxMjVlbSkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxLjI1ZW0gMCAwIDEuMjVlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuMTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDEuMjVlbSAxLjI1ZW0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS4xNWVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTBlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMy43NWVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNC44NXZ3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gZW5oYW5jZWQgdmVyc2lvbnMgb2YgZmlsbSBzdWJuYXZzIGFuZCB0YWIgY29udGVudFxuLmpzIHtcbiAgICAvLyBhbGwgY292ZSBzdHVmZiBpcyBqYXZhc2NyaXB0IGRlcGVuZGVudCBzbyBvbmx5IHNob3cgaXQgaWZcbiAgICAvLyBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAgIC5maWxtLXBhcnRzIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC5wYXJ0LXNlbGVjdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4xMjVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICBtYXJnaW46IDAuMjVlbSAwLjNlbTtcbiAgICAgICAgLmluc3RydWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIGhlaWdodDogMy44MTc1ZW07XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBib3JkZXI6IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVlbSAxZW07XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgY29sb3I6ICRjaGFyY29hbDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIC5wYXJ0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMWVtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc3N2VtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDFlbTtcbiAgICAgICAgICAgICAgICByaWdodDogMWVtO1xuICAgICAgICAgICAgICAgIGZpbGw6ICRtZWRHcmF5O1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAyMi41JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZpbG0tcGFydHMtbGFyZ2Uge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgMC4zNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgcGFkZGluZzogMC4yNWVtIDAuMzVlbTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogNC4wNWVtO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDIwZW07XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVlbSAxZW07XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGNvbG9yOiAkY2hhcmNvYWw7XG4gICAgICAgICAgICBib3JkZXI6IDAuMDYyNWVtIHNvbGlkICRtZWRHcmF5O1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjc3N2VtO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29ybmZsb3dlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkb3ZlO1xuICAgICAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRkb3ZlO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb3JuZmxvd2VyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgICAmOm5vdCg6bGFzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgdG9wOiA0LjM1ZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1ZW0gMC4zNWVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC50YWItbW9iaWxlLXRvZ2dsZSB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1idXR0b24od2hpdGUsIDAuMDYyNWVtLCB3aGl0ZSk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBoZWlnaHQ6IDMuODE3NWVtO1xuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMC42NWVtKTtcbiAgICAgICAgbWFyZ2luOiAwLjNlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjEyNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAmLm11dGlwbGUtZXBpc29kZXMge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAuM2VtIDAuM2VtIDAuM2VtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjE1ZW07XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cyxcbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgYm9yZGVyOiAwLjA2MjVlbSBzb2xpZCAwLjA2MjVlbTtcbiAgICAgICAgfVxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2VudGVyKGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDFlbTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMWVtO1xuICAgICAgICAgICAgcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDIyLjUlO1xuICAgICAgICB9XG4gICAgICAgICYuY2xvc2Utc3RhdGUge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbmZvLXRhYnMge1xuICAgICAgICAudGFiLWxpc3QubWVudSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuMzVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICAmLm9wZW4ge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogMjBlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyB0YWIgY29udGVudFxuICAgIC50YWItcGFuZWwge1xuICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjVzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAmLmRlZmF1bHQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgJi5vcGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmFkZUluO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA2NS4yNWVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZmlsbS1zaG9wLWxpbmtzIHtcbiAgICBtYXJnaW46ICR2LXJoeXRobSAqIDIuNSAwO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogNi4yNWVtO1xuICAgIH1cbiAgICAqIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5maWxtLWZ1bmRlcnMge1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDIuNTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgKiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTBlbTtcbiAgICB9XG4gICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgICAgICAmOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxufVxuXG4uZmlsbS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAucGFzc3BvcnQtaWNvbiB7XG4gICAgICAgIG1heC13aWR0aDogMS4xNWVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxLjE1ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVlbTtcbiAgICB9XG59XG5cbi5wcmVtaWVyZS1kYXRlIHtcbiAgICBjb2xvcjogJGNvcm5mbG93ZXI7XG59XG5cbi50YWdsaW5lIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgIGNvbG9yOiAkbWVkR3JheTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuIiwiLmZlYXR1cmUtbGlzdGluZ3Mge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLmZlYXR1cmUtbGlzdCB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0qMjtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNjYpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1LjMyKTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUuMzIpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgICAgJjpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg1KXtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNikge1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoNykge1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSg4KSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIG1hcmdpbi1yaWdodDpndXR0ZXIoKTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoOSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdDtcbiAgICAgICAgY2xlYXI6Ym90aDtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTApIHtcbiAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgICY6bnRoLW9mLXR5cGUoMTEpIHtcbiAgICAgICAgQGluY2x1ZGUgZmlyc3Q7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEyKSB7XG4gICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDEzKSB7XG4gICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgIGNsZWFyOm5vbmU7XG4gICAgICB9XG4gICAgICAmOm50aC1vZi10eXBlKDE0KSB7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0O1xuICAgICAgICBjbGVhcjpib3RoO1xuICAgICAgfVxuICAgICAgJjpudGgtb2YtdHlwZSgxNSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgICBAaW5jbHVkZSBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmZlYXR1cmVzLXBhZ2luYXRlZCB7XG4gIGxpIHtcbiAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoMi42Nik7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIGdhbGxlcnkoNCk7XG4gICAgfVxuICB9XG59IiwiLmZlYXR1cmUge1xuICAgIC5vdmVybGluZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAuemV0YSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICArIGg0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0wLjY1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0NWVtO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIH1cbiAgICAgICAgLmludHJvIHtcbiAgICAgICAgICAgIG1hcmdpbjogJHYtcmh5dGhtLzEuNSAwIDAgMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICB9XG4gICAgICAgIC5ieWxpbmUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgICAgICAgICAgY29sb3I6ICRncmF5O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAmICsgLnNvY2lhbC1zaGFyaW5nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG0vMjtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtICogMS4yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICR2LXJoeXRobSAqIDEuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgLy8gaGlkZSBmb3Igbm9uZSBqYXZhc2NyaXB0IGNwYWJsZSBicm93c2Vyc1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG07XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMDE1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuOTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjFlbTtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2VhYTcwMDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgLmNvbG9yIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5mYWNlYm9vayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjNDA3M2I3O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC50d2l0dGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICMyOGE5ZTA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm1haWx0byB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjOGRiNzI5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5jb3B5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICNlYWE3MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig1IGZpcnN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oOC41IGZpcnN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3BhbigzLjUgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubXA0LXdyYXBwZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG5cbiAgICAgICAgLmhlcm8ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogNTYlO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnV0dG9uLnBsYXktcGF1c2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1hZ2VzL2J1dHRvbl92aWRlb19wbGF5LnBuZykgbm8tcmVwZWF0IDAgMDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDM0cHggNjhweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzU7XG5cbiAgICAgICAgICAgICAgICAmLnBhdXNlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTM0cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcHRpb24td3JhcHBlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdGV4dCBibG9jayBzdHlsaW5nXG4gICAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogNDQuNTMxMjVlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICAgIC8vIG1lZGlhIGVsZW1lbnQgc3R1ZmZzIGZvciBmZWF0dXJlcyBvbmx5XG4gICAgLmNlbnRlciB7XG4gICAgICAgICYubGFyZ2UtbWVkaWEge1xuICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1Ny44MTI1ZW0pIHtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1Ny44MTI1ZW07XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtNi42NDA2MjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJpZ2h0IHtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAmLm1lZGl1bS1tZWRpYSB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGVmdCB7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgJi5tZWRpdW0tbWVkaWEge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmpzIHtcbiAgICAuZmVhdHVyZSB7XG4gICAgICAgIC5vdmVybGluZSB7XG4gICAgICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNvcHktdXJsLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgIHRvcDogLTZlbTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTVlbTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMTBlbTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgICAgICYub3BlbiB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLjY1ZW07XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjI0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDdlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFkZGluZyBhbmQgbWFyZ2luIGFkanVzdG1lbnRzXG4gICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAmLmRlc2t0b3Age1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgJHYtcmh5dGhtIDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0kdi1yaHl0aG07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNvbGxlY3Rpb24tcGFnZSB7XG4gICAgLmNvbGxlY3Rpb24tZGV0YWlsLWhlcm8taXRlbSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDI7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2xsZWN0aW9uLXNlY3Rpb24ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDJlbSAwO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAmLm5vX3RpdGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICB3aWR0aDogMTAwdnc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiBjYWxjKC0xMDB2dyAvIDIgKyA1MCUpO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgICYud2hpdGU6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmY7XG4gICAgICAgIH1cblxuICAgICAgICAmLmdyZXk6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjcsIDIyNywgMjI3LCAwLjc1KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9iZy1kZWNvLWNpcmNsZS5wbmdcIik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDE4ZW0gMThlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi5ncmlkIHtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uZmVhdHVyZS1mdWxsLXdpZHRoIHtcbiAgICB3aWR0aDogNTAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGZsb2F0OiBub25lO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDcwMHB4O1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG5cbiAgICAmLmFsdCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQ1cHg7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICAmOm5vdCgud2hpdGUpIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNDM0MzQzICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50O1xuICAgICAgICBsaW5lLWhlaWdodDogMzRweCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5vdmVybGluZSB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuXG4gICAgICAgICYuZmxhdCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAuemV0YSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICArIGg0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0wLjY1ZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaW50cm8tY29udGVudCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDQ1ZW07XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbnRybyB7XG4gICAgICAgICAgICBtYXJnaW46ICR2LXJoeXRobS8xLjUgMCAwIDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMzc1ZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYnlsaW5lIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgJiArIC5zb2NpYWwtc2hhcmluZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtLzI7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR2LXJoeXRobSAqIDEuMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkdi1yaHl0aG0gKiAxLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgLy8gaGlkZSBmb3Igbm9uLWphdmFzY3JpcHQgY2FwYWJsZSBicm93c2Vyc1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGNvbG9yOiAkZ3JheTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkdi1yaHl0aG07XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuMDE1ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuOTVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjk1ZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjFlbTtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4yNWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuY29weS11cmwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2VhYTcwMDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOTVlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMWVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgLmNvbG9yIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5mYWNlYm9vayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjNDA3M2I3O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC50d2l0dGVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICMyOGE5ZTA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLm1haWx0byB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAjOGRiNzI5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5jb3B5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICNlYWE3MDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgLmludHJvLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDUgZmlyc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmFkLWJsb2NrIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIC5pbnRyby1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDguNSBmaXJzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWQtYmxvY2sge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMy41IGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGV4dCBibG9jayBzdHlsaW5nXG4gICAgLmZlYXR1cmUtY29udGVudCB7XG4gICAgICAgIG1heC13aWR0aDogNDQuNTMxMjVlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuXG4gICAgcCArIGZpZ3VyZS5mdWxsLXdpZHRoIHtcbiAgICAgICAgbWFyZ2luOiA1NXB4IGF1dG8gMzVweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIEltYWdlXG4gICAgZmlndXJlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgJi5mdWxsLXdpZHRoIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmxlZnQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnJpZ2h0IHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0xMDB2dyAvIDIgKyA1MCUpO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTEwMHZ3IC8gMiArIDUwJSk7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTAwdncgLyAyICsgNTUlKTtcblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDk1dnc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW1nOm5vdCguY3JvcHBlZCkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZpZ2NhcHRpb24ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG5cbiAgICAgICAgICAgICYuY3JvcHBlZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlkZW9cbiAgICAuY292ZS13cmFwcGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIHdpZHRoOiAyMDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNjAwcHggKyA1MCUpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDM1cHg7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAzNXB4IGF1dG87XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gR2FsbGVyeVxuICAgIC5jYXJvdXNlbC1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC02MDBweCArIDUwJSk7XG4gICAgICAgIG1hcmdpbi10b3A6IDU1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDU1cHg7XG5cbiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgZmlndXJlIGltZyxcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cblxuICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgIC5jYXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jcmVkaXQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAzMHB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogM3B4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2ljb24tY2FtZXJhLnN2Zykgbm8tcmVwZWF0IGxlZnQgdG9wO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUXVvdGVcbiAgICBxIHtcbiAgICAgICAgbWFyZ2luOiA1NXB4IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogOTUlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6ICRibHVlO1xuICAgICAgICBmb250LWZhbWlseTogXCJSb2JvdG8gU2xhYlwiLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDU3NXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgbWFyZ2luOiAyNXB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICBjb250ZW50OiAnXCInO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICBsZWZ0OiB1bnNldDtcbiAgICAgICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgICAgIHRvcDogdW5zZXQ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWFsdGVkIEZlYXR1cmVzIE1vZHVsZVxuICAgIC5yZWxhdGVkLWZlYXR1cmVzLWJsb2NrIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tdG9wOiA1NXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1NXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtOTc1cHggLyAyICsgNTAlKTtcbiAgICAgICAgbWF4LXdpZHRoOiA5NzVweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDI1cHg7XG4gICAgICAgIHdpZHRoOiAxMDB2dztcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTc1cHgpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDNweCBzb2xpZCAjZTZlNmU2O1xuICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgIH1cblxuICAgICAgICBoMy5oZWFkaW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDIycHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNlNmU2ZTY7XG4gICAgICAgICAgICAgICAgdG9wOiAtOHB4O1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdWwubGlzdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtZXZlbmx5O1xuICAgICAgICAgICAgZmxleC1mbG93OiByb3c7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk3NXB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDk3NXB4KSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyN3B4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5NzVweCkge1xuICAgICAgICAgICAgICAgICAgICAmOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI3cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZWxhdGVkLWl0ZW0ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pbWFnZSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcblxuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGEudGh1bWJuYWlsLWltYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIyNHB4O1xuICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMjZweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuXG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDU2LjY1JTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgICAgIC50eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90byBTbGFiXCIsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzc3Nzc3NztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAudGl0bGUtbGluayB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC50ZXh0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiTXVsaVwiLCBzYW5zLXNlcmlmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hYm91dC1jb2xsZWN0aW9uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDcyNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7XG4gICAgcGFkZGluZzogMzBweCAzNXB4O1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDgwcHg7XG4gICAgfVxuXG4gICAgLmhlYWRpbmcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIGNvbG9yOiAjNzc3O1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRyZWQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY3JpbXNvbjtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWJvdXQtZGV0YWlscyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiA0MCU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDIyNHB4O1xuXG4gICAgICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDMwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vL0Z1bGwgV2lkdGggSGVyb1xuXG4uZnVsbC13aWR0aC1pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgbWF4LWhlaWdodDogNzg1cHg7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHotaW5kZXg6IC0xO1xuXG4gICAgLm1wNC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA3ODVweDtcblxuICAgICAgICAuaGVybyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDc4NXB4O1xuXG4gICAgICAgICAgICB2aWRlbyB7XG4gICAgICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDc4NXB4O1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTM2NnB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBidXR0b24ucGxheS1wYXVzZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWFnZXMvYnV0dG9uX3ZpZGVvX3BsYXkucG5nKSBuby1yZXBlYXQgMCAwO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzRweCA2OHB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDEwcHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zNTtcblxuICAgICAgICAgICAgICAgICYucGF1c2VkIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMzRweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY2FwdGlvbi13cmFwcGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTM2NnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaWd1cmUge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAmLmNlbnRlciB7XG4gICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5sZWZ0IHtcbiAgICAgICAgICAgIC5tZWRpYS1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5yaWdodCB7XG4gICAgICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubWVkaWEtY29udGFpbmVyIHtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBoZWlnaHQ6IDc4NXB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUxMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIH1cblxuICAgICAgICBmaWdjYXB0aW9uIHtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTUlO1xuICAgICAgICAgICAgbWFyZ2luOiAyMHB4IDAgMCAyJTtcblxuICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTUlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzcGFuLmRlc2Mge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMCAwIDMwcHggIWltcG9ydGFudDtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA5cHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvaWNvbi1jYW1lcmEuc3ZnKSBuby1yZXBlYXQgbGVmdCB0b3A7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5qcyB7XG4gICAgLmZlYXR1cmUtZnVsbC13aWR0aCB7XG4gICAgICAgIC5vdmVybGluZSB7XG4gICAgICAgICAgICAmLmZsYXQ6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc29jaWFsLXNoYXJpbmcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNvcHktdXJsLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAwLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgICAgIHRvcDogLTZlbTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTVlbTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMTBlbTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgICAgICAgICAgICYub3BlbiB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDFlbTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLjY1ZW07XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxLjI0ZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjRlbTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDdlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFkZGluZyBhbmQgbWFyZ2luIGFkanVzdG1lbnRzXG4gICAgICAgIC5hZC1ibG9jayB7XG4gICAgICAgICAgICAmLm9wZW4ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2JlYmViZTtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JlYmViZTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDc1cHggMDtcblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDI1cHggMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYub3BlbjpiZWZvcmUsXG4gICAgICAgICAgICAmLm9wZW46YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuc2VhcmNoLXJlc3VsdHMge1xuICB1bCB7XG4gICAgQGluY2x1ZGUgcGxhaW4tbGlzdDtcbiAgICBsaSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICB9ICAgIFxuICAgIH1cbiAgfVxuICAuaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigxLjUgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgQGluY2x1ZGUgc3BhbigyLjUgZmlyc3QpO1xuICAgIH0gICAgXG4gIH1cbiAgLmRlc2NyaXB0aW9uIHtcbiAgICBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuICAgIHAge1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDIuNSBsYXN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oNi41KTtcbiAgICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIH1cbiAgICB9ICBcbiAgfVxufSIsIi8vIGVuc3VyZSBtb2RhbCBpcyBub3Qgc2hvd24gd2hlbiBqcyBpcyBub3QgcHJlc2VudFxuLm5ld3NsZXR0ZXItZGlhbG9nIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBzaG93IGl0IHdoZW4gaXQgaXNcbi5qcyAubmV3c2xldHRlci1kaWFsb2cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubmV3c2xldHRlci1kaWFsb2cuZ2VuZXJhbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYShibGFjaywgMC44NSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDEwMDAyO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9iZy10cmlhbmdsZS1mb290ZXIucG5nXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDExLjc1ZW0gMTEuMTI1ZW07XG4gICAgICAgIGNvbG9yOiAkY29ybmZsb3dlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiA1MDtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNjcmVlbi1tZC1taW4pIGFuZCAobWluLWhlaWdodDogMzcuNWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMi41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRpc21pc3NlZCB7XG4gICAgICAgIEBpbmNsdWRlIGFuaW1hdGVkKDAuMzVzKTtcbiAgICAgICAgQGluY2x1ZGUgc2xpZGVPdXREb3duO1xuICAgIH1cblxuICAgICZbYXJpYS1oaWRkZW49XCJ0cnVlXCJdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBkaXZbcm9sZT1cImRpYWxvZ1wiXSB7XG4gICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICAgICAgbWF4LWhlaWdodDogODB2aDtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDM3LjVlbSkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkb2N1bWVudFwiXSB7XG4gICAgICAgIG1heC13aWR0aDogNTBlbTtcbiAgICAgICAgbWFyZ2luOiAxZW0gYXV0byAwIGF1dG87XG4gICAgICAgIHdpZHRoOiA5NSU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHNjcmVlbi1tZC1taW4pIGFuZCAobWluLWhlaWdodDogMzcuNWVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgdG9wOiAxMi41dmg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2FtbWEge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAyLjI1ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGltc2lzcyB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAtMi41ZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihmaWxsLCAwLjVzLCBlYXNlLWluLW91dCk7XG4gICAgICAgICAgICB3aWR0aDogMmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAyZW07XG4gICAgICAgICAgICBmaWxsOiB3aGl0ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkeWVsbG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDEge1xuICAgICAgICBtYXJnaW46IDEuNWVtIDAgMC41ZW0gMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMmVtO1xuICAgICAgICB9XG4gICAgICAgIC5sb2dvLXR5cGUge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxM2VtO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMC45NWVtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxLjVlbTtcblxuICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3c7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZW4oJHllbGxvdywgNSUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgLmVtYWlsLWZpZWxkLFxuICAgICAgICAgICAgLnppcC1jb2RlLWZpZWxkIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ0JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMSU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5uZXdzbGV0dGVyLWRpYWxvZy52b3RlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKGJsYWNrLCAwLjg1KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMTAwMDI7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJi5kaXNtaXNzZWQge1xuICAgICAgICBAaW5jbHVkZSBhbmltYXRlZCgwLjM1cyk7XG4gICAgICAgIEBpbmNsdWRlIHNsaWRlT3V0RG93bjtcbiAgICB9XG5cbiAgICAmW2FyaWEtaGlkZGVuPVwidHJ1ZVwiXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkaWFsb2dcIl0ge1xuICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIG1hcmdpbi10b3A6IDQuNXZoO1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiA3NTB2aCkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2W3JvbGU9XCJkb2N1bWVudFwiXSB7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIG1hcmdpbjogNnZoIGF1dG8gMDtcbiAgICAgICAgd2lkdGg6IDk1JTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3JkZXI6IDEwcHggc29saWQgI2ZjYzMyMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNjMjI1ZTtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikgYW5kIChtaW4taGVpZ2h0OiA3NTBweCkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2FtbWEge1xuICAgICAgICBjb2xvcjogI2ViZTNkNztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRpbXNpc3Mge1xuICAgICAgICBAaW5jbHVkZSBwbGFpbi1idXR0b247XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgICByaWdodDogLTAuNWVtO1xuICAgICAgICB0b3A6IC0zZW07XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oZmlsbCwgMC41cywgZWFzZS1pbi1vdXQpO1xuICAgICAgICAgICAgd2lkdGg6IDJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMmVtO1xuICAgICAgICAgICAgZmlsbDogI2ZjYzMyMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDY3NXB4KSB7XG4gICAgICAgICAgICByaWdodDogLTIuNWVtO1xuICAgICAgICAgICAgdG9wOiAtMi41ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbmV3c2xldHRlci1kaWFsb2ctdGl0bGUge1xuICAgICAgICBtYXJnaW46IDAgMCAwLjVlbSAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgZm9udC1zaXplOiAyNXB4O1xuICAgICAgICBjb2xvcjogI2ViZTNkNztcblxuICAgICAgICAubG9nby10eXBlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogOGVtO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMC45MmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3Bhbi51bmRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDVweCBhdXRvO1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIk11bGlcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgY29sb3I6ICNmY2MzMjA7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgLnZvdGUtaW1hZ2Uge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvdm90ZV9pbWFnZV9oZWFkZXIuanBnKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRpdGxlLXdyYXBwZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2MyMjVlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBtYXJnaW46IC04N3B4IGF1dG8gMDtcbiAgICAgICAgaGVpZ2h0OiA4N3B4O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAudm90ZS1oZWFkbGluZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3RpdGxlX3RoZS12b3RlLnBuZykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDU3cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWluZGVudDogLTk5OTk5cHg7XG5cbiAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogODAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgcGFkZGluZzogMjBweCA0MHB4O1xuXG4gICAgICAgIGJ1dHRvblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdztcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEuNWVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2VuKCR5ZWxsb3csIDUlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBpbmhlcml0O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgIGNvbG9yOiAjZWJlM2Q3O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICAgIC5lbWFpbC1maWVsZCxcbiAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW1haWwtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1NSU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuemlwLWNvZGUtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0NCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDElO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8geGZpeGVkIHBvc2l0aW9uIHN0YXRlcyBmb3IgaGVhZGVyXG4jc3RpY2t5LWhlYWRlciB7XG4gIHdpZHRoOjEwMCU7XG4gIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDBweCwwcHgsMHB4KTtcbiAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMHB4LDBweCwwcHgpO1xufVxuXG4uc3RpY2t5ICNzdGlja3ktaGVhZGVyIHtcbiAgdG9wOjA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgYW5pbWF0ZWQoLjVzKTtcbiAgQGluY2x1ZGUgc2xpZGVJbkRvd247XG59XG5cbi5zaXRlLWhlYWRlcntcbiAgLy8gcmVzZXRzIGJyb3dzZXIgc3R5bGluZyBmb3IgYWxsIGxpc3RzIGluc2lkZSB0aGUgaGVhZGVyXG4gIHVsIHtcbiAgICBAaW5jbHVkZSBwbGFpbi1saXN0O1xuICB9XG4gIC5zZWNvbmRhcnkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIGJhY2tncm91bmQ6JGRhcmtHcmF5O1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgIGNvbG9yOndoaXRlO1xuICAgICp7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG4gICAgfVxuICAgIC50aXRsZSB7XG4gICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG0vMjtcbiAgICB9XG4gICAgLmhlYWRlci1zb2NpYWwge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgd2lkdGg6NzAlO1xuICAgICAgICBtYXJnaW46MCBhdXRvO1xuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIGZpbGw6YmxhY2s7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBvZiA0IGZpcnN0KTtcbiAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDouNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDUgb2YgMTIgZmlyc3QpO1xuICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgIHRleHQtYWxpZ246bGVmdDtcbiAgICAgICAgLnRpdGxlIHtcbiAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICB3aWR0aDphdXRvO1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItc3BvbnNvcnMge1xuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgZGlzcGxheTotd2Via2l0LWJveDtcbiAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICAtd2Via2l0LWJveC1wYWNrOmNlbnRlcjtcbiAgICAgICAgICAtbXMtZmxleC1wYWNrOmNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OmNlbnRlcjtcbiAgICAgICAgLXdlYmtpdC1ib3gtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAtbXMtZmxleC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjtcbiAgICAgICAgLW1zLWZsZXgtd3JhcDp3cmFwO1xuICAgICAgICAgICAgZmxleC13cmFwOndyYXA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OjE7ICAgICAgICAgICAgICAgIFxuICAgICAgfVxuICAgICAgbWFyZ2luLXRvcDokdi1yaHl0aG0vMjtcbiAgICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtLzI7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46LjI1ZW0gLjVlbTtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LXBhY2s6Y2VudGVyO1xuICAgICAgICAgIC1tcy1mbGV4LXBhY2s6Y2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO1xuICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgIC1tcy1mbGV4LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgICAudGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOi4yNWVtO1xuICAgICAgfVxuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDozLjEyNWVtO1xuICAgICAgICBtYXgtd2lkdGg6Ny4zNzVlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgNCBsYXN0KTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNyBvZiAxMiBsYXN0KTtcbiAgICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICAgIGRpc3BsYXk6LXdlYmtpdC1ib3g7XG4gICAgICAgICAgZGlzcGxheTotbXMtZmxleGJveDtcbiAgICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgICAtd2Via2l0LWJveC1wYWNrOmVuZDtcbiAgICAgICAgICAgIC1tcy1mbGV4LXBhY2s6ZW5kO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDpmbGV4LWVuZDtcbiAgICAgICAgICAtd2Via2l0LWJveC1hbGlnbjpjZW50ZXI7XG4gICAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczpjZW50ZXI7XG4gICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgZm9udC1zaXplOi44MTI1ZW07XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICAgIH1cbiAgICAgICAgLnNwb25zb3Ige1xuICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OjMuMTI1ZW07XG4gICAgICAgICAgbWF4LXdpZHRoOjguMzc1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAuZ3JpZCB7XG4gICAgICAgIG1hcmdpbi10b3A6LjVlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTouNWVtO1xuICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5Oi1tcy1mbGV4Ym94O1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIC13ZWJraXQtYm94LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgLW1zLWZsZXgtYWxpZ246Y2VudGVyO1xuICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOyAgICAgICAgXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnByaW1hcnkge1xuICAgIGJhY2tncm91bmQ6JGJsdWU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgei1pbmRleDoxMDtcbiAgICAuZ3JpZCB7XG4gICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB9XG4gICAgLmhlYWRlci1sb2dvIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjowO1xuICAgICAgbGluZS1oZWlnaHQ6MDtcbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBwYWRkaW5nOi40NWVtO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIG1heC1oZWlnaHQ6LjVlbTtcbiAgICAgICAgICAudHlwZSB7XG4gICAgICAgICAgICBmaWxsOndoaXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6Ljc1ZW07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAubG9nby10eXBlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6MTAwJTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHNwYW4oMS41IGZpcnN0KTtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMyBmaXJzdCk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgcGFkZGluZy10b3A6LjJlbTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBwYWRkaW5nLXRvcDowO1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgICAgICBhIHtcbiAgICAgICAgICBwYWRkaW5nOi41NWVtIC40NWVtIC40NWVtIC40NWVtO1xuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OjFlbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gYmFzZSBzdHlsaW5nIGZvciBtYWluIG5hdmlnYXRpb25cbiAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgIEBpbmNsdWRlIHBsYWluLWJ1dHRvbjtcbiAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgdG9wOjA7XG4gICAgICByaWdodDo1JTtcbiAgICAgIHdpZHRoOjIuNzVlbTtcbiAgICAgIGhlaWdodDoyLjc1ZW07XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBwYWRkaW5nOi41ZW07XG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpbmNsdWRlIGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOjEuNWVtO1xuICAgICAgfVxuICAgICAgLm9uZSwgLnR3bywgLnRocmVlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOmFsbCAuMzVzIGxpbmVhcjtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDBkZWcpIHNjYWxlKDEpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMSk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDUwJTtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjAgNTAlO1xuICAgICAgICAgICAgICAgIGZpbGw6d2hpdGU7XG4gICAgICB9XG4gICAgICAmLmNsb3NlLXN0YXRlIHtcbiAgICAgICAgLm9uZSB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlWigtNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgICAgLnR3byB7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjVlbSk7XG4gICAgICAgIH1cbiAgICAgICAgLnRocmVlIHtcbiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVaKDQ1ZGVnKSBzY2FsZSguOTUpO1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnJvdGF0ZVooNDVkZWcpIHNjYWxlKC45NSk7XG4gICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOjExLjVlbSA1ZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLXNtLW1pbiwgJG1hcC1zbSkge1xuICAgICAgICB3aWR0aDozLjNlbTtcbiAgICAgICAgaGVpZ2h0OjMuM2VtO1xuICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICBjbGVhcjpib3RoO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNiBsYXN0KTtcbiAgICAgICAgY2xlYXI6bm9uZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDggbGFzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZToxLjEyNWVtO1xuICAgICAgZm9udC1mYW1pbHk6ICdKb3NlZmluIFNhbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICAgICAgbWFyZ2luLWJvdHRvbTokdi1yaHl0aG07XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigzLjc1IG9mIDYpO1xuICAgICAgICBjbGVhcjpub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig1IG9mIDgpO1xuICAgICAgfVxuICAgICAgdWwge1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Oi13ZWJraXQtYm94O1xuICAgICAgICAgIGRpc3BsYXk6LW1zLWZsZXhib3g7XG4gICAgICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBsaW5rLXJlc2V0O1xuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6MS4xZW0gMWVtIC45ZW0gMWVtO1xuICAgICAgICAgICAgY29sb3I6d2hpdGU7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgICAgICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICAgICAgaGVpZ2h0Oi4zMzMzZW07XG4gICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICAgICAgICBib3R0b206MDtcbiAgICAgICAgICAgICAgbGVmdDowO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciwgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiR5ZWxsb3c7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgICAgICAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTpub25lO1xuICAgICAgICAgICAgZmxleC1ncm93OjE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC5zZWFyY2gge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZm9udC1zaXplOjEuMTI1ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobTtcbiAgICAgIC5zZWFyY2gtaW5wdXQgIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6Mi4yNWVtO1xuICAgICAgICBwYWRkaW5nOjAgMCAwIDFlbTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JheTtcbiAgICAgICAgcGFkZGluZy1yaWdodDoyLjVlbTtcbiAgICAgIH1cbiAgICAgIC5zZWFyY2gtYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgdG9wOi4xNWVtO1xuICAgICAgICByaWdodDouNDVlbTtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIGhlaWdodDoyZW07XG4gICAgICAgIHdpZHRoOjJlbTtcbiAgICAgICAgcGFkZGluZzouMTVlbTtcbiAgICAgICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEuNSBvZiA2KTtcbiAgICAgICAgbWFyZ2luLXRvcDouN2VtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIG9mIDgpO1xuICAgICAgfSBcbiAgICB9XG4gIH1cbiAgLnNob3Age1xuICAgIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtO1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgcGFkZGluZzouNWVtIC41ZW0gLjVlbSAxZW07XG4gICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGdyYXk7XG4gICAgc3ZnIHtcbiAgICAgIGhlaWdodDoyLjVlbTtcbiAgICAgIHdpZHRoOjIuNWVtO1xuICAgICAgZmlsbDp3aGl0ZTtcbiAgICAgIHBhdGgge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGZpbGwsIC4yNXMsIGVhc2UtaW4tb3V0KVxuICAgICAgfVxuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIHN2ZyB7XG4gICAgICAgIHBhdGgge1xuICAgICAgICAgIGZpbGw6JHllbGxvdztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oLjc1IG9mIDYgbGFzdCk7XG4gICAgICBib3JkZXI6bm9uZTtcbiAgICAgIHBhZGRpbmc6MDtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7XG4gICAgICBtYXJnaW4tdG9wOi43NWVtO1xuICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oMSBvZiA4IGxhc3QpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gZW5oYW5jZWQgc3R5bGVzIGZvciBoZWFkZXIgKEphdmFTY3JpcHQgU3VjY2Vzcylcbi5qcyB7XG4gIC8vIHNob3cgbWFpbiBuYXYgdG9nZ2xlIHdpdGggSlNcbiAgLnNpdGUtaGVhZGVyIHtcbiAgICAucHJpbWFyeSB7XG4gICAgICAubWFpbi1uYXYtdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gaGlkaW5nIGFuZCBzaG93IG9mIGRyb3AgZG93biBtZW51IHdpdGggSlNcbiAgLmpzLWRyb3Bkb3duLW1lbnUge1xuICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgICBtYXgtaGVpZ2h0OjA7XG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgICAgbWF4LWhlaWdodDppbmhlcml0O1xuICAgICAgfVxuICAgICYub3BlbiB7XG4gICAgICB2aXNpYmlsaXR5OnZpc2libGU7XG4gICAgICBtYXgtaGVpZ2h0OjM1ZW07XG4gICAgfVxuICB9XG4gIC5oZWFkZXItbWFpbi1uYXZpZ2F0aW9uLm9wZW4gKyAuaGVhZGVyLXNlYXJjaC5vcGVuIHtcbiAgICBtYXJnaW4tdG9wOiR2LXJoeXRobTtcbiAgfVxufVxuXG4vLyBkbyBub3QgaGF2ZSBmaXhlZCBmdW5jdGlvbmFsaXR5IG9mIGxvZ2dlZCBpblxuLmNtcy1yZWFkeSB7XG4gIC5wcmltYXJ5IHtcbiAgICAmLmZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIH1cbiAgfVxufVxuIiwiLnNpdGUtZm9vdGVyIHtcbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIHBsYWluLWxpc3Q7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICB9XG4gICAgLmNyZWRpdC1oZWFkaW5nIHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbn1cblxuLmZvb3Rlci1saW5rcyB7XG4gICAgcGFkZGluZzogMCAwICR2LXJoeXRobS8yIDA7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLWZvb3Rlci5wbmdcIik7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMS43NWVtIDExLjEyNWVtO1xuICAgIGNvbG9yOiAkY29ybmZsb3dlcjtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvYmctYW1lcmljYW4tZmxhZy5qcGdcIik7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDYuNSU7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobSAqIDM7XG4gICAgfVxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG0vMjtcbiAgICAgICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHNjcmVlbi1qYi1taW4pIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSB7XG4gICAgLmZvb3Rlci1saW5rcyB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxNSU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mb290ZXItbmF2aWdhdGlvbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBmaXJzdCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDE1ZW07XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgLW1vei1jb2x1bW4tY291bnQ6IDI7XG4gICAgICAgICAgICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjtcbiAgICAgICAgICAgIGNvbHVtbi1jb3VudDogMjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNyBmaXJzdCk7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIC1tb3otY29sdW1uLWNvdW50OiAzO1xuICAgICAgICAgICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7XG4gICAgICAgICAgICBjb2x1bW4tY291bnQ6IDM7XG4gICAgICAgIH1cbiAgICB9XG59XG4uZm9vdGVyLXByb2R1Y3Rpb24tYnkge1xuICAgIG1hcmdpbi1ib3R0b206ICR2LXJoeXRobTtcbiAgICAud2diaCB7XG4gICAgICAgIGZpbGw6IHdoaXRlO1xuICAgICAgICB3aWR0aDogNmVtO1xuICAgICAgICBtYXgtaGVpZ2h0OiAzZW07XG4gICAgfVxuICAgIHVsIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHYtcmh5dGhtO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyLjUpO1xuICAgIH1cbn1cbi5mb290ZXItZnVuZGluZyB7XG4gICAgdWwge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIC8vIC5jcGIge1xuICAgIC8vICAgKiB7XG4gICAgLy8gICAgIGZpbGw6d2hpdGU7XG4gICAgLy8gICB9XG4gICAgLy8gICB3aWR0aDo3ZW07XG4gICAgLy8gICBtYXgtaGVpZ2h0OjRlbTtcbiAgICAvLyB9XG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEyZW07XG4gICAgICAgIG1heC1oZWlnaHQ6IDEyZW07XG4gICAgICAgICoge1xuICAgICAgICAgICAgZmlsbDogd2hpdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYSB7XG4gICAgICAgIC8vIHdpZHRoOjEwMCU7XG4gICAgICAgIC8vIGhlaWdodDoxMDAlO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyLjUgbGFzdCk7XG4gICAgfVxufVxuLmZvb3Rlci1jb3B5cmlnaHQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBtYXJnaW4tYm90dG9tOiAkdi1yaHl0aG07XG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgc3BhbigyIGZpcnN0KTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyLjc1dnc7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDQgZmlyc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDIuOTI1dnc7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oNCBmaXJzdCk7XG4gICAgfVxufVxuLmZvb3Rlci1sb2dvLXR5cGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogNHZ3O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI3NTtcbiAgICBzdmcge1xuICAgICAgICBmaWxsOiAkbmF2eTtcbiAgICAgICAgbWF4LWhlaWdodDogMy44NzVlbTtcbiAgICB9XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1tZC1taW4sICRtYXAtbWQpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgQGluY2x1ZGUgc3Bhbig4IGxhc3QpO1xuICAgICAgICBmb250LXNpemU6IDMuNXZ3O1xuICAgIH1cbn1cbiIsIi5jb25uZWN0LXNvY2lhbCB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2JnLXRyaWFuZ2xlLW5ld3NsZXR0ZXIucG5nXCIpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTEuNzVlbSAxMS4xMjVlbTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogJHYtcmh5dGhtICogMztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgaDMge1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxuICAgIC5lbWFpbC1zaWdudXAge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6ICR2LXJoeXRobSAwO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjc2OWVtO1xuICAgICAgICB9XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgICAgIC5ub3RlIHtcbiAgICAgICAgICAgICAgICAvLyBmbGV4IGJveCBvdmVyaWRlIGZvciBzb3VyY2Ugb3JkZXIgaW4gY29ubmVjdCBzZWN0aW9uXG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JkaW5hbC1ncm91cDogMjtcbiAgICAgICAgICAgICAgICAtbXMtZmxleC1vcmRlcjogMTtcbiAgICAgICAgICAgICAgICBvcmRlcjogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYudm90ZSAuaGVhZGxpbmUge1xuICAgICAgICAgICAgcGFkZGluZzogMCAxMCUgMCAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgIC52b3RlLWhlYWRsaW5lIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL3RpdGxlX3RoZS12b3RlLnBuZykgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1N3B4O1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgIHRleHQtaW5kZW50OiAtOTk5OTlweDtcblxuICAgICAgICAgICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDgwJTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkbGluZSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDIgZmlyc3QpO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogODAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGZpcnN0KTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oNyBmaXJzdCk7XG5cbiAgICAgICAgICAgICYudm90ZSBoMyB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5lbWFpbC1zaWdudXAtZm9ybSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMCU7XG4gICAgICAgICAgICAgICAgLmVtYWlsLWZpZWxkIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxJTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0NSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC56aXAtY29kZS1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1dHRvblt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0JTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAubm90ZSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA3NSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWpiLW1pbikge1xuICAgICAgICAgICAgLmVtYWlsLXNpZ251cC1mb3JtIHtcbiAgICAgICAgICAgICAgICBidXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxOSU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5mb290ZXItc29jaWFsLWxpbmtzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAkdi1yaHl0aG0gKiAyIDA7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgICAgICB3aWR0aDogMTEwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01JTtcbiAgICAgICAgLnNvY2lhbC1saXN0IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogM2VtO1xuICAgICAgICAgICAgICAgIGhlaWdodDogM2VtO1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6ICRtdXN0YXJkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgICAgICBmaWxsOiAkeWVsbG93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuaGFzaHRhZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1zbS1taW4sICRtYXAtc20pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMiBsYXN0KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNS42MjUlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGluaGVyaXQ7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICByaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYyg1LjI2MzE2JSAqIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMS4yNSU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgICAgICAgICAuc29jaWFsLWxpc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNS4yNjMxNiU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbGctbWluLCAkbWFwLWxnKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDUgbGFzdCk7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0JTtcbiAgICAgICAgICAgICAgICByaWdodDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1qYi1taW4pIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIC8vIG1hZ2ljXG4gICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoKDEwMHZ3IC0gMTQwMHB4KSAvIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5ncmlkIHtcbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tc20tbWluLCAkbWFwLXNtKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vIG5vIGpzIGFkIGJsb2NrIHNob3cgbm90aGluZ1xuLmFkLWJsb2NrIHtcbiAgbWF4LWhlaWdodDowO1xuICBwYWRkaW5nOjA7XG4gIHZpc2liaWxpdHk6aGlkZGVuO1xuICBsaW5lLWhlaWdodDowO1xufVxuIFxuLmpzIHtcbiAgLmFkLWJsb2NrIHtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCwgLjM1cywgZWFzZS1pbi1vdXQpO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIHRleHQtYWxpZ246Y2VudGVyO1xuICAgICYub3Blbi5hZC1zaWRlLWludGVyaW9yIHtcbiAgICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDpub25lO1xuICAgICAgfVxuICAgIH1cbiAgICAmLm9wZW4ge1xuICAgICAgcGFkZGluZzokdi1yaHl0aG0gMCAkdi1yaHl0aG0qMjtcbiAgICAgIG1heC1oZWlnaHQ6MjVlbTtcbiAgICAgIHZpc2liaWxpdHk6dmlzaWJsZTtcbiAgICAgIHotaW5kZXg6aW5oZXJpdDtcbiAgICAgIGxpbmUtaGVpZ2h0OmluaGVyaXQ7XG4gICAgICAuYWQge1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgdG9wOjA7XG4gICAgICAgIGxlZnQ6MDtcbiAgICAgIH1cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZDp1cmwoJy4uL2ltYWdlcy9iZy1kZWNvLWNpcmNsZS5wbmcnKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOjE4ZW0gMThlbTtcbiAgICAgICAgei1pbmRleDotMjtcbiAgICAgIH1cbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICB6LWluZGV4Oi0xO1xuICAgICAgICBiYWNrZ3JvdW5kOnJnYmEoJG92ZXJsYXksIC41KTtcblxuICAgICAgfVxuICAgICAgJi5mb290ZXItYWQge1xuICAgICAgICBwYWRkaW5nLXRvcDokdi1yaHl0aG0qMS41O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTokdi1yaHl0aG0qMS43NTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTo0LjVlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmFkIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgbWFyZ2luOjAgYXV0bztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgICAgZGlzcGxheTpub25lO1xuICAgICAgZGl2IHtcbiAgICAgICAgY2xlYXI6Ym90aDsgIFxuICAgICAgfVxuICAgICAgc3BhbiwgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTouNzVlbTtcbiAgICAgICAgZmxvYXQ6bGVmdDtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICBmbG9hdDpyaWdodDtcbiAgICAgICAgY29sb3I6JGJsdWU7XG4gICAgICB9IFxuICAgICAgYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgcGxhaW4tYnV0dG9uO1xuICAgICAgICBiYWNrZ3JvdW5kOiRncmF5O1xuICAgICAgICB3aWR0aDoxLjVlbTtcbiAgICAgICAgaGVpZ2h0OjEuNWVtO1xuICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgdG9wOjEuMjVlbTtcbiAgICAgICAgcmlnaHQ6MDtcbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6NzUlO1xuICAgICAgICAgIGhlaWdodDo3NSU7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgICAgICAgd2lkdGg6MmVtO1xuICAgICAgICAgIGhlaWdodDoyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnNob3AtYWQge1xuICBiYWNrZ3JvdW5kOndoaXRlO1xuICB0ZXh0LWFsaWduOmNlbnRlcjtcbiAgcGFkZGluZy10b3A6JHYtcmh5dGhtKjM7XG4gIHBhZGRpbmctYm90dG9tOiR2LXJoeXRobSozO1xuICBhICB7XG4gICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgJi5tb2JpbGUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJy4uL2ltYWdlcy9hbWV4X3Nob3BfbW9iaWxlLnBuZycpO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgICAgd2lkdGg6MjBlbTtcbiAgICAgIGhlaWdodDo2LjI1ZW07XG4gICAgfVxuICAgICYuZGVza3RvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaW1hZ2VzL2FtZXhfc2hvcF9kZXNrdG9wLnBuZycpO1xuICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgICAgd2lkdGg6NzVlbTtcbiAgICAgIGhlaWdodDo5LjM3NWVtO1xuICAgIH0gICAgXG4gIH1cbn1cblxuLy8gYWRqdXN0IG1hcmdpbiBmb3Igc2hvcCBhZCBpZiBib3R0b20gYmFubmVyIGRvZXMgbm90IGV4aXN0XG4uY29ubmVjdC1zb2NpYWwge1xuICAmICsgLnNob3AtYWQgIHtcbiAgICBwYWRkaW5nLXRvcDowO1xuICB9XG59XG5cbi8vIGxheW91dCBmb3IgXCJzaWRlYmFyIGFkXCJcbi5hZC1pbnRlcmlvci1jb250ZW50IHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgQGluY2x1ZGUgc3Bhbig1IGZpcnN0KTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJHNjcmVlbi1sZy1taW4sICRtYXAtbGcpIHtcbiAgICBAaW5jbHVkZSBzcGFuKDggZmlyc3QpO1xuICB9XG59XG5cbi5hZC1zaWRlLWludGVyaW9yIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLXRvcDokdi1yaHl0aG07XG4gICAgQGluY2x1ZGUgc3BhbigzIGxhc3QpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLWxnLW1pbiwgJG1hcC1sZykge1xuICAgIEBpbmNsdWRlIHNwYW4oNCBsYXN0KTtcbiAgfVxufSIsIjotd2Via2l0LWZ1bGwtc2NyZWVuLWFuY2VzdG9yOm5vdChpZnJhbWUpe1xuICAucGJzLWNsZWFuc2xhdGUsIC5zaXRlLWhlYWRlciwgLmFkLWJsb2NrLCAuY21zLCAudGVhc2VyLWl0ZW0sIC5zaXRlLWZvb3RlciwgXG4gIC5maWxtLXN1Yi1uYXYsIC5XYWxsb3AtYnV0dG9uUHJldmlvdXMsIC5XYWxsb3AtYnV0dG9uTmV4dCwgLmFjY29yZGlvbi10b2dnbGUsIC50YWItcGFuZWwsIC5mdWxsLXNjcmVlbiB7XG4gICAgZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cbmJvZHkge1xuICBvdmVyZmxvdy14OmhpZGRlbjtcbiAgLy8gc3RhdGUgcnVsZXMgZm9yIGJvZHkgd2hlbiBtb2RhbCBpcyBvcGVuXG4gICYuZml4ZWQge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBsZWZ0OjA7XG4gICAgdG9wOjA7XG4gICAgd2lkdGg6MTAwJTtcbiAgfVxufVxuXG5pZnJhbWUge1xuICBiYWNrZ3JvdW5kOiRtZWRHcmF5O1xufVxuXG5pbWcge1xuICBtYXgtd2lkdGg6MTAwJTtcbn1cblxuYSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IsIC4zcywgZWFzZS1pbi1vdXQpO1xuICBjb2xvcjokcmVkO1xuICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgZm9udC13ZWlnaHQ6NzAwO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjokY3JpbXNvbjtcbiAgICB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xuICB9XG59XG5cbi5jYWxsLXRvLWFjdGlvbiB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsLCAuNXMsIGVhc2UtaW4tb3V0KTtcbiAgYmFja2dyb3VuZDokcmVkO1xuICBjb2xvcjp3aGl0ZTtcbiAgYm9yZGVyLXJhZGl1czouNDM3NWVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZToxLjEyNWVtO1xuICBwYWRkaW5nOjFlbSAzLjVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDA7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOndoaXRlO1xuICAgIGJhY2tncm91bmQ6ZGFya2VuKCRyZWQsIDUlKTtcbiAgICB0ZXh0LWRlY29yYXRpb246bm9uZTtcbiAgfVxuICAmOmFjdGl2ZSB7XG4gICAgdG9wOi4yNzc3Nzc3Nzc4ZW07XG4gIH1cbn1cblxuZmlndXJlIHtcbiAgbWFyZ2luOjA7XG59XG5cbmZpZ2NhcHRpb24sIC5jYXB0aW9uIHtcbiAgZm9udC1zaXplOi44NWVtO1xuICBjb2xvcjokbWVkR3JheTtcbiAgZm9udC1zdHlsZTppdGFsaWM7XG4gIHAge1xuICAgIG1hcmdpbjowO1xuICB9XG59XG5cbi5jYXB0aW9uIHtcbiAgaDQsIC5kZWx0YSB7XG4gICAgbWFyZ2luOi4yNWVtIDA7XG4gICAgZm9udC1zdHlsZTpub3JtYWw7XG4gIH1cbn1cblxucSB7XG4gIGRpc3BsYXk6YmxvY2s7XG4gIGNvbG9yOiRtZWRHcmF5O1xuICBmb250LXNpemU6MS4xNWVtO1xuICBtYXJnaW46JHYtcmh5dGhtIDUlO1xuICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6Jyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDoxMTAlO1xuICAgIHdpZHRoOi41ZW07XG4gICAgYmFja2dyb3VuZDokbWVkR3JheTtcbiAgICBsZWZ0Oi0xLjVlbTtcbiAgICBAaW5jbHVkZSBjZW50ZXIoZmFsc2UsIHRydWUpO1xuICB9XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludCgkc2NyZWVuLW1kLW1pbiwgJG1hcC1tZCkge1xuICAgIG1hcmdpbi1sZWZ0OjEwJTtcbiAgICBtYXJnaW4tcmlnaHQ6MTAlO1xuICB9XG59XG5cbmNpdGUge1xuICBkaXNwbGF5OmJsb2NrO1xuICBmb250LXNpemU6MS4yNWVtO1xuICBtYXJnaW46JHYtcmh5dGhtIDUlO1xuICBjb2xvcjokbWVkR3JheTtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KCRzY3JlZW4tbWQtbWluLCAkbWFwLW1kKSB7XG4gICAgbWFyZ2luLWxlZnQ6MTAlO1xuICAgIG1hcmdpbi1yaWdodDoxMCU7XG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDonJztcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICB0b3A6MDtcbiAgICAgIGxlZnQ6LTMuNWVtO1xuICAgICAgYmFja2dyb3VuZDp1cmwoJy4uL2ltYWdlcy9xdW90ZS5zdmcnKSBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6Mi41ZW07XG4gICAgICB3aWR0aDoyLjVlbTtcbiAgICAgIGhlaWdodDoyLjVlbTtcbiAgICB9XG4gIH1cbn1cblxuLmp1bXAtbGluayB7XG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogNmVtO1xuICAgIG1hcmdpbjotNmVtIDAgMDtcbiAgfVxuICAmLnNpdGUtZm9vdGVyIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBoZWlnaHQ6IDllbTtcbiAgICAgIG1hcmdpbjotOWVtIDAgMDtcbiAgICB9XG4gIH1cbn1cblxuLy8gY292ZSBzdHVmZlxuLmNvdmUtd3JhcHBlciB7XG4gIG1hcmdpbi1ib3R0b206MS41ZW07XG59XG5cbi5jb3ZlLWNvbnRhaW5lciB7XG4gICY6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBjZW50ZXI7XG4gICAgei1pbmRleDogMztcbiAgICBjb2xvcjp3aGl0ZTtcbiAgICBjb250ZW50OidWaWRlbyBSZXF1aXJlcyBKYXZhc2NyaXB0J1xuICB9XG59XG5cbi5qcyB7XG4gIC5jb3ZlLWNvbnRhaW5lciB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDpub25lXG4gICAgfVxuICB9XG59XG5cbi5jb3ZlLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOjU2LjI1JTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgQGluY2x1ZGUgYW5pbWF0ZWQoMXMpO1xuICBAaW5jbHVkZSBmYWRlSW47XG4gIGlmcmFtZSB7XG4gICAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6MjtcbiAgfVxufVxuXG4uZ3JpZCB7XG4gIEBpbmNsdWRlIGdyaWQ7XG59XG5cbi5ncmlkLmZ1bGwge1xuICBtYXgtd2lkdGg6MTAwJTtcbiAgcGFkZGluZzowO1xufVxuXG4ucGx1Z2luLWl0ZW0tYmxvY2sge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLy8gZ2VuZXJpYyBzcGFjaW5nIGZvciBzdGFuZGFyZCBwYWdlICBcbi5wYWdlIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi10b3A6JHYtcmh5dGhtKjI7XG4gIG1hcmdpbi1ib3R0b206JHYtcmh5dGhtKjI7XG59XG5cbi5yaWdodC1hcnJvdyB7XG4gIGZpbGw6d2hpdGU7XG4gIG1heC13aWR0aDoyZW07XG4gIG1heC1oZWlnaHQ6MmVtO1xufVxuXG4ucGFzc3BvcnQtaWNvbiB7XG4gIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcbiAgbWFyZ2luLXRvcDotLjE1ZW07XG4gIG1heC13aWR0aDoxLjI1ZW07XG4gIG1heC1oZWlnaHQ6MS4yNWVtO1xufVxuXG4ucmVsYXRlZC1mZWF0dXJlLWxpc3Qge1xuICBjbGVhcjpib3RoO1xuICBtYXJnaW4tYm90dG9tOiR2LXJoeXRobSoyO1xuICBtYXJnaW4tdG9wOiR2LXJoeXRobSoyO1xufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0ErREFBLDRFQUE0RTtBQUU1RTs7O0dBR0c7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRUFBRSxVQUFVO0VBQUUsT0FBTztFQUNoQyxvQkFBb0IsRUFBRSxJQUFJO0VBQUUsT0FBTztFQUNuQyx3QkFBd0IsRUFBRSxJQUFJO0VBQUUsT0FBTztDQUN4Qzs7QUFHRCx5RkFBeUY7QUFDekYsQUFBQSxJQUFJLENBQUM7RUFDSCxVQUFVLEVBQUUsVUFBVTtDQUN2Qjs7QUFDRCxBQUFBLENBQUMsRUFBRSxDQUFDLEFBQUEsT0FBTyxFQUFFLENBQUMsQUFBQSxNQUFNLENBQUM7RUFDbkIsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FBR0Q7O0dBRUc7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILE1BQU0sRUFBRSxDQUFDO0NBQ1Y7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7O0dBSUc7QUFFSCxBQUFBLE9BQU87QUFDUCxLQUFLO0FBQ0wsT0FBTztBQUNQLFVBQVU7QUFDVixN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 */
