/* === ITCSS : organised by specificity === */
/* === GENERIC  === */
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
 * Remove default margin.
 */
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
 */
[hidden],
template {
  display: none; }

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b,
strong {
  font-weight: bold; }

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic; }

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
 * Address styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000; }

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%; }

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */
img {
  border: 0; }

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px; }

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0; }

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto; }

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible; }

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none; }

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default; }

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal; }

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
 *    (include `-moz` to future-proof).
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  /* 2 */
  box-sizing: content-box; }

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto; }

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

/* === SETTINGS  === */
/*
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */
/* http://dabblet.com/gist/4711695 */
@font-face {
  font-family: 'Material Icons';
  font-style: normal;
  font-weight: 400;
  src: url("https://bettyforschools.co.uk/bundles/app/assets/fonts/MaterialIcons-Regular.eot#iefix") format("embedded-opentype"), url("../../fonts/MaterialIcons-Regular.woff") format("woff"), url("../../fonts/MaterialIcons-Regular.ttf") format("truetype"); }

@font-face {
  font-family: 'ProximaNova-Regular';
  font-weight: normal;
  font-style: normal;
  src: url("https://bettyforschools.co.uk/bundles/app/assets/fonts/ProximaNova-Regular.eot#iefix") format("embedded-opentype"), url("../../fonts/ProximaNova-Regular.otf") format("opentype"), url("../../fonts/ProximaNova-Regular.woff") format("woff"), url("../../fonts/ProximaNova-Regular.ttf") format("truetype"), url("https://bettyforschools.co.uk/bundles/app/assets/fonts/ProximaNova-Regular.svg#ProximaNova-Regular") format("svg"); }

@font-face {
  font-family: 'MuseoSlab-500';
  font-weight: normal;
  font-style: normal;
  src: url("https://bettyforschools.co.uk/bundles/app/assets/fonts/MuseoSlab-500.eot#iefix") format("embedded-opentype"), url("../../fonts/MuseoSlab-500.otf") format("opentype"), url("https://bettyforschools.co.uk/bundles/app/assets/fonts/MuseoSlab-500.woff") format("woff"), url("../../fonts/MuseoSlab-500.ttf") format("truetype"), url("https://bettyforschools.co.uk/bundles/app/assets/fonts/MuseoSlab-500.svg#MuseoSlab-500") format("svg"); }

@font-face {
  font-family: 'icomoon';
  src: url("https://bettyforschools.co.uk/bundles/app/assets/fonts/icomoon.eot?6o0bj");
  src: url("https://bettyforschools.co.uk/bundles/app/assets/fonts/icomoon.eot?6o0bj#iefix") format("embedded-opentype"), url("../../fonts/icomoon_6o0bj.ttf") format("truetype"), url("../../fonts/icomoon_6o0bj.woff") format("woff"), url("https://bettyforschools.co.uk/bundles/app/assets/fonts/icomoon.svg?6o0bj#icomoon") format("svg");
  font-weight: normal;
  font-style: normal; }

.first {
  font-size: 2.98598em; }
  @media (min-width: 20em) and (max-width: 30em) {
    .first {
      font-size: calc( 2.98598em + 2.62425 * ( ( 100vw - 20em) / 10 )); } }
  @media (min-width: 30em) and (max-width: 62em) {
    .first {
      font-size: calc( 5.61023em + 4.07516 * ( ( 100vw - 30em) / 32 )); } }
  @media (min-width: 62em) and (max-width: 75em) {
    .first {
      font-size: calc( 9.68539em + 19.33421 * ( ( 100vw - 62em) / 13 )); } }
  @media (min-width: 75em) and (max-width: 90em) {
    .first {
      font-size: calc( 29.0196em + 14.57141 * ( ( 100vw - 75em) / 15 )); } }
  @media (min-width: 90em) {
    .first {
      font-size: 43.59102em; } }

.last {
  font-size: 1.728em; }
  @media (min-width: 20em) and (max-width: 30em) {
    .last {
      font-size: calc( 1.728em + 0.64059 * ( ( 100vw - 20em) / 10 )); } }
  @media (min-width: 30em) and (max-width: 62em) {
    .last {
      font-size: calc( 2.36859em + 0.74354 * ( ( 100vw - 30em) / 32 )); } }
  @media (min-width: 62em) and (max-width: 75em) {
    .last {
      font-size: calc( 3.11214em + 2.27485 * ( ( 100vw - 62em) / 13 )); } }
  @media (min-width: 75em) and (max-width: 90em) {
    .last {
      font-size: calc( 5.38698em + 1.21536 * ( ( 100vw - 75em) / 15 )); } }
  @media (min-width: 90em) {
    .last {
      font-size: 6.60235em; } }

body {
  font-size: 1rem; }

h5 {
  font-size: 1.2rem; }

h4 {
  font-size: 1.4rem; }

h3 {
  font-size: 1.8rem; }

h2 {
  font-size: 2.0rem; }

h1 {
  font-size: 3rem; }

h1, h2, h3, h4, h5, h6 {
  margin: 0.5em 0; }

h1, h2, h3, h4, h5, h6, p, li, .mainnav__link {
  font-family: "ProximaNova-Regular", arial, sans-serif; }

h1, h2, h3, h4, h5, h6, .mainnav__link {
  color: #E35197; }

p, li {
  color: #734897;
  line-height: 1.6em; }

a {
  font-family: "ProximaNova-Regular", Arial, sans-serif;
  color: #734897; }

.form__wrapper a {
  color: #fff; }

/* === TOOLS  === */
.material-icons {
  font-family: 'Material Icons';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  /* Preferred icon size */
  display: inline-block;
  line-height: 1;
  text-transform: none;
  letter-spacing: normal;
  vertical-align: middle;
  word-wrap: normal;
  /* Support for all WebKit browsers. */
  -webkit-font-smoothing: antialiased;
  /* Support for Safari and Chrome. */
  text-rendering: optimizeLegibility;
  /* Support for Firefox. */
  -moz-osx-font-smoothing: grayscale;
  /* Support for IE. */
  font-feature-settings: 'liga'; }

/* === ELEMENTS  === */
/* apply a natural box layout model to all elements, but allowing components to change */
html, body {
  box-sizing: border-box;
  background-color: #f6f6f6; }

*, *:before, *:after {
  box-sizing: inherit;
  -webkit-backface-visibility: hidden; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon' !important;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-instagram:before {
  content: "\ea92"; }

.icon-pinterest:before {
  content: "\ead1"; }

.icon-facebook:before {
  content: "\ea90"; }

.icon-twitter:before {
  content: "\ea96"; }

.icon-play:before {
  content: "\ea1c"; }

/* === LAYOUT  === */
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 15px;
  padding-right: 15px;
  clear: both;
  *zoom: 1; }
  .container:before, .container:after {
    content: " ";
    /* 1 */
    display: table;
    /* 2 */ }
  .container:after {
    clear: both; }
  @media (min-width: 992px) {
    .container {
      width: 970px; } }
  @media (min-width: 1200px) {
    .container {
      width: 1170px; } }

.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 15px;
  padding-right: 15px;
  clear: both;
  *zoom: 1; }
  .container-fluid:before, .container-fluid:after {
    content: " ";
    /* 1 */
    display: table;
    /* 2 */ }
  .container-fluid:after {
    clear: both; }

.row {
  margin-left: -15px;
  margin-right: -15px;
  clear: both;
  *zoom: 1; }
  .row:before, .row:after {
    content: " ";
    /* 1 */
    display: table;
    /* 2 */ }
  .row:after {
    clear: both; }

.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 15px;
  padding-right: 15px; }

.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left; }

.col-xs-1 {
  width: 8.33333%; }

.col-xs-2 {
  width: 16.66667%; }

.col-xs-3 {
  width: 25%; }

.col-xs-4 {
  width: 33.33333%; }

.col-xs-5 {
  width: 41.66667%; }

.col-xs-6 {
  width: 50%; }

.col-xs-7 {
  width: 58.33333%; }

.col-xs-8 {
  width: 66.66667%; }

.col-xs-9 {
  width: 75%; }

.col-xs-10 {
  width: 83.33333%; }

.col-xs-11 {
  width: 91.66667%; }

.col-xs-12 {
  width: 100%; }

.col-xs-pull-0 {
  right: auto; }

.col-xs-pull-1 {
  right: 8.33333%; }

.col-xs-pull-2 {
  right: 16.66667%; }

.col-xs-pull-3 {
  right: 25%; }

.col-xs-pull-4 {
  right: 33.33333%; }

.col-xs-pull-5 {
  right: 41.66667%; }

.col-xs-pull-6 {
  right: 50%; }

.col-xs-pull-7 {
  right: 58.33333%; }

.col-xs-pull-8 {
  right: 66.66667%; }

.col-xs-pull-9 {
  right: 75%; }

.col-xs-pull-10 {
  right: 83.33333%; }

.col-xs-pull-11 {
  right: 91.66667%; }

.col-xs-pull-12 {
  right: 100%; }

.col-xs-push-0 {
  left: auto; }

.col-xs-push-1 {
  left: 8.33333%; }

.col-xs-push-2 {
  left: 16.66667%; }

.col-xs-push-3 {
  left: 25%; }

.col-xs-push-4 {
  left: 33.33333%; }

.col-xs-push-5 {
  left: 41.66667%; }

.col-xs-push-6 {
  left: 50%; }

.col-xs-push-7 {
  left: 58.33333%; }

.col-xs-push-8 {
  left: 66.66667%; }

.col-xs-push-9 {
  left: 75%; }

.col-xs-push-10 {
  left: 83.33333%; }

.col-xs-push-11 {
  left: 91.66667%; }

.col-xs-push-12 {
  left: 100%; }

.col-xs-offset-0 {
  margin-left: 0%; }

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

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

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

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

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

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

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

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

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

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

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

.col-xs-offset-12 {
  margin-left: 100%; }

@media (min-width: 480px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left; }
  .col-sm-1 {
    width: 8.33333%; }
  .col-sm-2 {
    width: 16.66667%; }
  .col-sm-3 {
    width: 25%; }
  .col-sm-4 {
    width: 33.33333%; }
  .col-sm-5 {
    width: 41.66667%; }
  .col-sm-6 {
    width: 50%; }
  .col-sm-7 {
    width: 58.33333%; }
  .col-sm-8 {
    width: 66.66667%; }
  .col-sm-9 {
    width: 75%; }
  .col-sm-10 {
    width: 83.33333%; }
  .col-sm-11 {
    width: 91.66667%; }
  .col-sm-12 {
    width: 100%; }
  .col-sm-pull-0 {
    right: auto; }
  .col-sm-pull-1 {
    right: 8.33333%; }
  .col-sm-pull-2 {
    right: 16.66667%; }
  .col-sm-pull-3 {
    right: 25%; }
  .col-sm-pull-4 {
    right: 33.33333%; }
  .col-sm-pull-5 {
    right: 41.66667%; }
  .col-sm-pull-6 {
    right: 50%; }
  .col-sm-pull-7 {
    right: 58.33333%; }
  .col-sm-pull-8 {
    right: 66.66667%; }
  .col-sm-pull-9 {
    right: 75%; }
  .col-sm-pull-10 {
    right: 83.33333%; }
  .col-sm-pull-11 {
    right: 91.66667%; }
  .col-sm-pull-12 {
    right: 100%; }
  .col-sm-push-0 {
    left: auto; }
  .col-sm-push-1 {
    left: 8.33333%; }
  .col-sm-push-2 {
    left: 16.66667%; }
  .col-sm-push-3 {
    left: 25%; }
  .col-sm-push-4 {
    left: 33.33333%; }
  .col-sm-push-5 {
    left: 41.66667%; }
  .col-sm-push-6 {
    left: 50%; }
  .col-sm-push-7 {
    left: 58.33333%; }
  .col-sm-push-8 {
    left: 66.66667%; }
  .col-sm-push-9 {
    left: 75%; }
  .col-sm-push-10 {
    left: 83.33333%; }
  .col-sm-push-11 {
    left: 91.66667%; }
  .col-sm-push-12 {
    left: 100%; }
  .col-sm-offset-0 {
    margin-left: 0%; }
  .col-sm-offset-1 {
    margin-left: 8.33333%; }
  .col-sm-offset-2 {
    margin-left: 16.66667%; }
  .col-sm-offset-3 {
    margin-left: 25%; }
  .col-sm-offset-4 {
    margin-left: 33.33333%; }
  .col-sm-offset-5 {
    margin-left: 41.66667%; }
  .col-sm-offset-6 {
    margin-left: 50%; }
  .col-sm-offset-7 {
    margin-left: 58.33333%; }
  .col-sm-offset-8 {
    margin-left: 66.66667%; }
  .col-sm-offset-9 {
    margin-left: 75%; }
  .col-sm-offset-10 {
    margin-left: 83.33333%; }
  .col-sm-offset-11 {
    margin-left: 91.66667%; }
  .col-sm-offset-12 {
    margin-left: 100%; } }

@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left; }
  .col-md-1 {
    width: 8.33333%; }
  .col-md-2 {
    width: 16.66667%; }
  .col-md-3 {
    width: 25%; }
  .col-md-4 {
    width: 33.33333%; }
  .col-md-5 {
    width: 41.66667%; }
  .col-md-6 {
    width: 50%; }
  .col-md-7 {
    width: 58.33333%; }
  .col-md-8 {
    width: 66.66667%; }
  .col-md-9 {
    width: 75%; }
  .col-md-10 {
    width: 83.33333%; }
  .col-md-11 {
    width: 91.66667%; }
  .col-md-12 {
    width: 100%; }
  .col-md-pull-0 {
    right: auto; }
  .col-md-pull-1 {
    right: 8.33333%; }
  .col-md-pull-2 {
    right: 16.66667%; }
  .col-md-pull-3 {
    right: 25%; }
  .col-md-pull-4 {
    right: 33.33333%; }
  .col-md-pull-5 {
    right: 41.66667%; }
  .col-md-pull-6 {
    right: 50%; }
  .col-md-pull-7 {
    right: 58.33333%; }
  .col-md-pull-8 {
    right: 66.66667%; }
  .col-md-pull-9 {
    right: 75%; }
  .col-md-pull-10 {
    right: 83.33333%; }
  .col-md-pull-11 {
    right: 91.66667%; }
  .col-md-pull-12 {
    right: 100%; }
  .col-md-push-0 {
    left: auto; }
  .col-md-push-1 {
    left: 8.33333%; }
  .col-md-push-2 {
    left: 16.66667%; }
  .col-md-push-3 {
    left: 25%; }
  .col-md-push-4 {
    left: 33.33333%; }
  .col-md-push-5 {
    left: 41.66667%; }
  .col-md-push-6 {
    left: 50%; }
  .col-md-push-7 {
    left: 58.33333%; }
  .col-md-push-8 {
    left: 66.66667%; }
  .col-md-push-9 {
    left: 75%; }
  .col-md-push-10 {
    left: 83.33333%; }
  .col-md-push-11 {
    left: 91.66667%; }
  .col-md-push-12 {
    left: 100%; }
  .col-md-offset-0 {
    margin-left: 0%; }
  .col-md-offset-1 {
    margin-left: 8.33333%; }
  .col-md-offset-2 {
    margin-left: 16.66667%; }
  .col-md-offset-3 {
    margin-left: 25%; }
  .col-md-offset-4 {
    margin-left: 33.33333%; }
  .col-md-offset-5 {
    margin-left: 41.66667%; }
  .col-md-offset-6 {
    margin-left: 50%; }
  .col-md-offset-7 {
    margin-left: 58.33333%; }
  .col-md-offset-8 {
    margin-left: 66.66667%; }
  .col-md-offset-9 {
    margin-left: 75%; }
  .col-md-offset-10 {
    margin-left: 83.33333%; }
  .col-md-offset-11 {
    margin-left: 91.66667%; }
  .col-md-offset-12 {
    margin-left: 100%; } }

@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left; }
  .col-lg-1 {
    width: 8.33333%; }
  .col-lg-2 {
    width: 16.66667%; }
  .col-lg-3 {
    width: 25%; }
  .col-lg-4 {
    width: 33.33333%; }
  .col-lg-5 {
    width: 41.66667%; }
  .col-lg-6 {
    width: 50%; }
  .col-lg-7 {
    width: 58.33333%; }
  .col-lg-8 {
    width: 66.66667%; }
  .col-lg-9 {
    width: 75%; }
  .col-lg-10 {
    width: 83.33333%; }
  .col-lg-11 {
    width: 91.66667%; }
  .col-lg-12 {
    width: 100%; }
  .col-lg-pull-0 {
    right: auto; }
  .col-lg-pull-1 {
    right: 8.33333%; }
  .col-lg-pull-2 {
    right: 16.66667%; }
  .col-lg-pull-3 {
    right: 25%; }
  .col-lg-pull-4 {
    right: 33.33333%; }
  .col-lg-pull-5 {
    right: 41.66667%; }
  .col-lg-pull-6 {
    right: 50%; }
  .col-lg-pull-7 {
    right: 58.33333%; }
  .col-lg-pull-8 {
    right: 66.66667%; }
  .col-lg-pull-9 {
    right: 75%; }
  .col-lg-pull-10 {
    right: 83.33333%; }
  .col-lg-pull-11 {
    right: 91.66667%; }
  .col-lg-pull-12 {
    right: 100%; }
  .col-lg-push-0 {
    left: auto; }
  .col-lg-push-1 {
    left: 8.33333%; }
  .col-lg-push-2 {
    left: 16.66667%; }
  .col-lg-push-3 {
    left: 25%; }
  .col-lg-push-4 {
    left: 33.33333%; }
  .col-lg-push-5 {
    left: 41.66667%; }
  .col-lg-push-6 {
    left: 50%; }
  .col-lg-push-7 {
    left: 58.33333%; }
  .col-lg-push-8 {
    left: 66.66667%; }
  .col-lg-push-9 {
    left: 75%; }
  .col-lg-push-10 {
    left: 83.33333%; }
  .col-lg-push-11 {
    left: 91.66667%; }
  .col-lg-push-12 {
    left: 100%; }
  .col-lg-offset-0 {
    margin-left: 0%; }
  .col-lg-offset-1 {
    margin-left: 8.33333%; }
  .col-lg-offset-2 {
    margin-left: 16.66667%; }
  .col-lg-offset-3 {
    margin-left: 25%; }
  .col-lg-offset-4 {
    margin-left: 33.33333%; }
  .col-lg-offset-5 {
    margin-left: 41.66667%; }
  .col-lg-offset-6 {
    margin-left: 50%; }
  .col-lg-offset-7 {
    margin-left: 58.33333%; }
  .col-lg-offset-8 {
    margin-left: 66.66667%; }
  .col-lg-offset-9 {
    margin-left: 75%; }
  .col-lg-offset-10 {
    margin-left: 83.33333%; }
  .col-lg-offset-11 {
    margin-left: 91.66667%; }
  .col-lg-offset-12 {
    margin-left: 100%; } }

.header {
  background-color: #E35197;
  margin-bottom: 0; }
  @media (min-width: 992px) {
    .header {
      height: 80px; } }

.header__left {
  background-color: #F3E855;
  height: 70px;
  position: relative; }
  @media (min-width: 992px) {
    .header__left {
      height: 80px; }
      .header__left:before {
        background-color: #F3E855;
        content: "";
        display: block;
        height: 100%;
        left: -1000px;
        position: absolute;
        top: 0;
        width: 1000px; } }

.header__right {
  background-color: #E35197;
  height: 54px; }
  @media (min-width: 992px) {
    .header__right {
      height: 80px;
      overflow: hidden; } }

.header__logo {
  float: left;
  width: 115px;
  overflow: hidden;
  margin-top: 8px;
  height: 55px; }
  @media (min-width: 992px) {
    .header__logo {
      margin-top: 15px; } }
  @media (min-width: 375px) {
    .header__logo {
      width: 250px; } }

.header__mobile-menu {
  display: block;
  float: right;
  height: 100%; }
  .header__mobile-menu .m-icon {
    margin-top: 11px;
    width: 45px;
    height: 45px;
    fill: #E35197; }
  .header__mobile-menu .header__mobile-menu-icon--open {
    display: inline-block; }
  .header__mobile-menu .header__mobile-menu-icon--close {
    display: none; }
  @media (min-width: 992px) {
    .header__mobile-menu {
      display: none; } }

.header__mobile-menu--open .header__mobile-menu-icon--open {
  display: none; }

.header__mobile-menu--open .header__mobile-menu-icon--close {
  display: inline-block; }

@media (min-width: 992px) {
  .header__overlay {
    -webkit-box-shadow: 0 5px 5px 0px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0 5px 5px 0px rgba(0, 0, 0, 0.2);
    box-shadow: 0 5px 5px 0px rgba(0, 0, 0, 0.2);
    position: absolute;
    top: 122px;
    left: 0;
    width: 100%;
    height: 10px;
    background-color: transparent;
    display: block;
    z-index: 500; } }

footer {
  background-color: #734897;
  width: 100%;
  position: relative;
  float: left;
  padding: 0 10px;
  overflow: auto; }

.footer__content {
  margin: 20px auto;
  position: relative;
  z-index: 1;
  padding-top: 20px;
  border-top: 5px dotted #fff;
  overflow: hidden;
  text-align: center; }
  @media (min-width: 992px) {
    .footer__content {
      border-bottom: 5px dotted #fff;
      border-top: none;
      border-color: #fff;
      height: 140px;
      overflow: visible;
      margin: 0 auto 80px; } }

footer:before {
  background: #734897 none repeat scroll 0 0;
  content: "";
  display: block;
  height: 70px;
  left: 0;
  position: absolute;
  top: -30px;
  transform: skew(0deg, -2deg);
  width: 100%;
  z-index: 0; }

.footer__pshe {
  width: 106px;
  height: 102px;
  display: inline-block;
  color: #fff;
  text-decoration: none;
  font-size: 0.8em;
  text-align: center; }
  .footer__pshe svg {
    margin-top: 8px;
    height: 70px; }
  @media (min-width: 992px) {
    .footer__pshe {
      float: left; } }

.content {
  padding-bottom: 75px; }

/* === MODULES  === */
.mainnav__nav {
  display: block;
  float: left; }
  @media (max-width: 992px) {
    .mainnav__nav.mainnav__nav--header {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      background-color: #E35197;
      display: none;
      z-index: 200; }
      .mainnav__nav.mainnav__nav--header .mainnav__list, .mainnav__nav.mainnav__nav--header .mainnav__item {
        width: 100%; }
      .mainnav__nav.mainnav__nav--header .mainnav__item {
        float: left;
        clear: left;
        text-align: center; }
      .mainnav__nav.mainnav__nav--header .mainnav__link {
        padding: 17px 10px; } }
  @media (min-width: 992px) {
    .mainnav__nav.mainnav__nav--header {
      display: block !important; } }

.mainnav__social, .mainnav__utilities {
  display: block;
  float: right; }

@media (max-width: 992px) {
  .mainnav__social {
    float: left; } }

@media (min-width: 992px) and (max-width: 1200px) {
  .mainnav__social.mainnav__social--header {
    display: none; } }

.mainnav__social--footer {
  position: relative;
  float: none;
  clear: both;
  padding-top: 10px; }
  @media (min-width: 992px) {
    .mainnav__social--footer {
      float: right;
      clear: none;
      padding-top: 0; } }

.mainnav__social-title {
  color: #fff;
  margin: 2em 0 0; }
  @media (min-width: 480px) {
    .mainnav__social-title {
      text-align: center; } }
  @media (min-width: 992px) {
    .mainnav__social-title {
      position: absolute;
      top: 0;
      top: -2em;
      width: 100%; } }

.mainnav__utilities {
  margin-right: -15px; }
  @media (max-width: 992px) {
    .mainnav__utilities {
      float: right; } }

.mainnav__list {
  display: block;
  list-style: none;
  margin: 0;
  padding: 0; }

.mainnav__item {
  display: inline-block; }

.mainnav__link {
  text-decoration: none;
  font-size: 1.2rem;
  display: inline-block;
  color: #fff;
  padding: 29px 15px;
  font-weight: normal; }
  @media (min-width: 1200px) {
    .mainnav__link {
      font-size: 1.5rem;
      padding: 27px 15px; } }
  .mainnav__link.mainnav__link-utility {
    font-size: 1.1rem;
    padding: 18px 13px; }
    @media (min-width: 992px) {
      .mainnav__link.mainnav__link-utility {
        padding: 31px 20px; } }
  .mainnav__link.mainnav__link-social {
    padding: 14px 5px;
    font-size: 1rem; }
    @media (min-width: 992px) {
      .mainnav__link.mainnav__link-social {
        padding: 27px 2px; } }
    .mainnav__link.mainnav__link-social i {
      overflow: hidden;
      height: 25px;
      width: 25px;
      line-height: 20px;
      background-color: #fff;
      color: #E35197;
      display: block;
      border-radius: 50%;
      text-align: center;
      padding: 2px 0 0 1px; }
    .mainnav__link.mainnav__link-social.mainnav__link-social--large {
      font-size: 1.4rem; }
      .mainnav__link.mainnav__link-social.mainnav__link-social--large i {
        height: 36px;
        width: 36px;
        line-height: 33px;
        background-color: #F3E855;
        color: #E35197; }

.mainnav__link--login {
  background-color: #734897;
  margin-left: 10px; }

.mainnav__link--register {
  background-color: #F3E855;
  color: #E35197;
  font-weight: bold;
  margin-left: -5px; }

.mainnav__footer {
  padding: 0;
  margin: 0; }
  .mainnav__footer .mainnav__link {
    color: #F3E855; }
  @media (min-width: 992px) {
    .mainnav__footer {
      float: left; } }
  @media (max-width: 992px) {
    .mainnav__footer {
      clear: left; }
      .mainnav__footer .mainnav__item {
        width: 100%; }
      .mainnav__footer .mainnav__link.mainnav__link-utility {
        padding: 18px 0 0 0; } }

.button {
  background-color: #fff;
  clear: both;
  display: inline-block;
  text-align: center;
  text-decoration: none;
  font-family: "ProximaNova-Regular", Arial, sans-serif;
  font-size: 1rem;
  letter-spacing: 0.05em;
  line-height: 1.2rem;
  padding: 12px;
  border: none; }

.button--margin-top {
  margin-top: 20px; }

.button--margin-right {
  margin-right: 40px; }

.button--margin-bottom {
  margin-bottom: 1rem; }

.button--margin-left {
  margin-left: 40px; }

.button--full-width {
  width: 100%; }

.button--large {
  font-size: 1.1em;
  letter-spacing: 0.1em;
  line-height: 1.3rem;
  padding: 16px; }

.button--uppercase {
  text-transform: uppercase; }

.button--capitalise {
  text-transform: capitalize; }

.button--white {
  background-color: #fff; }

.button--green {
  background-color: #84E2D7; }

.button--purple {
  background-color: #734897; }

.button--pink {
  background-color: #E35197; }

.button--yellow {
  background-color: #F3E855; }

.button--text-white {
  color: #fff; }

.button--text-purple {
  color: #734897; }

.button--text-pink {
  color: #E35197; }

.button--border-white {
  border: 2px solid #fff; }

.button--border-yellow {
  border: 2px solid #F3E855; }

.button--border-purple {
  border: 2px solid #734897; }

.button--border-pink {
  border: 2px solid #E35197; }

/* === Media variations === */
@media print {
  .button {
    display: none; } }

.form__block {
  margin-bottom: 1rem; }
  .form__block:last-child {
    margin-bottom: 0; }
  .form__block.form__block--wide {
    max-width: 100%; }
  @media (min-width: 480px) {
    .form__block {
      max-width: 320px; } }

.form__label {
  width: 100%;
  display: block;
  font-size: 1rem;
  margin-bottom: 8px;
  letter-spacing: 0.3px;
  text-transform: lowercase;
  color: #fff;
  font-family: "ProximaNova-Regular", Arial, sans-serif; }

.form__label--reset {
  text-transform: none; }

.form__field {
  display: block;
  padding: 4px 10px;
  background: #fff;
  width: 100%;
  border: none;
  line-height: 42px;
  height: 42px;
  outline: none; }

.form__title {
  color: #F3E855; }

.form__subtitle {
  color: #fff; }

select.form__field {
  padding-right: 0; }

.form__field--checkbox {
  float: left;
  margin-right: 8px; }

.form__field--select {
  padding: 13px 10px; }

.form__field--textarea {
  height: 250px; }

.form__field--error {
  background: #734897;
  color: white; }

p.field__error {
  color: #fff !important;
  margin-top: 6px;
  font-style: italic; }

.is-hidden {
  display: none; }

.form__wrapper {
  background-color: #E35197;
  padding: 25px 0 100px;
  margin-bottom: -75px;
  margin-top: 20px; }

legend {
  padding: 0;
  float: left;
  width: 100%;
  color: #fff;
  text-transform: uppercase;
  margin: 1.5em 0;
  font-size: 1.7rem; }

legend + p {
  margin-top: 0; }

fieldset {
  border: 0;
  padding: 0.01em 0 0 0;
  margin: 0;
  min-width: 0; }

body:not(:-moz-handler-blocked) fieldset {
  display: table-cell; }

.hero {
  background-repeat: no-repeat;
  background-position: center top;
  background-size: 100% auto;
  padding-top: 40%; }
  @media (min-width: 992px) {
    .hero {
      padding-top: 0;
      height: 380px; } }
  @media (min-width: 1200px) {
    .hero {
      padding-top: 0;
      height: 450px; } }

.hero--default {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/default.jpg"); }

.hero--pattern {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/pattern.jpg"); }

.hero--8-11 {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/8-11.jpg"); }

.hero--11-12 {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/11-12.jpg"); }

.hero--age-group {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/age-group.jpg"); }

.hero--news {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/news.jpg"); }

.hero--article {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/article.jpg"); }

.hero--parents {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/parents.jpg"); }

.hero--girl-group {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/girl-group.jpg"); }

.hero--betty-bus {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/betty-bus.jpg"); }

.hero--girl-bed {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/girl-bed.jpg"); }

.hero--error {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/error.jpg"); }

.hero--animated {
  background-image: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/animated.jpg");
  padding-top: 24%; }
  @media (min-width: 992px) {
    .hero--animated {
      padding-top: 0;
      height: 279px; } }
  @media (min-width: 1200px) {
    .hero--animated {
      padding-top: 0;
      height: 336px; } }
  @media (min-width: 992px) {
    .hero--animated .hero__banner {
      margin-top: 190px; } }
  @media (min-width: 1200px) {
    .hero--animated .hero__banner {
      margin-top: 240px; } }

.hero--video {
  overflow: hidden;
  position: relative;
  padding-top: 56.5%; }
  .hero--video .hero__banner {
    display: none; }
  @media (min-width: 1050px) {
    .hero--video {
      padding-top: 45%; }
      .hero--video .hero__banner {
        position: absolute;
        display: block;
        z-index: 200;
        bottom: 65px; } }

.hero__content {
  margin-top: -25px; }
  @media (min-width: 992px) {
    .hero__content {
      margin-top: -100px; } }

.hero__banner {
  padding: 10px 18px;
  background-color: #734897;
  display: block;
  float: left;
  font-family: "ProximaNova-Regular", Arial, sans-serif;
  font-size: 1.1em;
  display: none; }
  @media (min-width: 992px) {
    .hero__banner {
      font-size: 1.3em;
      margin-top: 275px;
      display: block; } }
  @media (min-width: 1200px) {
    .hero__banner {
      margin-top: 350px; } }
  .hero__banner p {
    margin: 0;
    color: #fff; }

@media (min-width: 992px) {
  .hero__copy {
    position: absolute;
    top: 60px;
    left: 20px; } }

.hero__play {
  background-color: #E35197;
  height: 70px;
  width: 70px;
  border-radius: 50%;
  padding-top: 20px;
  padding-left: 6px;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-top: -85px;
  margin-left: -35px;
  text-align: center;
  cursor: pointer; }
  .hero__play i {
    display: block;
    font-size: 2rem;
    color: #fff; }
  @media (min-width: 992px) {
    .hero__play {
      height: 140px;
      width: 140px;
      margin-top: -70px;
      margin-left: -70px;
      padding-top: 38px;
      padding-left: 10px; }
      .hero__play i {
        font-size: 4rem; } }

.hero__video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: block;
  z-index: 99; }

.aside-promo {
  background: url("https://bettyforschools.co.uk/bundles/app/assets/images/aside-promo/repeating-tile.png") repeat #E35197;
  padding: 30px; }

.aside-promo--top-margin {
  margin-top: 40px; }

.aside-promo__title {
  margin: 0;
  color: #fff;
  font-size: 1.4rem;
  font-weight: normal; }

.school__wrapper {
  background-color: #734897;
  padding: 10px 20px; }

.school__row {
  display: block;
  position: relative;
  list-style-type: none;
  background: #fff;
  padding: 13px 120px 13px 20px;
  color: #734897;
  margin-bottom: 10px;
  text-decoration: none; }
  .school__row:last-child {
    margin-bottom: 0; }
  .school__row .button--pink {
    top: 0;
    bottom: 0;
    height: auto;
    margin: 0;
    position: absolute;
    right: 0; }
  .school__row .school__postcode, .school__row .school__name {
    color: #734897; }

.school__postcode {
  font-weight: bold; }

.school__title {
  color: #fff; }

.school__list {
  margin-bottom: 1rem; }

.school__summary {
  background-color: #734897;
  padding: 20px;
  padding-left: 120px;
  background: url("https://bettyforschools.co.uk/bundles/app/assets/images/school/your-school.png") 30px 30px no-repeat #734897; }
  .school__summary h4, .school__summary p {
    color: #fff; }

.school__summary-else {
  color: #fff; }

@media (min-width: 992px) {
  .school__row {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    height: 43px; }
  .school__postcode {
    width: 20%;
    float: left; } }

.news__article {
  background: url("https://bettyforschools.co.uk/bundles/app/assets/images/aside-promo/repeating-tile.png") repeat #E35197;
  overflow: auto;
  position: relative;
  margin-bottom: 30px; }
  .news__article img {
    float: left;
    width: 100%; }
    @media (min-width: 992px) {
      .news__article img {
        max-width: 300px; } }
  .news__article .news__article-title {
    background-color: #F3E855;
    padding: 10px;
    margin: 20px 0 0 0;
    float: left;
    color: #734897;
    font-family: "ProximaNova-Regular", Arial, sans-serif; }
  .news__article .news__article-intro {
    float: left;
    padding: 10px;
    color: #fff; }
  .news__article .button {
    float: right;
    margin: 0 10px 10px; }
    @media (min-width: 992px) {
      .news__article .button {
        float: none;
        position: absolute;
        right: 10px;
        bottom: 10px;
        margin: 0; } }
  .news__article.news__article--expanded {
    padding-top: 25%;
    min-height: 210px;
    overflow: hidden; }
    .news__article.news__article--expanded img {
      width: 100%;
      max-width: none;
      position: absolute;
      left: 0;
      top: 0; }
    .news__article.news__article--expanded .news__article-title {
      position: absolute;
      left: 0;
      top: 30px;
      background-color: #734897;
      color: #fff; }
    .news__article.news__article--expanded .button {
      float: none;
      position: absolute;
      right: 10px;
      bottom: 10px;
      margin: 0; }

.resource__wrapper {
  margin-top: 50px; }

.resource__image {
  width: 100%; }

.resource__time {
  color: #F3E855;
  font-size: 1.1rem;
  background: url("https://bettyforschools.co.uk/bundles/app/assets/images/resource/resource-time.png") no-repeat left;
  padding: 15px 0 15px 50px; }

.resource__content {
  background-color: #734897;
  padding: 20px;
  height: 100%;
  margin-top: -4px; }
  .resource__content > div {
    padding-bottom: 10px; }
  .resource__content h4:not(.resource__time), .resource__content p {
    color: #fff; }

.resource__footer {
  margin-top: 5rem;
  background-color: #E35197;
  padding: 25px 0 100px;
  margin-bottom: -75px; }
  .resource__footer h1, .resource__footer p {
    color: #fff; }

.betty-bus-tour__title-wrap {
  top: 20px; }

.betty-bus-tour__title {
  font-family: "MuseoSlab-500", Arial, sans-serif;
  font-size: 3.5rem;
  margin: 0.5em 0 0 0; }
  @media (min-width: 992px) {
    .betty-bus-tour__title {
      color: #F3E855; } }

.betty-bus-tour__subtitle {
  margin: 0; }
  @media (min-width: 992px) {
    .betty-bus-tour__subtitle {
      color: #fff; } }

.betty-bus-tour__dates {
  margin: 0; }
  @media (min-width: 992px) {
    .betty-bus-tour__dates {
      color: #fff;
      font-size: 1.2rem; } }

.betty-bus-tour__image {
  width: 100%; }

.quote {
  background: url("https://bettyforschools.co.uk/bundles/app/assets/images/betty-bus/quote-tile.png") repeat #fff;
  padding: 25px;
  margin-top: 30px;
  overflow: auto; }
  .quote blockquote {
    background-color: #F3E855;
    color: #E35197;
    padding: 10px;
    font-size: 2.5rem;
    font-family: "MuseoSlab-500", Arial, sans-serif;
    margin: 0; }
  .quote svg {
    float: right;
    width: 75px;
    height: 75px;
    margin-top: 20px; }

#interactive-body-opacity {
  transition: opacity 0.5s ease-in-out;
  opacity: 0;
  width: 100%;
  height: 100vh;
  position: absolute;
  z-index: -1;
  background-color: #734897;
  visibility: hidden; }
  @media (min-width: 1050px) {
    #interactive-body-opacity {
      visibility: visible; } }
  #interactive-body-opacity.hidden-op {
    z-index: 999;
    opacity: 0.95; }

.interactive .iframe-container {
  position: relative;
  width: 100%;
  height: 700px;
  display: none; }
  .interactive .iframe-container.fullscreened {
    width: 96%;
    max-width: 1440px;
    height: 92%;
    max-height: 828px;
    position: fixed;
    z-index: 1000;
    left: 0;
    right: 0;
    margin: 0 auto;
    top: 4%;
    opacity: 1 !important; }
    .interactive .iframe-container.fullscreened iframe {
      border: 4px solid white; }
  @media (min-width: 1050px) {
    .interactive .iframe-container {
      display: block; } }

.interactive #iframe-container__target-click {
  z-index: 1001;
  background-color: transparent;
  cursor: pointer;
  position: absolute;
  top: 0;
  right: 0;
  height: 60px;
  width: 60px; }
  .interactive #iframe-container__target-click.fullscreened {
    position: absolute; }

.interactive iframe {
  border: none;
  display: none;
  overflow-y: hidden;
  height: 100%;
  width: 100%; }
  @media (min-width: 1050px) {
    .interactive iframe {
      display: block; } }

.interactive .interactive__disabled {
  display: block; }
  @media (min-width: 1050px) {
    .interactive .interactive__disabled {
      display: none; } }

.video-container {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  background: #000000; }

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

.video-enlarge {
  position: absolute;
  background-color: #fff;
  border-radius: 50%;
  color: #734897;
  font-weight: bold;
  display: none;
  top: 20px;
  right: 20px;
  height: 36px;
  width: 36px;
  z-index: 150;
  padding-top: 6px;
  padding-left: 3px;
  text-decoration: none;
  text-align: center;
  font-family: "ProximaNova-Regular", Arial, sans-serif; }
  @media (min-width: 1050px) {
    .video-enlarge {
      display: block; } }

@media (min-width: 1050px) {
  .video-mask {
    background: url("https://bettyforschools.co.uk/bundles/app/assets/images/hero/video-mask.png") no-repeat bottom center;
    height: 180px;
    width: 100%;
    position: absolute;
    left: 0;
    bottom: 0;
    z-index: 150; } }

.preheader {
  background-color: #fff;
  text-align: center;
  display: none; }
  .preheader img, .preheader p, .preheader a {
    display: inline-block; }
  .preheader img {
    margin: 0.5rem 2rem -0.6rem; }
  .preheader p {
    font-size: 0.8rem; }
    .preheader p strong {
      margin-right: 1rem;
      font-size: 1.1rem; }
  .preheader a {
    margin: 0.5rem 0 0.5rem 1.5rem;
    padding: 6px 16px; }
  @media (min-width: 992px) {
    .preheader {
      display: block; } }

.advice-preview__wrapper {
  position: relative;
  margin-bottom: 24px; }
  .advice-preview__wrapper h3 {
    color: #fff;
    background: #E35197;
    padding: 10px 24px;
    margin: 0; }
    @media (min-width: 480px) {
      .advice-preview__wrapper h3 {
        padding: 10px; } }
    @media (min-width: 768px) {
      .advice-preview__wrapper h3 {
        padding: 10px 24px; } }
  .advice-preview__wrapper img {
    width: 100%; }

.advice-preview__txt {
  position: absolute;
  z-index: 4;
  display: block;
  width: 100%;
  height: 100%;
  padding: 22px 44px 24px 34px; }
  @media (min-width: 480px) {
    .advice-preview__txt {
      padding: 15px; } }
  @media (min-width: 768px) {
    .advice-preview__txt {
      padding: 22px 44px 24px 34px; } }

.advice-preview__button {
  position: absolute;
  right: 24px;
  bottom: 26px; }

/**
 * Featured block used by the /parents
 */
.block-featured {
  background: #F3E855;
  padding-bottom: 30px;
  margin-bottom: 24px; }
  .block-featured h3 {
    font-size: 48px;
    font-size: 3rem;
    display: inline-block;
    margin-top: 30px;
    padding: 13px 18px;
    color: #fff;
    background: #E35197;
    width: 100%; }
    @media (min-width: 768px) {
      .block-featured h3 {
        width: auto;
        min-width: 200px; } }
  .block-featured--color-green {
    background: #84E2D7; }

.block-featured__txt {
  margin-top: 13px;
  padding: 10px 30px 10px 20px; }
  .block-featured__txt p {
    line-height: 19;
    line-height: 1.1875rem; }

.block-featured__button {
  float: right;
  margin-right: 30px; }

/**
 * News block promo
 */
.block-news-promo {
  position: relative;
  background: #734897; }
  .block-news-promo h2 {
    font-size: 40px;
    font-size: 2.5rem;
    color: #fff;
    background: #E35197; }

.block-news-promo__left-panel {
  font-size: 0; }
  @media (min-width: 768px) {
    .block-news-promo__left-panel {
      width: 50%; } }

.block-news-promo__right-panel {
  padding-bottom: 30px; }
  @media (min-width: 768px) {
    .block-news-promo__right-panel {
      position: absolute;
      display: block;
      top: 0;
      height: 100%;
      margin-left: 50%;
      padding-bottom: 0; } }
  .block-news-promo__right-panel .block-news-promor__panel-wrap {
    padding-right: 30px; }
  .block-news-promo__right-panel h2 {
    margin-top: 22px;
    padding: 20px 30px 20px 18px; }
    @media (min-width: 768px) {
      .block-news-promo__right-panel h2 {
        font-size: 24px;
        font-size: 1.5rem;
        padding: 10px 20px; } }
    @media (min-width: 1200px) {
      .block-news-promo__right-panel h2 {
        font-size: 40px;
        font-size: 2.5rem;
        padding: 20px 30px 20px 18px; } }
  .block-news-promo__right-panel a {
    float: right;
    position: relative;
    margin-top: 9px; }
    @media (min-width: 768px) {
      .block-news-promo__right-panel a {
        position: absolute;
        right: 30px;
        bottom: 30px; } }

.parents .parents__intro h1, .parents .parents__intro h2 {
  margin-bottom: 0; }

.parents .parents__intro p:first-of-type {
  margin-top: 5px; }

.parents .block-news-promo {
  margin: 6px 0 40px 0; }

.parents .parent-advice {
  padding-bottom: 23px; }
  .parents .parent-advice h2 {
    font-size: 48px;
    font-size: 3rem; }

/* === TRUMPS  === */
.p-l-0 {
  padding-left: 0; }

.m-l-0 {
  margin-left: 0; }

.b-l-0 {
  border-left: none; }

.p-l-1 {
  padding-left: 1em; }

.m-l-1 {
  margin-left: 1em; }

.b-l-1 {
  border-left: 1px solid black; }

.p-l-2 {
  padding-left: 2em; }

.m-l-2 {
  margin-left: 2em; }

.b-l-2 {
  border-left: 2px solid black; }

.p-l-3 {
  padding-left: 3em; }

.m-l-3 {
  margin-left: 3em; }

.b-l-3 {
  border-left: 3px solid black; }

.p-l-4 {
  padding-left: 4em; }

.m-l-4 {
  margin-left: 4em; }

.b-l-4 {
  border-left: 4px solid black; }

.p-t-0 {
  padding-top: 0; }

.m-t-0 {
  margin-top: 0; }

.b-t-0 {
  border-top: none; }

.p-t-1 {
  padding-top: 1em; }

.m-t-1 {
  margin-top: 1em; }

.b-t-1 {
  border-top: 1px solid black; }

.p-t-2 {
  padding-top: 2em; }

.m-t-2 {
  margin-top: 2em; }

.b-t-2 {
  border-top: 2px solid black; }

.p-t-3 {
  padding-top: 3em; }

.m-t-3 {
  margin-top: 3em; }

.b-t-3 {
  border-top: 3px solid black; }

.p-t-4 {
  padding-top: 4em; }

.m-t-4 {
  margin-top: 4em; }

.b-t-4 {
  border-top: 4px solid black; }

.p-r-0 {
  padding-right: 0; }

.m-r-0 {
  margin-right: 0; }

.b-r-0 {
  border-right: none; }

.p-r-1 {
  padding-right: 1em; }

.m-r-1 {
  margin-right: 1em; }

.b-r-1 {
  border-right: 1px solid black; }

.p-r-2 {
  padding-right: 2em; }

.m-r-2 {
  margin-right: 2em; }

.b-r-2 {
  border-right: 2px solid black; }

.p-r-3 {
  padding-right: 3em; }

.m-r-3 {
  margin-right: 3em; }

.b-r-3 {
  border-right: 3px solid black; }

.p-r-4 {
  padding-right: 4em; }

.m-r-4 {
  margin-right: 4em; }

.b-r-4 {
  border-right: 4px solid black; }

.p-b-0 {
  padding-bottom: 0; }

.m-b-0 {
  margin-bottom: 0; }

.b-b-0 {
  border-bottom: none; }

.p-b-1 {
  padding-bottom: 1em; }

.m-b-1 {
  margin-bottom: 1em; }

.b-b-1 {
  border-bottom: 1px solid black; }

.p-b-2 {
  padding-bottom: 2em; }

.m-b-2 {
  margin-bottom: 2em; }

.b-b-2 {
  border-bottom: 2px solid black; }

.p-b-3 {
  padding-bottom: 3em; }

.m-b-3 {
  margin-bottom: 3em; }

.b-b-3 {
  border-bottom: 3px solid black; }

.p-b-4 {
  padding-bottom: 4em; }

.m-b-4 {
  margin-bottom: 4em; }

.b-b-4 {
  border-bottom: 4px solid black; }

.ratio-1-1 {
  position: relative; }
  .ratio-1-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-1-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-2 {
  position: relative; }
  .ratio-1-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 200%; }
  .ratio-1-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-3 {
  position: relative; }
  .ratio-1-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 300%; }
  .ratio-1-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-4 {
  position: relative; }
  .ratio-1-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 400%; }
  .ratio-1-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-5 {
  position: relative; }
  .ratio-1-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 500%; }
  .ratio-1-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-6 {
  position: relative; }
  .ratio-1-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 600%; }
  .ratio-1-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-7 {
  position: relative; }
  .ratio-1-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 700%; }
  .ratio-1-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-8 {
  position: relative; }
  .ratio-1-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 800%; }
  .ratio-1-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-9 {
  position: relative; }
  .ratio-1-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 900%; }
  .ratio-1-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-1-10 {
  position: relative; }
  .ratio-1-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 1000%; }
  .ratio-1-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-1 {
  position: relative; }
  .ratio-2-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 50%; }
  .ratio-2-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-2 {
  position: relative; }
  .ratio-2-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-2-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-3 {
  position: relative; }
  .ratio-2-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 150%; }
  .ratio-2-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-4 {
  position: relative; }
  .ratio-2-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 200%; }
  .ratio-2-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-5 {
  position: relative; }
  .ratio-2-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 250%; }
  .ratio-2-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-6 {
  position: relative; }
  .ratio-2-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 300%; }
  .ratio-2-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-7 {
  position: relative; }
  .ratio-2-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 350%; }
  .ratio-2-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-8 {
  position: relative; }
  .ratio-2-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 400%; }
  .ratio-2-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-9 {
  position: relative; }
  .ratio-2-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 450%; }
  .ratio-2-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-2-10 {
  position: relative; }
  .ratio-2-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 500%; }
  .ratio-2-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-1 {
  position: relative; }
  .ratio-3-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 33.33333%; }
  .ratio-3-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-2 {
  position: relative; }
  .ratio-3-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 66.66667%; }
  .ratio-3-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-3 {
  position: relative; }
  .ratio-3-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-3-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-4 {
  position: relative; }
  .ratio-3-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 133.33333%; }
  .ratio-3-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-5 {
  position: relative; }
  .ratio-3-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 166.66667%; }
  .ratio-3-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-6 {
  position: relative; }
  .ratio-3-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 200%; }
  .ratio-3-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-7 {
  position: relative; }
  .ratio-3-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 233.33333%; }
  .ratio-3-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-8 {
  position: relative; }
  .ratio-3-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 266.66667%; }
  .ratio-3-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-9 {
  position: relative; }
  .ratio-3-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 300%; }
  .ratio-3-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-3-10 {
  position: relative; }
  .ratio-3-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 333.33333%; }
  .ratio-3-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-1 {
  position: relative; }
  .ratio-4-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 25%; }
  .ratio-4-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-2 {
  position: relative; }
  .ratio-4-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 50%; }
  .ratio-4-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-3 {
  position: relative; }
  .ratio-4-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 75%; }
  .ratio-4-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-4 {
  position: relative; }
  .ratio-4-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-4-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-5 {
  position: relative; }
  .ratio-4-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 125%; }
  .ratio-4-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-6 {
  position: relative; }
  .ratio-4-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 150%; }
  .ratio-4-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-7 {
  position: relative; }
  .ratio-4-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 175%; }
  .ratio-4-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-8 {
  position: relative; }
  .ratio-4-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 200%; }
  .ratio-4-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-9 {
  position: relative; }
  .ratio-4-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 225%; }
  .ratio-4-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-4-10 {
  position: relative; }
  .ratio-4-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 250%; }
  .ratio-4-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-1 {
  position: relative; }
  .ratio-5-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 20%; }
  .ratio-5-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-2 {
  position: relative; }
  .ratio-5-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 40%; }
  .ratio-5-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-3 {
  position: relative; }
  .ratio-5-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 60%; }
  .ratio-5-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-4 {
  position: relative; }
  .ratio-5-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 80%; }
  .ratio-5-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-5 {
  position: relative; }
  .ratio-5-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-5-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-6 {
  position: relative; }
  .ratio-5-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 120%; }
  .ratio-5-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-7 {
  position: relative; }
  .ratio-5-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 140%; }
  .ratio-5-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-8 {
  position: relative; }
  .ratio-5-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 160%; }
  .ratio-5-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-9 {
  position: relative; }
  .ratio-5-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 180%; }
  .ratio-5-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-5-10 {
  position: relative; }
  .ratio-5-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 200%; }
  .ratio-5-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-1 {
  position: relative; }
  .ratio-6-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 16.66667%; }
  .ratio-6-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-2 {
  position: relative; }
  .ratio-6-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 33.33333%; }
  .ratio-6-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-3 {
  position: relative; }
  .ratio-6-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 50%; }
  .ratio-6-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-4 {
  position: relative; }
  .ratio-6-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 66.66667%; }
  .ratio-6-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-5 {
  position: relative; }
  .ratio-6-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 83.33333%; }
  .ratio-6-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-6 {
  position: relative; }
  .ratio-6-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-6-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-7 {
  position: relative; }
  .ratio-6-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 116.66667%; }
  .ratio-6-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-8 {
  position: relative; }
  .ratio-6-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 133.33333%; }
  .ratio-6-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-9 {
  position: relative; }
  .ratio-6-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 150%; }
  .ratio-6-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-6-10 {
  position: relative; }
  .ratio-6-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 166.66667%; }
  .ratio-6-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-1 {
  position: relative; }
  .ratio-7-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 14.28571%; }
  .ratio-7-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-2 {
  position: relative; }
  .ratio-7-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 28.57143%; }
  .ratio-7-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-3 {
  position: relative; }
  .ratio-7-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 42.85714%; }
  .ratio-7-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-4 {
  position: relative; }
  .ratio-7-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 57.14286%; }
  .ratio-7-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-5 {
  position: relative; }
  .ratio-7-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 71.42857%; }
  .ratio-7-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-6 {
  position: relative; }
  .ratio-7-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 85.71429%; }
  .ratio-7-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-7 {
  position: relative; }
  .ratio-7-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-7-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-8 {
  position: relative; }
  .ratio-7-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 114.28571%; }
  .ratio-7-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-9 {
  position: relative; }
  .ratio-7-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 128.57143%; }
  .ratio-7-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-7-10 {
  position: relative; }
  .ratio-7-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 142.85714%; }
  .ratio-7-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-1 {
  position: relative; }
  .ratio-8-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 12.5%; }
  .ratio-8-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-2 {
  position: relative; }
  .ratio-8-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 25%; }
  .ratio-8-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-3 {
  position: relative; }
  .ratio-8-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 37.5%; }
  .ratio-8-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-4 {
  position: relative; }
  .ratio-8-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 50%; }
  .ratio-8-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-5 {
  position: relative; }
  .ratio-8-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 62.5%; }
  .ratio-8-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-6 {
  position: relative; }
  .ratio-8-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 75%; }
  .ratio-8-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-7 {
  position: relative; }
  .ratio-8-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 87.5%; }
  .ratio-8-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-8 {
  position: relative; }
  .ratio-8-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-8-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-9 {
  position: relative; }
  .ratio-8-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 112.5%; }
  .ratio-8-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-8-10 {
  position: relative; }
  .ratio-8-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 125%; }
  .ratio-8-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-1 {
  position: relative; }
  .ratio-9-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 11.11111%; }
  .ratio-9-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-2 {
  position: relative; }
  .ratio-9-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 22.22222%; }
  .ratio-9-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-3 {
  position: relative; }
  .ratio-9-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 33.33333%; }
  .ratio-9-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-4 {
  position: relative; }
  .ratio-9-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 44.44444%; }
  .ratio-9-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-5 {
  position: relative; }
  .ratio-9-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 55.55556%; }
  .ratio-9-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-6 {
  position: relative; }
  .ratio-9-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 66.66667%; }
  .ratio-9-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-7 {
  position: relative; }
  .ratio-9-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 77.77778%; }
  .ratio-9-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-8 {
  position: relative; }
  .ratio-9-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 88.88889%; }
  .ratio-9-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-9 {
  position: relative; }
  .ratio-9-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-9-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-9-10 {
  position: relative; }
  .ratio-9-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 111.11111%; }
  .ratio-9-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-1 {
  position: relative; }
  .ratio-10-1:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 10%; }
  .ratio-10-1 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-2 {
  position: relative; }
  .ratio-10-2:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 20%; }
  .ratio-10-2 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-3 {
  position: relative; }
  .ratio-10-3:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 30%; }
  .ratio-10-3 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-4 {
  position: relative; }
  .ratio-10-4:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 40%; }
  .ratio-10-4 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-5 {
  position: relative; }
  .ratio-10-5:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 50%; }
  .ratio-10-5 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-6 {
  position: relative; }
  .ratio-10-6:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 60%; }
  .ratio-10-6 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-7 {
  position: relative; }
  .ratio-10-7:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 70%; }
  .ratio-10-7 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-8 {
  position: relative; }
  .ratio-10-8:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 80%; }
  .ratio-10-8 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-9 {
  position: relative; }
  .ratio-10-9:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 90%; }
  .ratio-10-9 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

.ratio-10-10 {
  position: relative; }
  .ratio-10-10:before {
    display: block;
    content: "";
    width: 100%;
    padding-top: 100%; }
  .ratio-10-10 > .ratio--content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0; }

/* Utility classes are either useful add in classes that are not related to a module / consistent pattern
   or overriding classes for small changes like additional padding - should rarely be used! */
.u-clearfix {
  clear: both;
  *zoom: 1; }
  .u-clearfix:before, .u-clearfix:after {
    content: " ";
    /* 1 */
    display: table;
    /* 2 */ }
  .u-clearfix:after {
    clear: both; }

.u-no-list {
  list-style-type: none; }

.u-skiptocontent {
  height: 1px;
  width: 1px;
  position: absolute;
  overflow: hidden;
  top: -10px; }
  .u-skiptocontent:focus {
    position: relative;
    top: 0;
    height: auto;
    width: auto;
    padding: 0 10px;
    color: black;
    border-bottom: 1px solid black; }

.u-screenreader {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden; }

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

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

.u-align--center {
  text-align: center;
  margin-left: auto;
  margin-right: auto; }

.u-align--top {
  vertical-align: top; }

.u-align--bottom {
  vertical-align: bottom; }

.u-float--left {
  float: left; }

.u-float--right {
  float: right; }

.u-padding--none {
  padding: 0; }

.u-padding--10 {
  padding: 10px; }

.u-padding--20 {
  padding: 20px; }

.u-margin--top--0 {
  margin-top: 0; }

.u-margin--bottom--0 {
  margin-bottom: 0; }

.u-uppercase {
  text-transform: uppercase; }

.u-hidden {
  display: none; }

.u-inline-block {
  display: inline-block; }

.u-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  background: rgba(0, 0, 0, 0.5); }

.u-cursor--pointer {
  cursor: pointer; }

.u-step-group {
  margin-bottom: 4rem; }
  .u-step-group h4 {
    background-color: #84E2D7;
    padding: 10px;
    float: left;
    margin-right: 20px;
    margin-top: 2px;
    margin-bottom: 50px;
    clear: left;
    position: absolute;
    width: 92px; }
  .u-step-group p {
    padding-left: 120px; }

.u-full-width {
  width: 100%; }

.is-hidden {
  display: none; }

.is-displayed {
  display: block; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXMiOlsic3R5bGVzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9fYnJlYWtwb2ludC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2hlbHBlcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fc2luZ2xlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZGVmYXVsdC1wYWlyLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3RyaXBsZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvcmVzb2x1dGlvbi9fcmVzb2x1dGlvbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2xlZ2FjeS1zZXR0aW5ncy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL21vZHVsYXItc2NhbGUvc3R5bGVzaGVldHMvX21vZHVsYXItc2NhbGUuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvbW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlL19yYXRpb3Muc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvbW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlL190ZXN0cy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9tb2R1bGFyLXNjYWxlL3N0eWxlc2hlZXRzL21vZHVsYXItc2NhbGUvX3Bvdy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9tb2R1bGFyLXNjYWxlL3N0eWxlc2hlZXRzL21vZHVsYXItc2NhbGUvX2NhbGMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvbW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlL19nZW5lcmF0ZS1saXN0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL21vZHVsYXItc2NhbGUvc3R5bGVzaGVldHMvbW9kdWxhci1zY2FsZS9fc29ydC1saXN0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL21vZHVsYXItc2NhbGUvc3R5bGVzaGVldHMvbW9kdWxhci1zY2FsZS9fcm91bmQtcHguc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvbW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlL19mdW5jdGlvbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9tb2R1bGFyLXNjYWxlL3N0eWxlc2hlZXRzL21vZHVsYXItc2NhbGUvX2Z1bmN0aW9uLWxpc3Quc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvbW9kdWxhci1zY2FsZS9zdHlsZXNoZWV0cy9tb2R1bGFyLXNjYWxlL19yZXNwb25kLnNjc3MiLCJsaWJzL19ub3JtYWxpemUuc2NzcyIsImdsb2JhbC9fc2V0dGluZ3Muc2NzcyIsImdsb2JhbC9fbWl4aW5zLnNjc3MiLCJnbG9iYWwvX2ZvbnQtZmFjZS5zY3NzIiwiZ2xvYmFsL190eXBvZ3JhcGh5LnNjc3MiLCJsaWJzL19tYXRlcmlhbC1pY29ucy5zY3NzIiwibGlicy9fZ3JpZC1mcmFtZXdvcmsuc2NzcyIsImxpYnMvX2dyaWQuc2NzcyIsImdsb2JhbC9fYmFzZS5zY3NzIiwiZ2xvYmFsL19pY29ucy5zY3NzIiwibGF5b3V0L19ncmlkLnNjc3MiLCJsYXlvdXQvX2hlYWRlci5zY3NzIiwibGF5b3V0L19mb290ZXIuc2NzcyIsImxheW91dC9fY29udGVudC5zY3NzIiwibW9kdWxlcy9fbG9nby5zY3NzIiwibW9kdWxlcy9fbWFpbm5hdi5zY3NzIiwibW9kdWxlcy9fYnV0dG9uLnNjc3MiLCJtb2R1bGVzL19mb3JtLnNjc3MiLCJtb2R1bGVzL19oZXJvLnNjc3MiLCJtb2R1bGVzL19hc2lkZS1wcm9tby5zY3NzIiwibW9kdWxlcy9fc2Nob29sLnNjc3MiLCJtb2R1bGVzL19uZXdzLnNjc3MiLCJtb2R1bGVzL19yZXNvdXJjZS5zY3NzIiwibW9kdWxlcy9fYmV0dHktYnVzLnNjc3MiLCJtb2R1bGVzL19xdW90ZS5zY3NzIiwibW9kdWxlcy9faW50ZXJhY3RpdmUuc2NzcyIsIm1vZHVsZXMvX3ZpZGVvLnNjc3MiLCJtb2R1bGVzL19wcmVoZWFkZXIuc2NzcyIsIm1vZHVsZXMvX2FkdmljZS5zY3NzIiwibW9kdWxlcy9fYmxvY2tzLnNjc3MiLCJtb2R1bGVzL19wYXJlbnRzLnNjc3MiLCJnbG9iYWwvX3V0aWxpdGllcy5zY3NzIiwiZ2xvYmFsL19zdGF0ZXMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT0gSVRDU1MgOiBvcmdhbmlzZWQgYnkgc3BlY2lmaWNpdHkgPT09ICovXG5cbkBpbXBvcnQgJy4uL2Jvd2VyX2NvbXBvbmVudHMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQnO1xuQGltcG9ydCAnLi4vYm93ZXJfY29tcG9uZW50cy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdCc7XG5AaW1wb3J0ICcuLi9ib3dlcl9jb21wb25lbnRzL21vZHVsYXItc2NhbGUvc3R5bGVzaGVldHMvbW9kdWxhci1zY2FsZSc7XG5cbi8qID09PSBHRU5FUklDICA9PT0gKi9cblxuQGltcG9ydCBcImxpYnMvbm9ybWFsaXplXCI7XG5cblxuLyogPT09IFNFVFRJTkdTICA9PT0gKi9cblxuQGltcG9ydCBcImdsb2JhbC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcImdsb2JhbC9taXhpbnNcIjtcbkBpbXBvcnQgXCJnbG9iYWwvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiZ2xvYmFsL3R5cG9ncmFwaHlcIjtcblxuLyogPT09IFRPT0xTICA9PT0gKi9cblxuLy9AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG5AaW1wb3J0IFwibGlicy9tYXRlcmlhbC1pY29uc1wiO1xuQGltcG9ydCBcImxpYnMvZ3JpZC1mcmFtZXdvcmtcIjtcbkBpbXBvcnQgXCJsaWJzL2dyaWRcIjtcbi8vQGltcG9ydCBcImxpYnMvanF1ZXJ5LXVpXCI7XG5cbi8qID09PSBFTEVNRU5UUyAgPT09ICovXG5cbkBpbXBvcnQgXCJnbG9iYWwvYmFzZVwiO1xuQGltcG9ydCBcImdsb2JhbC9pY29uc1wiO1xuXG4vKiA9PT0gTEFZT1VUICA9PT0gKi9cblxuQGltcG9ydCBcImxheW91dC9ncmlkXCI7XG5AaW1wb3J0IFwibGF5b3V0L2hlYWRlclwiO1xuQGltcG9ydCBcImxheW91dC9mb290ZXJcIjtcbkBpbXBvcnQgXCJsYXlvdXQvY29udGVudFwiO1xuXG4vKiA9PT0gTU9EVUxFUyAgPT09ICovXG5cbkBpbXBvcnQgXCJtb2R1bGVzL2xvZ29cIjtcbkBpbXBvcnQgXCJtb2R1bGVzL21haW5uYXZcIjtcbkBpbXBvcnQgXCJtb2R1bGVzL2J1dHRvblwiO1xuQGltcG9ydCBcIm1vZHVsZXMvZm9ybVwiO1xuQGltcG9ydCBcIm1vZHVsZXMvaGVyb1wiO1xuQGltcG9ydCBcIm1vZHVsZXMvYXNpZGUtcHJvbW9cIjtcbkBpbXBvcnQgXCJtb2R1bGVzL3NjaG9vbFwiO1xuQGltcG9ydCBcIm1vZHVsZXMvbmV3c1wiO1xuQGltcG9ydCBcIm1vZHVsZXMvcmVzb3VyY2VcIjtcbkBpbXBvcnQgXCJtb2R1bGVzL2JldHR5LWJ1c1wiO1xuQGltcG9ydCBcIm1vZHVsZXMvcXVvdGVcIjtcbkBpbXBvcnQgXCJtb2R1bGVzL2ludGVyYWN0aXZlXCI7XG5AaW1wb3J0IFwibW9kdWxlcy92aWRlb1wiO1xuQGltcG9ydCBcIm1vZHVsZXMvcHJlaGVhZGVyXCI7XG5AaW1wb3J0IFwibW9kdWxlcy9hZHZpY2VcIjtcbkBpbXBvcnQgXCJtb2R1bGVzL2Jsb2Nrc1wiO1xuQGltcG9ydCBcIm1vZHVsZXMvcGFyZW50c1wiO1xuXG4vKiA9PT0gVFJVTVBTICA9PT0gKi9cblxuXG5AaW1wb3J0IFwiZ2xvYmFsL3V0aWxpdGllc1wiO1xuQGltcG9ydCBcImdsb2JhbC9zdGF0ZXNcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAoLTEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgxICogJFBYKSAoLTEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL3JhdGlvc1wiO1xuXG4kbXMtYmFzZTogIDFlbSAgICAgICFkZWZhdWx0O1xuJG1zLXJhdGlvOiAkZ29sZGVuICAhZGVmYXVsdDtcbiRtcy1yYW5nZTogbnVsbCAgICAgIWRlZmF1bHQ7XG4kbXMtZmx1aWQ6IHRydWUgICAgICFkZWZhdWx0O1xuXG5AaW1wb3J0IFwibW9kdWxhci1zY2FsZS90ZXN0c1wiO1xuXG5AaW1wb3J0IFwibW9kdWxhci1zY2FsZS9wb3dcIjtcbkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL2NhbGNcIjtcbkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL2dlbmVyYXRlLWxpc3RcIjtcbkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL3NvcnQtbGlzdFwiO1xuQGltcG9ydCBcIm1vZHVsYXItc2NhbGUvcm91bmQtcHhcIjtcbkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL2Z1bmN0aW9uXCI7XG5AaW1wb3J0IFwibW9kdWxhci1zY2FsZS9mdW5jdGlvbi1saXN0XCI7XG5cbkBpbXBvcnQgXCJtb2R1bGFyLXNjYWxlL3Jlc3BvbmRcIjsiLCIvLyBHb2xkZW4gcmF0aW9cbiRwaGkgICAgICAgICAgICAgIDogMS42MTgwMzQgICAgICAgICAgO1xuJGdvbGRlbiAgICAgICAgICAgOiAkcGhpICAgICAgICAgICAgICA7XG5cbiRkb3VibGUtb2N0YXZlICAgIDogNCAgICAgICAgICAgICAgICAgO1xuJG1ham9yLXR3ZWxmdGggICAgOiAzICAgICAgICAgICAgICAgICA7XG4kbWFqb3ItZWxldmVudGggICA6IDIuNjY2NjY2NjY3ICAgICAgIDtcbiRtYWpvci10ZW50aCAgICAgIDogMi41ICAgICAgICAgICAgICAgO1xuJG9jdGF2ZSAgICAgICAgICAgOiAyICAgICAgICAgICAgICAgICA7XG4kbWFqb3Itc2V2ZW50aCAgICA6IDEuODc1ICAgICAgICAgICAgIDtcbiRtaW5vci1zZXZlbnRoICAgIDogMS43Nzc3Nzc3NzggICAgICAgO1xuJG1ham9yLXNpeHRoICAgICAgOiAxLjY2NjY2NjY2NyAgICAgICA7XG4kbWlub3Itc2l4dGggICAgICA6IDEuNiAgICAgICAgICAgICAgIDtcbiRmaWZ0aCAgICAgICAgICAgIDogMS41ICAgICAgICAgICAgICAgO1xuJGF1Z21lbnRlZC1mb3VydGggOiAxLjQxNDIxICAgICAgICAgICA7XG4kZm91cnRoICAgICAgICAgICA6IDEuMzMzMzMzMzMzICAgICAgIDtcbiRtYWpvci10aGlyZCAgICAgIDogMS4yNSAgICAgICAgICAgICAgO1xuJG1pbm9yLXRoaXJkICAgICAgOiAxLjIgICAgICAgICAgICAgICA7XG4kbWFqb3Itc2Vjb25kICAgICA6IDEuMTI1ICAgICAgICAgICAgIDtcbiRtaW5vci1zZWNvbmQgICAgIDogMS4wNjY2NjY2NjcgICAgICAgOyIsIi8vIEZlYXR1cmUgdGVzdGluZ1xuXG5cbi8vIFRlc3QgaWYgdGhlIHBvdygpIGZ1bmN0aW9uIGV4aXN0c1xuQGZ1bmN0aW9uIG1zLXBvdy1leGlzdHMoKSB7XG4gIEBpZiBwb3coNCwgMikgPT0gMTYge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4kTVMtcG93LWV4aXN0czogbXMtcG93LWV4aXN0cygpO1xuXG4vLyBUZXN0IGlmIE1TIHdhcyBpbnN0YWxsZWQgdmlhIHRoZSBnZW1cbkBmdW5jdGlvbiBtcy1nZW0tZXhpc3RzKCkge1xuICBAaWYgbXMtZ2VtLWluc3RhbGxlZCgpID09IHRydWUge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4kTVMtZ2VtLWV4aXN0czogbXMtZ2VtLWV4aXN0cygpOyIsIi8vIElmIGEgbmF0aXZlIGV4cG9uZW50IGZ1bmN0aW9uIGRvZXNudCBleGlzdFxuLy8gdGhpcyBvbmUgaXMgbmVlZGVkLlxuQGZ1bmN0aW9uIG1zLXBvdygkQmFzZSwgJEV4cG9uZW50KSB7XG5cbiAgLy8gRmluZCBhbmQgcmVtb3ZlIHVuaXQuXG4gIC8vIEF2b2lkcyBtZXNzeW5lc3Mgd2l0aCB1bml0IGNhbGN1bGF0aW9uc1xuICAkVW5pdDogJEJhc2UgKiAwICsgMTtcbiAgJEJhc2U6ICRCYXNlLyRVbml0O1xuXG4gIC8vIFRoaXMgZnVuY3Rpb24gZG9lc250IHN1cHBvcnQgbm9uLWludGVyZ2VyIGV4cG9uZW50cy5cbiAgLy8gV2FybiB0aGUgdXNlciBhYm91dCB3aHkgdGhpcyBpcyBicmVha2luZy5cblx0QGlmIHJvdW5kKCRFeHBvbmVudCkgIT0gJEV4cG9uZW50IHtcblx0XHRAd2FybiBcIlVuZm9ydHVuYXRlbHksIHlvdSBuZWVkIENvbXBhc3MgdG8gdXNlIG5vbi1pbnRlZ2VyIGV4cG9uZW50c1wiO1xuXHR9XG5cbiAgLy8gU2V0IHVwIHRoZSBsb29wLCBwcmltaW5nIHRoZSByZXR1cm4gd2l0aCB0aGUgYmFzZS5cblx0JFJldHVybjogJEJhc2U7XG5cbiAgLy8gSWYgdGhlIG51bWJlciBpcyBwb3NpdGl2ZSwgbXVsdGlwbHkgaXQuXG4gIEBpZiAkRXhwb25lbnQgPiAwIHtcbiAgICAvLyBCYXNpYyBmZWVkYmFjayBsb29wIGFzIGV4cG9uZW50c1xuICAgIC8vIGFyZSByZWN1cnNpdmxleSBtdWx0aXBsaWVkIG51bWJlcnMuXG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJEV4cG9uZW50IHtcbiAgICAgICRSZXR1cm46ICRSZXR1cm4gKiAkQmFzZTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgbnVtYmVyIGlzIDAgb3IgbmVnaXRpdmVcbiAgLy8gZGl2aWRlIGluc3RlYWQgb2YgbXVsdGlwbHkuXG4gIEBlbHNlIHtcbiAgICAvLyBMaWJzYXNzIGRvZXNudCBhbGxvdyBuZWdpdGl2ZSB2YWx1ZXMgaW4gbG9vcHNcbiAgICBAZm9yICRpIGZyb20gKC0xICsgMSkgdG8gKGFicygkRXhwb25lbnQpICsgMSkge1xuICAgICAgJFJldHVybjogJFJldHVybiAvICRCYXNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiBpcyBub3cgY29tcG91bmRlZCByZWR5IHRvIGJlIHJldHVybmVkLlxuICAvLyBBZGQgdGhlIHVuaXQgYmFjayBvbnRvIHRoZSBudW1iZXIuXG5cdEByZXR1cm4gJFJldHVybiAqICRVbml0O1xufSIsIkBmdW5jdGlvbiBtcy1jYWxjKCRWYWx1ZSwgJEJhc2U6ICRtcy1iYXNlLCAkUmF0aW86ICRtcy1yYXRpbykge1xuICBcbiAgLy8gSWYgcG93IGV4aXN0cyB1c2UgaXQuXG4gIC8vIEl0IHN1cHBvcnRzIG5vbi1pbnRlcmdlciB2YWx1ZXMhXG4gIEBpZiAkTVMtcG93LWV4aXN0cyB7XG5cbiAgICAvLyBUaGUgZm9ybXVsYSBmb3IgZmlndXJpbmcgb3V0IG1vZHVsYXIgc2NhbGVzIGlzOlxuICAgIC8vIChyXnYpKmJcbiAgICBAcmV0dXJuIHBvdygkUmF0aW8sICRWYWx1ZSkgKiAkQmFzZTtcbiAgfVxuXG4gIC8vIElmIG5vdCwgdXNlIG1zLXBvdygpLlxuICAvLyBOb3QgYXMgZmFzdCBvciBjYXBhYmxlIG9mIG5vbi1pbnRlZ2VyIGV4cG9uZW50cy5cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbXMtcG93KCRSYXRpbywgJFZhbHVlKSAqICRCYXNlO1xuICB9XG59IiwiQGZ1bmN0aW9uIG1zLXJldmVyc2UtbGlzdCgkbGlzdCkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgIEBpZiBudGgoJGxpc3QsIDEpID4gbnRoKCRsaXN0LCBsZW5ndGgoJGxpc3QpKSB7XG4gICAgICAkTVMtcmV2ZXJzZWQtbGlzdDogKCk7XG4gICAgICBAZWFjaCAkVmFsdWUgaW4gJGxpc3Qge1xuICAgICAgICAkTVMtcmV2ZXJzZWQtbGlzdDogam9pbigkVmFsdWUsICRNUy1yZXZlcnNlZC1saXN0KTtcbiAgICAgIH1cbiAgICAgIEByZXR1cm4gJE1TLXJldmVyc2VkLWxpc3Q7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cblxuQGZ1bmN0aW9uIG1zLWdlbmVyYXRlLWxpc3QoJFZhbHVlOiAwLCAkQmFzZXM6ICRtcy1iYXNlLCAkUmF0aW9zOiAkbXMtcmF0aW8pIHtcblxuICAvLyBDcmVhdGUgYmxhbmsgbGlzdHNcbiAgJE1TLWxpc3Q6ICgpO1xuICAkTVMtYmFzZS1saXN0OiAoKTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCByYXRpbyBBTkQgZWFjaCBiYXNlXG4gIC8vIHRvIGdlbmVyYXRlIGFsbCBwb3NzaWJpbGl0aWVzLlxuICBAZWFjaCAkUmF0aW8gaW4gJFJhdGlvcyB7XG4gICAgQGVhY2ggJEJhc2UgaW4gJEJhc2VzIHtcbiAgICAgIFxuICAgICAgLy8gU2V0IGJhc2UgdmFyaWFibGVzXG4gICAgICAkTVMtYmFzZS1saXN0OiAoKTtcbiAgICAgICRCYXNlLWNvdW50ZXI6IDA7XG4gICAgICBcbiAgICAgIC8vIFNlZWQgbGlzdCB3aXRoIGFuIGluaXRpYWwgdmFsdWVcbiAgICAgICRNUy1iYXNlLWxpc3Q6ICRCYXNlO1xuICAgICAgXG4gICAgICAvLyBGaW5kIHZhbHVlcyBvbiBhIHBvc2l0aXZlIHNjYWxlXG4gICAgICBAaWYgJFZhbHVlID49IDAge1xuICAgICAgICBcbiAgICAgICAgLy8gRmluZCBsb3dlciB2YWx1ZXMgb24gdGhlIHNjYWxlXG4gICAgICAgICRCYXNlLWNvdW50ZXI6IC0xO1xuICAgICAgICBAd2hpbGUgbXMtY2FsYygkQmFzZS1jb3VudGVyLCAkQmFzZSwgJFJhdGlvKSA+PSBudGgoJEJhc2VzLCAxKSB7XG4gICAgICAgICAgJE1TLWJhc2UtbGlzdDogam9pbigkTVMtYmFzZS1saXN0LCBtcy1jYWxjKCRCYXNlLWNvdW50ZXIsICRCYXNlLCAkUmF0aW8pKTtcbiAgICAgICAgICAkQmFzZS1jb3VudGVyOiAkQmFzZS1jb3VudGVyIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gRW5zdXJlIHRoZSBsaXN0IGlzIHNtYWxsZXN0IHRvIGxhcmdlc3RcbiAgICAgICAgJE1TLWJhc2UtbGlzdDogbXMtcmV2ZXJzZS1saXN0KCRNUy1iYXNlLWxpc3QpO1xuXG4gICAgICAgIC8vIEZpbmQgaGlnaGVyIHBvc3NpYmxlIHZhbHVlcyBvbiB0aGUgc2NhbGVcbiAgICAgICAgJEJhc2UtY291bnRlcjogMTtcbiAgICAgICAgQHdoaWxlIG1zLWNhbGMoJEJhc2UtY291bnRlciwgJEJhc2UsICRSYXRpbykgPD0gbXMtY2FsYygkVmFsdWUsIG50aCgkQmFzZXMsIDEpLCAkUmF0aW8pIHtcbiAgICAgICAgICAkTVMtYmFzZS1saXN0OiBqb2luKCRNUy1iYXNlLWxpc3QsIG1zLWNhbGMoJEJhc2UtY291bnRlciwgJEJhc2UsICRSYXRpbykpO1xuICAgICAgICAgICRCYXNlLWNvdW50ZXI6ICRCYXNlLWNvdW50ZXIgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgdmFsdWVzIG9uIGEgbmVnaXRpdmUgc2NhbGVcbiAgICAgIEBlbHNlIHtcbiAgICAgICAgXG4gICAgICAgIC8vIEZpbmQgbG93ZXIgdmFsdWVzIG9uIHRoZSBzY2FsZVxuICAgICAgICAkQmFzZS1jb3VudGVyOiAxO1xuICAgICAgICBAd2hpbGUgbXMtY2FsYygkQmFzZS1jb3VudGVyLCAkQmFzZSwgJFJhdGlvKSA8PSBudGgoJEJhc2VzLCAxKSB7XG4gICAgICAgICAgJE1TLWJhc2UtbGlzdDogam9pbigkTVMtYmFzZS1saXN0LCBtcy1jYWxjKCRCYXNlLWNvdW50ZXIsICRCYXNlLCAkUmF0aW8pKTtcbiAgICAgICAgICAkQmFzZS1jb3VudGVyOiAkQmFzZS1jb3VudGVyICsgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgbGlzdCBpcyBzbWFsbGVzdCB0byBsYXJnZXN0XG4gICAgICAgICRNUy1iYXNlLWxpc3Q6IG1zLXJldmVyc2UtbGlzdCgkTVMtYmFzZS1saXN0KTtcblxuICAgICAgICAvLyBGaW5kIGhpZ2hlciBwb3NzaWJsZSB2YWx1ZXMgb24gdGhlIHNjYWxlXG4gICAgICAgICRCYXNlLWNvdW50ZXI6IC0xO1xuICAgICAgICBAd2hpbGUgbXMtY2FsYygkQmFzZS1jb3VudGVyLCAkQmFzZSwgJFJhdGlvKSA+PSBtcy1jYWxjKCRWYWx1ZSwgbnRoKCRCYXNlcywgMSksICRSYXRpbykge1xuICAgICAgICAgICRNUy1jYWxjOiBtcy1jYWxjKCRCYXNlLWNvdW50ZXIsICRCYXNlLCAkUmF0aW8pO1xuICAgICAgICAgIC8vIGRldGVjdCBpZiB0aGUgdmFsdWUgZXhjZWRlcyB0aGUgbWFpbiBiYXNlIHZhbHVlXG4gICAgICAgICAgQGlmICRNUy1jYWxjIDwgbnRoKCRCYXNlcywgMSkge1xuICAgICAgICAgICAgJE1TLWJhc2UtbGlzdDogam9pbigkTVMtYmFzZS1saXN0LCAkTVMtY2FsYyk7XG4gICAgICAgICAgfVxuICAgICAgICAgICRCYXNlLWNvdW50ZXI6ICRCYXNlLWNvdW50ZXIgLSAxO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBUcmltIG91dGxpZXIgYmFzZS5cbiAgICAgICAgQGlmIGxlbmd0aCgkQmFzZXMpID4gMSB7XG4gICAgICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJEJhc2VzKSB7XG4gICAgICAgICAgICBAaWYgbnRoKCRNUy1iYXNlLWxpc3QsIDEpID4gbnRoKCRCYXNlcywgMSkge1xuICAgICAgICAgICAgICAkTVMtbmV3LWxpc3Q6ICgpO1xuICAgICAgICAgICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkTVMtYmFzZS1saXN0KSB7XG4gICAgICAgICAgICAgICAgJE1TLW5ldy1saXN0OiBqb2luKCRNUy1uZXctbGlzdCwgbnRoKCRNUy1iYXNlLWxpc3QsICRpKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgJE1TLWJhc2UtbGlzdDogJE1TLW5ldy1saXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyByZXZlcnNlIGxpc3QgaWYgaXRzIGxhcmdlc3QgdG8gc21hbGxlc3RcbiAgICAgICRNUy1iYXNlLWxpc3Q6IG1zLXJldmVyc2UtbGlzdCgkTVMtYmFzZS1saXN0KTtcblxuICAgICAgLy8gQWRkIG5ldyBwb3NzaWJpbGl0aWVzIHRvIHRoZSBtYXN0ZXIgbGlzdFxuICAgICAgJE1TLWxpc3Q6IGFwcGVuZCgkTVMtbGlzdCwgJE1TLWJhc2UtbGlzdCwgY29tbWEpO1xuXG4gICAgfVxuICB9XG4gIFxuICAvLyBBZnRlciBhbGwgdGhlIHBvc3NpYmlsaXRpZXMgYXJlIGZvdW5kLCBvdXRwdXQgYSBtYXN0ZXIgbGlzdFxuICBAcmV0dXJuICRNUy1saXN0O1xufSIsIi8vIExpc3Qgc29ydGluZyB2aWEgYSBtb2RpZmllZCBtZXJnZS1zb3J0IGFsZ29yeXRobW5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWVyZ2Vfc29ydFxuXG5AZnVuY3Rpb24gbXMtbWVyZ2UoJEEsICRCKSB7XG5cbiAgJFJldHVybjogKCk7XG5cbiAgLy8gU29tZSBlbXB0eSBsaXN0cyBnZXQgcGFzc2VkIHRocm91Z2hcbiAgLy8gc28ganVzdCBwYXNzIHRoZSBvdGhlciBsaXN0IHRocm9ndWhcbiAgQGlmIGxlbmd0aCgkQSkgPT0gMCB7XG4gICAgQHJldHVybiAkQjtcbiAgfVxuXG4gIC8vIElmIGxpc3RzIGZpdCBuZXh0IHRvIGVhY2ggb3RoZXIsIGp1c3QgbWVyZ2UgdGhlbVxuICAvLyBUaGlzIGhlbHBzIHBlcmZvcm1hbmNlIHNraXBwaW5nIHRoZSBuZWVkIHRvIGNoZWNrIGVhY2ggdmFsdWVcbiAgQGlmIG50aCgkQSwgbGVuZ3RoKCRBKSkgPCBudGgoJEIsIDEpIHtcbiAgICBAcmV0dXJuIGpvaW4oJEEsICRCKTtcbiAgfVxuICBAaWYgbnRoKCRCLCBsZW5ndGgoJEIpKSA8IG50aCgkQSwgMSkge1xuICAgIEByZXR1cm4gam9pbigkQiwgJEEpO1xuICB9XG5cbiAgLy8gQ291bnRlcnMgc3RhcnQgYXQgMVxuICAkQS1jb3VudGVyOiAxO1xuICAkQi1jb3VudGVyOiAxO1xuXG4gIC8vIFN0YXJ0IGxvb3BpbmcgdGhyb3VnaCBhbGwgbnVtYmVycyBpbiBhcnJheVxuICBAd2hpbGUgJEEtY291bnRlciA8PSBsZW5ndGgoJEEpIGFuZCAkQi1jb3VudGVyIDw9IGxlbmd0aCgkQikge1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIEEgdmFsdWUgaXMgc21hbGxlclxuICAgIC8vIFVzZXMgb3IgZXF1YWwgdG8gYXZvaWQgZHVwbGljYXRlIG51bWJlcnNcbiAgICBAaWYgbnRoKCRBLCAkQS1jb3VudGVyKSA8PSBudGgoJEIsICRCLWNvdW50ZXIpIHtcbiAgICAgICRSZXR1cm46IGpvaW4oJFJldHVybiwgbnRoKCRBLCAkQS1jb3VudGVyKSk7XG4gICAgICAkQS1jb3VudGVyOiAkQS1jb3VudGVyICsgMTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgQiB2YWx1ZSBpcyBzbWFsbGVyXG4gICAgQGVsc2UgaWYgbnRoKCRBLCAkQS1jb3VudGVyKSA+IG50aCgkQiwgJEItY291bnRlcikge1xuICAgICAgJFJldHVybjogam9pbigkUmV0dXJuLCBudGgoJEIsICRCLWNvdW50ZXIpKTtcbiAgICAgICRCLWNvdW50ZXI6ICRCLWNvdW50ZXIgKyAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biB0aHJvdWdoIHJlbWFpbmRlciB2YWx1ZXMgaW4gdGhlIGxpc3RcbiAgQHdoaWxlICRBLWNvdW50ZXIgPD0gbGVuZ3RoKCRBKSB7XG4gICAgJEN1cnJlbnQ6IG50aCgkQSwgJEEtY291bnRlcik7XG4gICAgQGlmICRDdXJyZW50ICE9IG50aCgkUmV0dXJuLCBsZW5ndGgoJFJldHVybikpIHtcbiAgICAgICRSZXR1cm46IGpvaW4oJFJldHVybiwgJEN1cnJlbnQpO1xuICAgIH1cbiAgICAkQS1jb3VudGVyOiAkQS1jb3VudGVyICsgMTtcbiAgfVxuICBAd2hpbGUgJEItY291bnRlciA8PSBsZW5ndGgoJEIpIHtcbiAgICAkQ3VycmVudDogbnRoKCRCLCAkQi1jb3VudGVyKTtcbiAgICBAaWYgJEN1cnJlbnQgIT0gbnRoKCRSZXR1cm4sIGxlbmd0aCgkUmV0dXJuKSkge1xuICAgICAgJFJldHVybjogam9pbigkUmV0dXJuLCAkQ3VycmVudCk7XG4gICAgfVxuICAgICRCLWNvdW50ZXI6ICRCLWNvdW50ZXIgKyAxO1xuICB9XG5cbiAgLy8gRG9uZSEgcmV0dXJuIGlzIG5vdyBzb3J0ZWQgYW5kIGNvbXBsZXRlXG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuXG5cbi8vIFB1bGwgaXQgYWxsIHRvZ2V0aGVyXG5AZnVuY3Rpb24gbXMtc29ydC1saXN0KCRMaXN0cykge1xuXG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRMaXN0IGluICRMaXN0cyB7XG4gICAgQGlmICRSZXR1cm4gPT0gKCkge1xuICAgICAgJFJldHVybjogJExpc3Q7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRSZXR1cm46IG1zLW1lcmdlKCRMaXN0LCAkUmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICAvLyBmaW5hbCBjbGVhbnVwIG9mIHJlcGVhdGVkIGl0ZW1zXG4gICRMYXN0OiBudWxsO1xuICAkTmV3LWxpc3Q6ICgpO1xuICBAZWFjaCAkSXRlbSBpbiAkUmV0dXJuIHtcbiAgICBAaWYgJEl0ZW0gIT0gJExhc3Qge1xuICAgICAgJE5ldy1saXN0OiBqb2luKCROZXctbGlzdCwgJEl0ZW0pO1xuICAgIH1cbiAgICAkTGFzdDogJEl0ZW07XG4gIH1cbiAgJFJldHVybjogJE5ldy1saXN0O1xuXG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIkBmdW5jdGlvbiBtcy1yb3VuZC1weCgkUmVzdWx0KSB7XG4gIEBpZiB1bml0KCRSZXN1bHQpID09ICdweCcge1xuICAgIEByZXR1cm4gcm91bmQoJFJlc3VsdCk7XG4gIH1cbiAgQHJldHVybiAkUmVzdWx0O1xufSIsIi8vIFRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgYnJpbmdzIGl0IGFsbCB0b2dldGhlclxuQGZ1bmN0aW9uIG1zKCRWYWx1ZTogMCwgJEJhc2VzOiAkbXMtYmFzZSwgJFJhdGlvczogJG1zLXJhdGlvKSB7XG5cbiAgLy8gSWYgbm8gbXVsdGktYmFzZSBvciBtdWx0aS1yYXRpbyBzdHVmZiBpcyBnb2luZyBvblxuICAvLyB0aGVuIGp1c3QgcmV0cm4gdGhlIGJhc2ljIGNhbGN1bGFpdG9uXG4gIEBpZiBsZW5ndGgoJEJhc2VzKSA9PSAxIGFuZCBsZW5ndGgoJFJhdGlvcykgPT0gMSB7XG4gICAgQHJldHVybiBtcy1yb3VuZC1weChtcy1jYWxjKCRWYWx1ZSwgJEJhc2VzLCAkUmF0aW9zKSk7XG4gIH1cblxuICAvLyBEbyBjYWxjdWxhdGlvbnMgZGlyZWN0bHkgaW4gUnVieSB3aGVuIGF2YWxpYmxlXG4gIEBpZiAkTVMtZ2VtLWV4aXN0cyB7XG5cbiAgICAvLyBSZW1vdmUgdW5pdHMgZnJvbSBiYXNlc1xuICAgICRVbml0OiBudGgoJEJhc2VzLCAxKSAqIDAgKyAxOyAvLyBFeHRyYWN0cyB0aGUgdW5pdCBmcm9tIHRoZSBiYXNlXG4gICAgJFVuaXRsZXNzLUJhc2VzOiAoKTtcbiAgICBAZWFjaCAkQmFzZSBpbiAkQmFzZXMge1xuICAgICAgJEJhc2U6ICRCYXNlLyRVbml0O1xuICAgICAgJFVuaXRsZXNzLUJhc2VzOiBqb2luKCRVbml0bGVzcy1CYXNlcywgJEJhc2UpO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSBuYXRpdmVseSBpbiBSdWJ5XG4gICAgQHJldHVybiBtcy1yb3VuZC1weChtcy1nZW0tZnVuYygkVmFsdWUsICRVbml0bGVzcy1CYXNlcywgJFJhdGlvcykgKiAkVW5pdCk7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBhIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIHZhbHVlc1xuICAkUmV0dXJuOiBtcy1nZW5lcmF0ZS1saXN0KCRWYWx1ZSwgJEJhc2VzLCAkUmF0aW9zKTtcblxuICAvLyBTb3J0IHRoZSBnZW5lcmF0ZWQgbGlzdHNcbiAgJFJldHVybjogbXMtc29ydC1saXN0KCRSZXR1cm4pO1xuXG4gIC8vIFJldmVyc2UgbGlzdCBpZiBpdHMgbmVnaXRpdmUuXG4gIEBpZiAkVmFsdWUgPCAwIHtcbiAgICAkTVMtbmV3LXJldHVybjogKCk7XG4gICAgQGVhY2ggJGkgaW4gJFJldHVybiB7XG4gICAgICAkTVMtbmV3LXJldHVybjogam9pbigkaSwgJE1TLW5ldy1yZXR1cm4pO1xuICAgIH1cbiAgICAkUmV0dXJuOiAkTVMtbmV3LXJldHVybjtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWx1ZSBmb3IgY291bnRpbmcgZnJvbSAxXG4gIC8vIEJlY2F1c2UgQ1NTIGNvdW50cyB0aGluZ3MgZnJvbSAxXG4gIC8vIFNvIFNhc3MgZG9lcyBhcyB3ZWxsXG4gIC8vIFNvIEkgZ2V0IHRvIHdyaXRlIGZ1biBzdHVmZiBsaWtlIHRoaXNcbiAgJFZhbHVlOiBhYnMoJFZhbHVlKSArIDE7XG5cbiAgLy8gRmluZCB0aGUgY29ycmVjdCB2YWx1ZSBpbiB0aGUgbGlzdFxuICAkUmV0dXJuOiBudGgoJFJldHVybiwgJFZhbHVlKTtcblxuICBAcmV0dXJuIG1zLXJvdW5kLXB4KCRSZXR1cm4pO1xufVxuXG4vLyBTYW1lIGZ1bmN0aW9uLCBkaWZmZXJlbnQgbmFtZSwgZm9yIGdvb2QgbWVhc3VyZS5cbkBmdW5jdGlvbiBtb2R1bGFyLXNjYWxlKCRWYWx1ZTogMCwgJEJhc2VzOiAkbXMtYmFzZSwgJFJhdGlvczogJG1zLXJhdGlvKSB7XG4gIEByZXR1cm4gbXMoJFZhbHVlLCAkQmFzZXMsICRSYXRpb3MpO1xufSIsIi8vIE91dHB1dHMgYSBsaXN0IG9mIHZhbHVlcyBpbnN0ZWFkIG9mIGEgc2luZ2xlIHZhbHVlXG5AZnVuY3Rpb24gbXMtbGlzdCgkU3RhcnQ6IDAsICRFbmQ6IDAsICRCYXNlczogJG1zLWJhc2UsICRSYXRpb3M6ICRtcy1yYXRpbykge1xuICBcbiAgLy8gU2VlZCByZXN1bHRzXG4gICRQb3NpdGl2ZS1yZXR1cm46ICgpO1xuICAkTmVnaXRpdmUtcmV0dXJuOiAoKTtcbiAgJFJldHVybjogKCk7XG5cbiAgQGlmICRFbmQgPj0gMCB7XG4gICAgLy8gR2VuZXJhdGUgYSBsaXN0IG9mIGFsbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAkUG9zaXRpdmUtcmV0dXJuOiBtcy1nZW5lcmF0ZS1saXN0KCRFbmQsICRCYXNlcywgJFJhdGlvcyk7XG4gICAgXG4gICAgLy8gU29ydCB0aGUgZ2VuZXJhdGVkIGxpc3RzXG4gICAgJFBvc2l0aXZlLXJldHVybjogbXMtc29ydC1saXN0KCRQb3NpdGl2ZS1yZXR1cm4pO1xuXG4gICAgLy8gVHJpbSBsaXN0XG4gICAgJFRyaW0tbGlzdDogKCk7XG4gICAgLy8gSWYgdGhlIHN0YXJ0aW5nIHZhbHVlIGlzIGEgcG9zaXRpdmUgbnVtYmVyXG4gICAgLy8gdHJpbSB0aGUgcG9zaXRpdmUgcmV0dXJuIGZyb20gdGhhdFxuICAgIEBpZiAkU3RhcnQgPj0gMCB7XG4gICAgICBAZm9yICRpIGZyb20gKCRTdGFydCArIDEpIHRocm91Z2ggJEVuZCArIDEge1xuICAgICAgICAkVHJpbS1saXN0OiBqb2luKCRUcmltLWxpc3QsIG50aCgkUG9zaXRpdmUtcmV0dXJuLCAkaSkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiBub3QsIHRoZW4gaW5jbHVkZSBldmVyeXRoaW5nIHVwIHRvIHRoZSBlbmQuXG4gICAgQGVsc2Uge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkRW5kICsgMSB7XG4gICAgICAgICRUcmltLWxpc3Q6IGpvaW4oJFRyaW0tbGlzdCwgbnRoKCRQb3NpdGl2ZS1yZXR1cm4sICRpKSk7XG4gICAgICB9XG4gICAgfVxuICAgICRQb3NpdGl2ZS1yZXR1cm46ICRUcmltLWxpc3Q7XG4gIH1cbiAgXG4gIC8vIEdlbmVyYXRlIGEgbmVnaXRpdmUgbGlzdFxuICBAaWYgJFN0YXJ0IDwgMCB7XG4gICAgLy8gR2VuZXJhdGUgYSBsaXN0IG9mIGFsbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAkTmVnaXRpdmUtcmV0dXJuOiBtcy1nZW5lcmF0ZS1saXN0KCRTdGFydCwgJEJhc2VzLCAkUmF0aW9zKTtcbiAgICBcbiAgICAvLyBTb3J0IHRoZSBnZW5lcmF0ZWQgbGlzdHNcbiAgICAkTmVnaXRpdmUtcmV0dXJuOiBtcy1zb3J0LWxpc3QoJE5lZ2l0aXZlLXJldHVybik7XG4gICAgXG4gICAgLy8gUmV2ZXJzZSBuZWdpdGl2ZSBsaXN0IHJlc3VsdHMuXG4gICAgJE1TLW5ldy1yZXR1cm46ICgpO1xuICAgIEBlYWNoICRpIGluICROZWdpdGl2ZS1yZXR1cm4ge1xuICAgICAgJE1TLW5ldy1yZXR1cm46IGpvaW4oJGksICRNUy1uZXctcmV0dXJuKTtcbiAgICB9XG4gICAgJE5lZ2l0aXZlLXJldHVybjogJE1TLW5ldy1yZXR1cm47XG5cbiAgICAvLyBUcmltIGxpc3RcbiAgICAkVHJpbS1saXN0OiAoKTtcbiAgICBAaWYgJEVuZCA8IDAge1xuICAgICAgQGZvciAkaSBmcm9tIGFicygkRW5kKSB0aHJvdWdoIChhYnMoJFN0YXJ0KSArIDIpIHtcbiAgICAgICAgJFRyaW0tbGlzdDogam9pbihudGgoJE5lZ2l0aXZlLXJldHVybiwgJGkpLCAkVHJpbS1saXN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAoYWJzKCRTdGFydCkgKyAxKSB7XG4gICAgICAgICRUcmltLWxpc3Q6IGpvaW4obnRoKCROZWdpdGl2ZS1yZXR1cm4sICRpKSwgJFRyaW0tbGlzdCk7XG4gICAgICB9XG4gICAgfVxuICAgICROZWdpdGl2ZS1yZXR1cm46ICRUcmltLWxpc3Q7XG4gIH1cbiAgXG4gIC8vIEpvaW4gYm90aCBwb3NpdGl2ZSBhbmQgbmVnaXRpdmUgcG9zc2liaWxpdGllcy5cbiAgJFJldHVybjogam9pbigkTmVnaXRpdmUtcmV0dXJuLCAkUG9zaXRpdmUtcmV0dXJuKTtcblxuICBAcmV0dXJuICRSZXR1cm47XG59XG4iLCIvLyBTdHJpcHBpbmcgdW5pdHMgaXMgcmFyZWx5IGEgYmVzdCBwcmFjdGljZSBhbmQgdGhpcyBmdW5jdGlvblxuLy8gc2hvdWxkIG5vdCBiZSB1c2VkIGVsc2V3aGVyZVxuQGZ1bmN0aW9uIG1zLXVuaXRsZXNzKCR2YWwpIHtcbiAgJHZhbDogJHZhbCAvICgkdmFsIC0gJHZhbCArIDEpO1xuICBAcmV0dXJuICR2YWw7XG59XG5cbi8vIFNlYXJjaCBjb25maWcgZm9yIHZhbHVlc1xuQGZ1bmN0aW9uIG1zLXJhbmdlKCR4LCR5LCRyYW5nZTokbXMtcmFuZ2UpIHtcbiAgQHJldHVybiBudGgobnRoKCRyYW5nZSwkeCksJHkpO1xufVxuXG4vLyBHZW5lcmF0ZSBjYWxjKCkgZnVuY3Rpb25cbkBmdW5jdGlvbiBtcy1yZXNwb25kLWNhbGMoJHZhbHVlLCAkbiwgJHJhbmdlOiAkbXMtcmFuZ2UsICRiYXNlOiAkbXMtYmFzZSkge1xuICAkdmFsMTogbXMoJHZhbHVlLCRiYXNlLG1zLXJhbmdlKCRuLDEsJHJhbmdlKSk7XG4gICR2YWwyOiBtcygkdmFsdWUsJGJhc2UsbXMtcmFuZ2UoJG4rMSwxLCRyYW5nZSkpO1xuICAkYnJlYWsxOiBtcy1yYW5nZSgkbiwyLCRyYW5nZSk7XG4gICRicmVhazI6IG1zLXJhbmdlKCRuKzEsMiwkcmFuZ2UpO1xuICAkZGlmZjogbXMtdW5pdGxlc3MoJHZhbDIpIC0gbXMtdW5pdGxlc3MoJHZhbDEpO1xuICBAaWYgJG1zLWZsdWlkIHtcbiAgICBAcmV0dXJuIGNhbGMoICN7JHZhbDF9ICsgI3skZGlmZn0gKiAoICggMTAwdncgLSAjeyRicmVhazF9KSAvICN7bXMtdW5pdGxlc3MoJGJyZWFrMikgLSBtcy11bml0bGVzcygkYnJlYWsxKX0gKSApO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIG1zKCR2YWx1ZSwkYmFzZSxtcy1yYW5nZSgkbiwxLCRyYW5nZSkpO1xuICB9XG59XG5cbi8vIE1haW4gcmVzcG9uc2l2ZSBtaXhpblxuQG1peGluIG1zLXJlc3BvbmQoJHByb3BlcnR5LCAkdmFsdWUsICRyYW5nZTogJG1zLXJhbmdlLCAkYmFzZTogJG1zLWJhc2UpIHtcbiAgLy8gSWYgdGhlcmUgaXMgbm8gcmVzcG9uc2l2ZSBjb25maWcsIGp1c3Qgb3V0cHV0IHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgQGlmICRtcy1yYW5nZSA9PSBudWxsIHtcbiAgICAjeyRwcm9wZXJ0eX06IG1zKCR2YWx1ZSwkYmFzZSwkbXMtcmF0aW8pO1xuICB9IEBlbHNlIHtcblxuICAgIC8vIEluaXRpYWwgdmFsdWVcbiAgICAjeyRwcm9wZXJ0eX06IG1zKCR2YWx1ZSwkYmFzZSxtcy1yYW5nZSgxLDEsJHJhbmdlKSk7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggYnJlYWtwb2ludHNcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIChsZW5ndGgoJHJhbmdlKSAtIDEpIHtcbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiBtcy1yYW5nZSgkaSwyLCRyYW5nZSkpIGFuZCAobWF4LXdpZHRoOiBtcy1yYW5nZSgkaSsxLDIsJHJhbmdlKSkge1xuICAgICAgICAjeyRwcm9wZXJ0eX06IG1zLXJlc3BvbmQtY2FsYygkdmFsdWUsICRpLCAkcmFuZ2UsICRiYXNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5hbCBicmVha3BvaW50IGlzIGp1c3QgYW4gb3ZlcnJpZGUgdmFsdWVcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbXMtcmFuZ2UobGVuZ3RoKCRyYW5nZSksMiwkcmFuZ2UpKSB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG1zKCR2YWx1ZSwkYmFzZSxtcy1yYW5nZShsZW5ndGgoJHJhbmdlKSwxLCRyYW5nZSkpO1xuICAgIH1cbiAgfVxufSIsIi8qISBub3JtYWxpemUuY3NzIHYzLjAuMiB8IE1JVCBMaWNlbnNlIHwgZ2l0LmlvL25vcm1hbGl6ZSAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmdcbiAqICAgIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IHdoZW4gZm9jdXNlZCBhbmQgYWxzbyBtb3VzZSBob3ZlcmVkIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmRmbiB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5oMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICovXG5cbm1hcmsge1xuICAgIGJhY2tncm91bmQ6ICNmZjA7XG4gICAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gICAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5cbmltZyB7XG4gICAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5cbmZpZ3VyZSB7XG4gICAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICAgIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICAgIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbmJ1dHRvbiB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWVcbiAqICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gICAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxudGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gICAgcGFkZGluZzogMDtcbn1cbiIsIi8vIENvbG91ciB2YXJpYWJsZXNcblxuJHdoaXRlOiAjZmZmO1xuJGJsYWNrOiAjMDAwO1xuXG4kcHJpbWFyeS1jb2xvcjogIzExMTExMTtcblxuJHNlY29uZGFyeS1jb2xvci1kYXJrOiAjMTExMTExO1xuJHNlY29uZGFyeS1jb2xvcjogIzExMTExMTtcbiRzZWNvbmRhcnktY29sb3ItbGlnaHQ6ICMxMTExMTE7XG5cblxuJGdyZWVuOiAjODRFMkQ3O1xuJHBpbms6ICNFMzUxOTc7XG4keWVsbG93OiAjRjNFODU1O1xuJHB1cnBsZTogIzczNDg5NztcblxuLy8gRm9udHNcblxuJGJyYW5kLWZvbnQtYm9keTogXCJNdXNlb1NsYWItNTAwXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGJyYW5kLWZvbnQtaGVhZGluZzogXCJQcm94aW1hTm92YS1SZWd1bGFyXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXG4kYnJhbmQtZm9udC1yZWd1bGFyOiBcIk11c2VvU2xhYi01MDBcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYnJhbmQtZm9udC1ib2xkOiBcIk11c2VvU2xhYi01MDBcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4kYnJhbmQtZm9udC1saWdodDogXCJNdXNlb1NsYWItNTAwXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXG4vLyBCcmVha3BvaW50cyBmb3Igc2NhbGluZ1xuXG4vLyBTRVQgMS4gJGJyZWFrcG9pbnRzIG1hcCBiZWxvdyBkb2VzIEEgTE9UISBLbm93IHdoYXQgeW91J3JlIGVkaXRpbmcgYmVmb3JlIGRvaW5nIHNvLlxuJGJyZWFrcG9pbnRzOiAoXG4vL3NpemU6IChtaW4sICAgbWF4LCAgICByYXRpbyksXG4gICAgeHM6ICgzMjAsICAgNDc5LCAgICAxLjIpLFxuICAgIHNtOiAoNDgwLCAgIDk5MSwgICAgMS4zMzMpLFxuICAgIG1kOiAoOTkyLCAgIDExOTksICAgMS40NiksXG4gICAgbGc6ICgxMjAwLCAgMTQzOSwgICAxLjc1MyksXG4gICAgeGw6ICgxNDQwLCAgbnVsbCwgICAxLjg3Nilcbik7XG5cbi8vIFNFVCAyLiBGb3IgdXNlIGluIEBpbmNsdWRlIGJyZWFrcG9pbnQoKTsgbmF0aXZlIG1peGluXG4keHNtYWxsOiAzMjBweDtcbiRzbWFsbDogNDgwcHg7XG4kc21hbGw3OiA3NjhweDtcbiRtZWRpdW06IDk5MnB4O1xuJGxhcmdlOiAxMjAwcHg7XG4keGxhcmdlOiAxNDAwcHg7XG5cbi8vIEdlbmVyYWwgdmFyaWFibGVzIGZvciBtaXhpbiBhbmQgbG9vcCB1c2FnZVxuJENTU3Bvc2l0aW9uczogKCBsZWZ0OiBsLCB0b3A6IHQsIHJpZ2h0OiByLCBib3R0b206IGIpO1xuXG4vLz09IE1lZGlhIHF1ZXJpZXMgYnJlYWtwb2ludHNcbi8vXG4vLyMjIERlZmluZSB0aGUgYnJlYWtwb2ludHMgYXQgd2hpY2ggeW91ciBsYXlvdXQgd2lsbCBjaGFuZ2UsIGFkYXB0aW5nIHRvIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbi8vIEV4dHJhIHNtYWxsIHNjcmVlbiAvIHBob25lXG4kc2NyZWVuLXhzOiAgICAgICAgICAgICAgICAgICR4c21hbGwgIWRlZmF1bHQ7XG4kc2NyZWVuLXhzLW1pbjogICAgICAgICAgICAgICRzY3JlZW4teHMgIWRlZmF1bHQ7XG5cbi8vIFNtYWxsIHNjcmVlbiAvIHRhYmxldFxuJHNjcmVlbi1zbTogICAgICAgICAgICAgICAgICAkc21hbGwgIWRlZmF1bHQ7XG4kc2NyZWVuLXNtLW1pbjogICAgICAgICAgICAgICRzY3JlZW4tc20gIWRlZmF1bHQ7XG5cbi8vIE1lZGl1bSBzY3JlZW4gLyBkZXNrdG9wXG4kc2NyZWVuLW1kOiAgICAgICAgICAgICAgICAgICRtZWRpdW0gIWRlZmF1bHQ7XG4kc2NyZWVuLW1kLW1pbjogICAgICAgICAgICAgICRzY3JlZW4tbWQgIWRlZmF1bHQ7XG5cbi8vIExhcmdlIHNjcmVlbiAvIHdpZGUgZGVza3RvcFxuJHNjcmVlbi1sZzogICAgICAgICAgICAgICAgICAkbGFyZ2UgIWRlZmF1bHQ7XG4kc2NyZWVuLWxnLW1pbjogICAgICAgICAgICAgICRzY3JlZW4tbGcgIWRlZmF1bHQ7XG5cbi8vIFNvIG1lZGlhIHF1ZXJpZXMgZG9uJ3Qgb3ZlcmxhcCB3aGVuIHJlcXVpcmVkLCBwcm92aWRlIGEgbWF4aW11bVxuJHNjcmVlbi14cy1tYXg6ICAgICAgICAgICAgICAoJHNjcmVlbi1zbS1taW4gLSAxKSAhZGVmYXVsdDtcbiRzY3JlZW4tc20tbWF4OiAgICAgICAgICAgICAgKCRzY3JlZW4tbWQtbWluIC0gMSkgIWRlZmF1bHQ7XG4kc2NyZWVuLW1kLW1heDogICAgICAgICAgICAgICgkc2NyZWVuLWxnLW1pbiAtIDEpICFkZWZhdWx0O1xuXG5cbi8vPT0gR3JpZCBzeXN0ZW1cbi8vXG4vLyMjIERlZmluZSB5b3VyIGN1c3RvbSByZXNwb25zaXZlIGdyaWQuXG5cbi8vKiogTnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgMTIgIWRlZmF1bHQ7XG4vLyoqIFBhZGRpbmcgYmV0d2VlbiBjb2x1bW5zLiBHZXRzIGRpdmlkZWQgaW4gaGFsZiBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0LlxuJGdyaWQtZ3V0dGVyLXdpZHRoOiAgICAgICAgIDMwcHggIWRlZmF1bHQ7XG4vLyBOYXZiYXIgY29sbGFwc2Vcbi8vKiogUG9pbnQgYXQgd2hpY2ggdGhlIG5hdmJhciBiZWNvbWVzIHVuY29sbGFwc2VkLlxuJGdyaWQtZmxvYXQtYnJlYWtwb2ludDogICAgICRzY3JlZW4tc20tbWluICFkZWZhdWx0O1xuLy8qKiBQb2ludCBhdCB3aGljaCB0aGUgbmF2YmFyIGJlZ2lucyBjb2xsYXBzaW5nLlxuJGdyaWQtZmxvYXQtYnJlYWtwb2ludC1tYXg6ICgkZ3JpZC1mbG9hdC1icmVha3BvaW50IC0gMSkgIWRlZmF1bHQ7XG5cblxuLy89PSBDb250YWluZXIgc2l6ZXNcbi8vXG4vLyMjIERlZmluZSB0aGUgbWF4aW11bSB3aWR0aCBvZiBgLmNvbnRhaW5lcmAgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuXG5cbi8vIFNtYWxsIHNjcmVlbiAvIHRhYmxldFxuJGNvbnRhaW5lci10YWJsZXQ6ICAgICAgICAgICAgICg3MjBweCArICRncmlkLWd1dHRlci13aWR0aCkgIWRlZmF1bHQ7XG4vLyoqIEZvciBgJHNjcmVlbi1zbS1taW5gIGFuZCB1cC5cbiRjb250YWluZXItc206ICAgICAgICAgICAgICAgICAkY29udGFpbmVyLXRhYmxldCAhZGVmYXVsdDtcblxuLy8gTWVkaXVtIHNjcmVlbiAvIGRlc2t0b3BcbiRjb250YWluZXItZGVza3RvcDogICAgICAgICAgICAoOTQwcHggKyAkZ3JpZC1ndXR0ZXItd2lkdGgpICFkZWZhdWx0O1xuLy8qKiBGb3IgYCRzY3JlZW4tbWQtbWluYCBhbmQgdXAuXG4kY29udGFpbmVyLW1kOiAgICAgICAgICAgICAgICAgJGNvbnRhaW5lci1kZXNrdG9wICFkZWZhdWx0O1xuXG4vLyBMYXJnZSBzY3JlZW4gLyB3aWRlIGRlc2t0b3BcbiRjb250YWluZXItbGFyZ2UtZGVza3RvcDogICAgICAoMTE0MHB4ICsgJGdyaWQtZ3V0dGVyLXdpZHRoKSAhZGVmYXVsdDtcbi8vKiogRm9yIGAkc2NyZWVuLWxnLW1pbmAgYW5kIHVwLlxuJGNvbnRhaW5lci1sZzogICAgICAgICAgICAgICAgICRjb250YWluZXItbGFyZ2UtZGVza3RvcCAhZGVmYXVsdDtcbiIsIlxuLypcbiAqIENsZWFyZml4OiBjb250YWluIGZsb2F0c1xuICpcbiAqIEZvciBtb2Rlcm4gYnJvd3NlcnNcbiAqIDEuIFRoZSBzcGFjZSBjb250ZW50IGlzIG9uZSB3YXkgdG8gYXZvaWQgYW4gT3BlcmEgYnVnIHdoZW4gdGhlXG4gKiAgICBgY29udGVudGVkaXRhYmxlYCBhdHRyaWJ1dGUgaXMgaW5jbHVkZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgZG9jdW1lbnQuXG4gKiAgICBPdGhlcndpc2UgaXQgY2F1c2VzIHNwYWNlIHRvIGFwcGVhciBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgZWxlbWVudHNcbiAqICAgIHRoYXQgcmVjZWl2ZSB0aGUgYGNsZWFyZml4YCBjbGFzcy5cbiAqIDIuIFRoZSB1c2Ugb2YgYHRhYmxlYCByYXRoZXIgdGhhbiBgYmxvY2tgIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHVzaW5nXG4gKiAgICBgOmJlZm9yZWAgdG8gY29udGFpbiB0aGUgdG9wLW1hcmdpbnMgb2YgY2hpbGQgZWxlbWVudHMuXG4gKi9cblxuLy8gRm9yIGluc2lkZSBicmVha3BvaW50cyBjYXNlcyAtIGNhbid0IHVzZSBleHRlbmRcbkBtaXhpbiBjbGVhcmZpeCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgKnpvb206IDE7XG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFwiOyAvKiAxICovXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlOyAvKiAyICovXG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuQG1peGluIHVuZG8tY2xlYXJmaXgge1xuICAgICp6b29tOiAxO1xuICAgIGNsZWFyOiBub25lO1xuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiOyAvKiAxICovXG4gICAgICAgIGRpc3BsYXk6IGlubGluZTsgLyogMiAqL1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG59XG5cbiV1bmRvLWNsZWFyZml4IHtcbiAgICAqem9vbTogMTtcbiAgICBjbGVhcjogbm9uZTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjsgLyogMSAqL1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxufVxuXG4vKiBodHRwOi8vZGFiYmxldC5jb20vZ2lzdC80NzExNjk1ICovXG5AbWl4aW4gY3JvcC00LTMoKSB7XG4gICAgLmltYWdlLXdyYXAsXG4gICAgLmltYWdlLXdyYXAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7IC8qIGdvdHRhIGJlIHJlc3BvbnNpdmUgdGhlc2UgZGF5cyAqL1xuICAgIH1cbiAgICAuaW1hZ2Utd3JhcCB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZi13aGl0ZTsgLyogc29tZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBzaG9ydCBpbWFnZXMgKi9cbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAvKiByZW1vdmUgd2hpdGUtc3BhY2UgZm9yIGlubGluZS1ibG9jayBlbGVtZW50cyAqL1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMzFlbTsgLyogd2Via2l0ICovXG4gICAgICAgICpsZXR0ZXItc3BhY2luZzogbm9ybWFsOyAvKiByZXNldCBJRSA8IDggKi9cbiAgICAgICAgd29yZC1zcGFjaW5nOiAtMC40M2VtOyAvKiBJRSA8IDggJiYgZ2Vja28gKi9cbiAgICAgICAgd2lkdGg6IDQwJTtcbiAgICB9XG4gICAgLmltYWdlLXdyYXA6YmVmb3JlLFxuICAgIC5pbWFnZS13cmFwIGltZyB7XG4gICAgICAgIC8qIHZlcnRpY2FsbHkgY2VudGVyIHRoZSBpbWFnZSAqL1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICAgIC5pbWFnZS13cmFwOmJlZm9yZXtcbiAgICAgICAgLyogcHNldWRvIGVsZW1lbnQgdG8gdmVydGljYWxseSBhbGlnbiBpbWFnZSB0byAqL1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAvKiBNYWdpYyBOdW1iZXIgKi9cbiAgICAgICAgLyogU2V0IHRoaXMgdG8geW91ciBkZXNpcmVkIGhlaWdodCh0byB3aWR0aCkgcmF0aW8gKi9cbiAgICAgICAgcGFkZGluZy10b3A6IDc1JTsgLyogJSBvZiBvcmlnaW5hbCBpbWFnZSB3aWR0aCAqL1xuICAgIH1cbiAgICAuaW1hZ2Utd3JhcCBpbWcge1xuICAgICAgICAvKiByZW1vdmVzKHNvcnRhKSBpbWFnZSBmcm9tIHRoZSBmbG93ICovXG4gICAgICAgIHBhZGRpbmctbGVmdDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAtOTk5ZW0gLTEwMCU7XG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIH1cbn1cblxuXG5AbWl4aW4gZm9udCgkdHlwZWZhY2U6JGZvbnQtZGVmYXVsdC1mYWNlLCAkc2l6ZTokZm9udC1kZWZhdWx0LXNpemUsICRzdHlsZTokZm9udC1kZWZhdWx0LXN0eWxlLCAkd2VpZ2h0OiRmb250LWRlZmF1bHQtd2VpZ2h0LCAkbGluZWhlaWdodDokZm9udC1kZWZhdWx0LWxpbmVoZWlnaHQpIHtcblxuICAgIEBpZiAoJHR5cGVmYWNlKSA9PSBcImJvZHlcIiB7XG4gICAgICAgICRmYWNlIDogJGZhY2UtYm9keTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlZmFjZSkgPT0gXCJzZXJpZlwiIHtcbiAgICAgICAgJGZhY2UgOiAkZmFjZS1zZXJpZjtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlZmFjZSkgPT0gXCJzYW5zLXNlcmlmXCIge1xuICAgICAgICAkZmFjZSA6ICRmYWNlLXNhbnMtc2VyaWY7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZWZhY2UpID09IFwic21hbGwtY2Fwc1wiIHtcbiAgICAgICAgJGZhY2UgOiAkZmFjZS1ib2R5O1xuICAgICAgICAkd2VpZ2h0IDogYm9sZDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgZm9udC1mYW1pbHk6ICRmYWNlO1xuICAgIEBpbmNsdWRlIHJlbSgnZm9udC1zaXplJywgJHNpemUpO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGluZWhlaWdodDtcbn1cblxuXG5AbWl4aW4gYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiAoJGhlaWdodCAvICR3aWR0aCkgKiAxMDAlO1xuICB9XG4gID4gLnJhdGlvLS1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG59XG5cbi8vIFJlbSBtaXhpbiAvL1xuQGZ1bmN0aW9uIGNhbGN1bGF0ZVJlbSgkc2l6ZSkge1xuICBAcmV0dXJuICgkc2l6ZSAvIDE2KSAqIDFyZW07XG59XG5cbkBtaXhpbiBmb250LXNpemUoJHNpemUsICRpbXBvcnRhbnQ6IG51bGwpIHtcbiAgZm9udC1zaXplOiB1bnF1b3RlKCRzaXplKydweCcpICRpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogY2FsY3VsYXRlUmVtKCRzaXplKSAkaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZ2V0LXJlbSgkcHJvcCwgJHNpemUpIHtcbiAgI3skcHJvcH06ICRzaXplO1xuICAjeyRwcm9wfTogY2FsY3VsYXRlUmVtKCRzaXplKTtcbn1cbiIsIkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIHNyYzogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ZvbnRzL01hdGVyaWFsSWNvbnMtUmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgIHVybChcIi9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmZcIikgZm9ybWF0KCd3b2ZmJyksXG4gICAgdXJsKFwiL2J1bmRsZXMvYXBwL2Fzc2V0cy9mb250cy9NYXRlcmlhbEljb25zLVJlZ3VsYXIudHRmXCIpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbn1cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OiAnUHJveGltYU5vdmEtUmVndWxhcic7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0c3JjOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvUHJveGltYU5vdmEtUmVndWxhci5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLCAgXG5cdHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9mb250cy9Qcm94aW1hTm92YS1SZWd1bGFyLm90ZicpICBmb3JtYXQoJ29wZW50eXBlJyksXG5cdHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9mb250cy9Qcm94aW1hTm92YS1SZWd1bGFyLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgXG5cdHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9mb250cy9Qcm94aW1hTm92YS1SZWd1bGFyLnR0ZicpICBmb3JtYXQoJ3RydWV0eXBlJyksIFxuXHR1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvUHJveGltYU5vdmEtUmVndWxhci5zdmcjUHJveGltYU5vdmEtUmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XG59XG5cbkBmb250LWZhY2Uge1xuXHRmb250LWZhbWlseTogJ011c2VvU2xhYi01MDAnO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRmb250LXN0eWxlOiBub3JtYWw7XG5cdHNyYzogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ZvbnRzL011c2VvU2xhYi01MDAuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSwgIFxuXHR1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvTXVzZW9TbGFiLTUwMC5vdGYnKSAgZm9ybWF0KCdvcGVudHlwZScpLFxuXHR1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvTXVzZW9TbGFiLTUwMC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIFxuXHR1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvTXVzZW9TbGFiLTUwMC50dGYnKSAgZm9ybWF0KCd0cnVldHlwZScpLCBcblx0dXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ZvbnRzL011c2VvU2xhYi01MDAuc3ZnI011c2VvU2xhYi01MDAnKSBmb3JtYXQoJ3N2ZycpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2ljb21vb24nO1xuICAgIHNyYzogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ZvbnRzL2ljb21vb24uZW90PzZvMGJqJyk7XG4gICAgc3JjOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvaWNvbW9vbi5lb3Q/Nm8wYmojaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvaWNvbW9vbi50dGY/Nm8wYmonKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvaWNvbW9vbi53b2ZmPzZvMGJqJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvZm9udHMvaWNvbW9vbi5zdmc/Nm8wYmojaWNvbW9vbicpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG4iLCIkbXMtYmFzZTogMS4wZW07XG4kbXMtZmx1aWQ6IHRydWU7XG4kbXMtcmF0aW86ICRtaW5vci1zZXZlbnRoO1xuXG4vLyB0aGlzIGZ1bmN0aW9uIHRha2VzICRicmVha3BvaW50IHJhdGlvIHZhbHVlcyBhbmQgcGFzc2VzIHRoZW0gaW50byAkbXMtcmFuZ2UsIFxuLy8gcmVhZHkgZm9yIGJvd2VyIHRvIHBpY2sgdXAgZm9yIG1vZHVsYXIgc2NhbGVcbkBmdW5jdGlvbiByZXR1cm5Nb2RTY2FsZU1hcCgpIHtcbiAgJG1hcDogKCk7XG4gICRrZXk6IDE7XG4gIEBlYWNoICRuYW1lLCAkdmFsdWVzIGluICRicmVha3BvaW50cyB7XG4gICAgJG1pbjogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICRyYXRpbyA6IG50aCgkdmFsdWVzLCAzKTtcbiAgICAka2V5OiAka2V5ICsgMC4xMjtcbiAgICAkdmFsdWU6ICgkbWluIC8gMTYpICogMWVtO1xuICAgICRtYXA6IGFwcGVuZCgkbWFwLCAoJHJhdGlvICR2YWx1ZSksIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRtYXA7XG59XG5cbiRtcy1yYW5nZTogcmV0dXJuTW9kU2NhbGVNYXAoKTtcblxuLy8gJG1zLXJhbmdlOlxuLy8gICAxLjIgICAgICAyMGVtLFxuLy8gICAxLjMzMyAgICAzMGVtLFxuLy8gICAxLjYxOCAgICA0MGVtLFxuLy8gICAxLjggICAgICA1MGVtLFxuLy8gICAyICAgICAgICA2MGVtO1xuXG4uZmlyc3Qge1xuICAgIEBpbmNsdWRlIG1zLXJlc3BvbmQoZm9udC1zaXplLCA2KTtcbn1cblxuLmxhc3Qge1xuICBAaW5jbHVkZSBtcy1yZXNwb25kKGZvbnQtc2l6ZSwgMyk7XG59XG5cbmJvZHkgeyBmb250LXNpemU6IDFyZW07IH1cbiAgaDUgeyBmb250LXNpemU6IDEuMnJlbTsgfVxuICBoNCB7IGZvbnQtc2l6ZTogMS40cmVtOyB9XG4gIGgzIHsgZm9udC1zaXplOiAxLjhyZW07IH1cbiAgaDIgeyBmb250LXNpemU6IDIuMHJlbTsgfVxuICBoMSB7IGZvbnQtc2l6ZTogM3JlbTsgfVxuICBcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuXHRtYXJnaW46IDAuNWVtIDA7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGxpLCAubWFpbm5hdl9fbGluayB7XG5cdGZvbnQtZmFtaWx5OiBcIlByb3hpbWFOb3ZhLVJlZ3VsYXJcIiwgYXJpYWwsIHNhbnMtc2VyaWY7XG59XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIC5tYWlubmF2X19saW5rIHtcblx0Y29sb3I6ICRwaW5rO1xufVxuXG5wLCBsaSB7XG5cdGNvbG9yOiAkcHVycGxlO1xuXHRsaW5lLWhlaWdodDogMS42ZW07XG59XG5cbmEge1xuXHRmb250LWZhbWlseTogJGJyYW5kLWZvbnQtaGVhZGluZztcblx0Y29sb3I6ICRwdXJwbGU7XG59XG5cbi5mb3JtX193cmFwcGVyIGEge1xuXHRjb2xvcjogJHdoaXRlO1xufSIsIi5tYXRlcmlhbC1pY29ucyB7XHJcbiAgICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJztcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXNpemU6IDI0cHg7ICAvKiBQcmVmZXJyZWQgaWNvbiBzaXplICovXHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuICAgIC8qIFN1cHBvcnQgZm9yIGFsbCBXZWJLaXQgYnJvd3NlcnMuICovXHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAgIC8qIFN1cHBvcnQgZm9yIFNhZmFyaSBhbmQgQ2hyb21lLiAqL1xyXG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcclxuXHJcbiAgICAvKiBTdXBwb3J0IGZvciBGaXJlZm94LiAqL1xyXG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuXHJcbiAgICAvKiBTdXBwb3J0IGZvciBJRS4gKi9cclxuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnO1xyXG59IiwiLy8gRnJhbWV3b3JrIGdyaWQgZ2VuZXJhdGlvblxuLy9cbi8vIFVzZWQgb25seSBieSBCb290c3RyYXAgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGdyaWQgY2xhc3NlcyBnaXZlblxuLy8gYW55IHZhbHVlIG9mIGAkZ3JpZC1jb2x1bW5zYC5cblxuLy8gW2NvbnZlcnRlcl0gVGhpcyBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGluIExFU1MsIGJ1dCBTYXNzIHN1cHBvcnRzIHJlYWwgbG9vcHNcbkBtaXhpbiBtYWtlLWdyaWQtY29sdW1ucygkaTogMSwgJGxpc3Q6IFwiLmNvbC14cy0jeyRpfSwgLmNvbC1zbS0jeyRpfSwgLmNvbC1tZC0jeyRpfSwgLmNvbC1sZy0jeyRpfVwiKSB7XG4gIEBmb3IgJGkgZnJvbSAoMSArIDEpIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgJGxpc3Q6IFwiI3skbGlzdH0sIC5jb2wteHMtI3skaX0sIC5jb2wtc20tI3skaX0sIC5jb2wtbWQtI3skaX0sIC5jb2wtbGctI3skaX1cIjtcbiAgfVxuICAjeyRsaXN0fSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGNvbGxhcHNpbmcgd2hlbiBlbXB0eVxuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgICAvLyBJbm5lciBndXR0ZXIgdmlhIHBhZGRpbmdcbiAgICBwYWRkaW5nLWxlZnQ6ICBjZWlsKCgkZ3JpZC1ndXR0ZXItd2lkdGggLyAyKSk7XG4gICAgcGFkZGluZy1yaWdodDogZmxvb3IoKCRncmlkLWd1dHRlci13aWR0aCAvIDIpKTtcbiAgfVxufVxuXG5cbi8vIFtjb252ZXJ0ZXJdIFRoaXMgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBpbiBMRVNTLCBidXQgU2FzcyBzdXBwb3J0cyByZWFsIGxvb3BzXG5AbWl4aW4gZmxvYXQtZ3JpZC1jb2x1bW5zKCRjbGFzcywgJGk6IDEsICRsaXN0OiBcIi5jb2wtI3skY2xhc3N9LSN7JGl9XCIpIHtcbiAgQGZvciAkaSBmcm9tICgxICsgMSkgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAkbGlzdDogXCIjeyRsaXN0fSwgLmNvbC0jeyRjbGFzc30tI3skaX1cIjtcbiAgfVxuICAjeyRsaXN0fSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbn1cblxuXG5AbWl4aW4gY2FsYy1ncmlkLWNvbHVtbigkaW5kZXgsICRjbGFzcywgJHR5cGUpIHtcbiAgQGlmICgkdHlwZSA9PSB3aWR0aCkgYW5kICgkaW5kZXggPiAwKSB7XG4gICAgLmNvbC0jeyRjbGFzc30tI3skaW5kZXh9IHtcbiAgICAgIHdpZHRoOiBwZXJjZW50YWdlKCgkaW5kZXggLyAkZ3JpZC1jb2x1bW5zKSk7XG4gICAgfVxuICB9XG4gIEBpZiAoJHR5cGUgPT0gcHVzaCkgYW5kICgkaW5kZXggPiAwKSB7XG4gICAgLmNvbC0jeyRjbGFzc30tcHVzaC0jeyRpbmRleH0ge1xuICAgICAgbGVmdDogcGVyY2VudGFnZSgoJGluZGV4IC8gJGdyaWQtY29sdW1ucykpO1xuICAgIH1cbiAgfVxuICBAaWYgKCR0eXBlID09IHB1c2gpIGFuZCAoJGluZGV4ID09IDApIHtcbiAgICAuY29sLSN7JGNsYXNzfS1wdXNoLTAge1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG4gIH1cbiAgQGlmICgkdHlwZSA9PSBwdWxsKSBhbmQgKCRpbmRleCA+IDApIHtcbiAgICAuY29sLSN7JGNsYXNzfS1wdWxsLSN7JGluZGV4fSB7XG4gICAgICByaWdodDogcGVyY2VudGFnZSgoJGluZGV4IC8gJGdyaWQtY29sdW1ucykpO1xuICAgIH1cbiAgfVxuICBAaWYgKCR0eXBlID09IHB1bGwpIGFuZCAoJGluZGV4ID09IDApIHtcbiAgICAuY29sLSN7JGNsYXNzfS1wdWxsLTAge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgfVxuICB9XG4gIEBpZiAoJHR5cGUgPT0gb2Zmc2V0KSB7XG4gICAgLmNvbC0jeyRjbGFzc30tb2Zmc2V0LSN7JGluZGV4fSB7XG4gICAgICBtYXJnaW4tbGVmdDogcGVyY2VudGFnZSgoJGluZGV4IC8gJGdyaWQtY29sdW1ucykpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBbY29udmVydGVyXSBUaGlzIGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgaW4gTEVTUywgYnV0IFNhc3Mgc3VwcG9ydHMgcmVhbCBsb29wc1xuQG1peGluIGxvb3AtZ3JpZC1jb2x1bW5zKCRjb2x1bW5zLCAkY2xhc3MsICR0eXBlKSB7XG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGNvbHVtbnMge1xuICAgIEBpbmNsdWRlIGNhbGMtZ3JpZC1jb2x1bW4oJGksICRjbGFzcywgJHR5cGUpO1xuICB9XG59XG5cblxuLy8gQ3JlYXRlIGdyaWQgZm9yIHNwZWNpZmljIGNsYXNzXG5AbWl4aW4gbWFrZS1ncmlkKCRjbGFzcykge1xuICBAaW5jbHVkZSBmbG9hdC1ncmlkLWNvbHVtbnMoJGNsYXNzKTtcbiAgQGluY2x1ZGUgbG9vcC1ncmlkLWNvbHVtbnMoJGdyaWQtY29sdW1ucywgJGNsYXNzLCB3aWR0aCk7XG4gIEBpbmNsdWRlIGxvb3AtZ3JpZC1jb2x1bW5zKCRncmlkLWNvbHVtbnMsICRjbGFzcywgcHVsbCk7XG4gIEBpbmNsdWRlIGxvb3AtZ3JpZC1jb2x1bW5zKCRncmlkLWNvbHVtbnMsICRjbGFzcywgcHVzaCk7XG4gIEBpbmNsdWRlIGxvb3AtZ3JpZC1jb2x1bW5zKCRncmlkLWNvbHVtbnMsICRjbGFzcywgb2Zmc2V0KTtcbn1cbiIsIi8vIEdyaWQgc3lzdGVtXG4vL1xuLy8gR2VuZXJhdGUgc2VtYW50aWMgZ3JpZCBjb2x1bW5zIHdpdGggdGhlc2UgbWl4aW5zLlxuXG4vLyBDZW50ZXJlZCBjb250YWluZXIgZWxlbWVudFxuQG1peGluIGNvbnRhaW5lci1maXhlZCgkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgcGFkZGluZy1sZWZ0OiAgZmxvb3IoKCRndXR0ZXIgLyAyKSk7XG4gIHBhZGRpbmctcmlnaHQ6IGNlaWwoKCRndXR0ZXIgLyAyKSk7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4vLyBDcmVhdGVzIGEgd3JhcHBlciBmb3IgYSBzZXJpZXMgb2YgY29sdW1uc1xuQG1peGluIG1ha2Utcm93KCRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBtYXJnaW4tbGVmdDogIGNlaWwoKCRndXR0ZXIgLyAtMikpO1xuICBtYXJnaW4tcmlnaHQ6IGZsb29yKCgkZ3V0dGVyIC8gLTIpKTtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi8vIEdlbmVyYXRlIHRoZSBleHRyYSBzbWFsbCBjb2x1bW5zXG5AbWl4aW4gbWFrZS14cy1jb2x1bW4oJGNvbHVtbnMsICRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsb2F0OiBsZWZ0O1xuICB3aWR0aDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgcGFkZGluZy1sZWZ0OiAgKCRndXR0ZXIgLyAyKTtcbiAgcGFkZGluZy1yaWdodDogKCRndXR0ZXIgLyAyKTtcbn1cbkBtaXhpbiBtYWtlLXhzLWNvbHVtbi1vZmZzZXQoJGNvbHVtbnMpIHtcbiAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1ucykpO1xufVxuQG1peGluIG1ha2UteHMtY29sdW1uLXB1c2goJGNvbHVtbnMpIHtcbiAgbGVmdDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG59XG5AbWl4aW4gbWFrZS14cy1jb2x1bW4tcHVsbCgkY29sdW1ucykge1xuICByaWdodDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG59XG5cbi8vIEdlbmVyYXRlIHRoZSBzbWFsbCBjb2x1bW5zXG5AbWl4aW4gbWFrZS1zbS1jb2x1bW4oJGNvbHVtbnMsICRndXR0ZXI6ICRncmlkLWd1dHRlci13aWR0aCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDFweDtcbiAgcGFkZGluZy1sZWZ0OiAgKCRndXR0ZXIgLyAyKTtcbiAgcGFkZGluZy1yaWdodDogKCRndXR0ZXIgLyAyKTtcblxuICBAbWVkaWEgKG1pbi13aWR0aDogJHNjcmVlbi1zbS1taW4pIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG4gIH1cbn1cbkBtaXhpbiBtYWtlLXNtLWNvbHVtbi1vZmZzZXQoJGNvbHVtbnMpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tc20tbWluKSB7XG4gICAgbWFyZ2luLWxlZnQ6IHBlcmNlbnRhZ2UoKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1ucykpO1xuICB9XG59XG5AbWl4aW4gbWFrZS1zbS1jb2x1bW4tcHVzaCgkY29sdW1ucykge1xuICBAbWVkaWEgKG1pbi13aWR0aDogJHNjcmVlbi1zbS1taW4pIHtcbiAgICBsZWZ0OiBwZXJjZW50YWdlKCgkY29sdW1ucyAvICRncmlkLWNvbHVtbnMpKTtcbiAgfVxufVxuQG1peGluIG1ha2Utc20tY29sdW1uLXB1bGwoJGNvbHVtbnMpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tc20tbWluKSB7XG4gICAgcmlnaHQ6IHBlcmNlbnRhZ2UoKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1ucykpO1xuICB9XG59XG5cbi8vIEdlbmVyYXRlIHRoZSBtZWRpdW0gY29sdW1uc1xuQG1peGluIG1ha2UtbWQtY29sdW1uKCRjb2x1bW5zLCAkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmctbGVmdDogICgkZ3V0dGVyIC8gMik7XG4gIHBhZGRpbmctcmlnaHQ6ICgkZ3V0dGVyIC8gMik7XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tbWQtbWluKSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1ucykpO1xuICB9XG59XG5AbWl4aW4gbWFrZS1tZC1jb2x1bW4tb2Zmc2V0KCRjb2x1bW5zKSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikge1xuICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgkY29sdW1ucyAvICRncmlkLWNvbHVtbnMpKTtcbiAgfVxufVxuQG1peGluIG1ha2UtbWQtY29sdW1uLXB1c2goJGNvbHVtbnMpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tbWQtbWluKSB7XG4gICAgbGVmdDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG4gIH1cbn1cbkBtaXhpbiBtYWtlLW1kLWNvbHVtbi1wdWxsKCRjb2x1bW5zKSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikge1xuICAgIHJpZ2h0OiBwZXJjZW50YWdlKCgkY29sdW1ucyAvICRncmlkLWNvbHVtbnMpKTtcbiAgfVxufVxuXG4vLyBHZW5lcmF0ZSB0aGUgbGFyZ2UgY29sdW1uc1xuQG1peGluIG1ha2UtbGctY29sdW1uKCRjb2x1bW5zLCAkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmctbGVmdDogICgkZ3V0dGVyIC8gMik7XG4gIHBhZGRpbmctcmlnaHQ6ICgkZ3V0dGVyIC8gMik7XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tbGctbWluKSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoKCRjb2x1bW5zIC8gJGdyaWQtY29sdW1ucykpO1xuICB9XG59XG5AbWl4aW4gbWFrZS1sZy1jb2x1bW4tb2Zmc2V0KCRjb2x1bW5zKSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLWxnLW1pbikge1xuICAgIG1hcmdpbi1sZWZ0OiBwZXJjZW50YWdlKCgkY29sdW1ucyAvICRncmlkLWNvbHVtbnMpKTtcbiAgfVxufVxuQG1peGluIG1ha2UtbGctY29sdW1uLXB1c2goJGNvbHVtbnMpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICRzY3JlZW4tbGctbWluKSB7XG4gICAgbGVmdDogcGVyY2VudGFnZSgoJGNvbHVtbnMgLyAkZ3JpZC1jb2x1bW5zKSk7XG4gIH1cbn1cbkBtaXhpbiBtYWtlLWxnLWNvbHVtbi1wdWxsKCRjb2x1bW5zKSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLWxnLW1pbikge1xuICAgIHJpZ2h0OiBwZXJjZW50YWdlKCgkY29sdW1ucyAvICRncmlkLWNvbHVtbnMpKTtcbiAgfVxufVxuIiwiLyogYXBwbHkgYSBuYXR1cmFsIGJveCBsYXlvdXQgbW9kZWwgdG8gYWxsIGVsZW1lbnRzLCBidXQgYWxsb3dpbmcgY29tcG9uZW50cyB0byBjaGFuZ2UgKi9cbmh0bWwsIGJvZHkge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjZmNjtcbn1cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5cbiIsIi8vIHVzZSBTVkcgd2hlcmUgcG9zc2libGUsIGFsdGVybmF0aXZlIGJlbG93IGZyb20gaWNvbW9vbiBvciBtYXRlcmlhbCBpY29uc1xuXG5bY2xhc3NePVwiaWNvbi1cIl0sIFtjbGFzcyo9XCIgaWNvbi1cIl0ge1xuICAgIGZvbnQtZmFtaWx5OiAnaWNvbW9vbicgIWltcG9ydGFudDtcbiAgICBzcGVhazogbm9uZTtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1pbnN0YWdyYW06YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGVhOTJcIjtcbn1cbi5pY29uLXBpbnRlcmVzdDpiZWZvcmUge1xuICBcdGNvbnRlbnQ6IFwiXFxlYWQxXCI7XG59XG4uaWNvbi1mYWNlYm9vazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWE5MFwiO1xufVxuLmljb24tdHdpdHRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWE5NlwiO1xufVxuLmljb24tcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZWExY1wiO1xufSIsIi8vXG4vLyBHcmlkIHN5c3RlbVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4vLyBDb250YWluZXIgd2lkdGhzXG4vL1xuLy8gU2V0IHRoZSBjb250YWluZXIgd2lkdGgsIGFuZCBvdmVycmlkZSBpdCBmb3IgZml4ZWQgbmF2YmFycyBpbiBtZWRpYSBxdWVyaWVzLlxuXG4uY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY29udGFpbmVyLWZpeGVkO1xuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikge1xuICAgIHdpZHRoOiAkY29udGFpbmVyLW1kO1xuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLWxnLW1pbikge1xuICAgIHdpZHRoOiAkY29udGFpbmVyLWxnO1xuICB9XG59XG5cblxuLy8gRmx1aWQgY29udGFpbmVyXG4vL1xuLy8gVXRpbGl6ZXMgdGhlIG1peGluIG1lYW50IGZvciBmaXhlZCB3aWR0aCBjb250YWluZXJzLCBidXQgd2l0aG91dCBhbnkgZGVmaW5lZFxuLy8gd2lkdGggZm9yIGZsdWlkLCBmdWxsIHdpZHRoIGxheW91dHMuXG5cbi5jb250YWluZXItZmx1aWQge1xuICBAaW5jbHVkZSBjb250YWluZXItZml4ZWQ7XG59XG5cblxuLy8gUm93XG4vL1xuLy8gUm93cyBjb250YWluIGFuZCBjbGVhciB0aGUgZmxvYXRzIG9mIHlvdXIgY29sdW1ucy5cblxuLnJvdyB7XG4gIEBpbmNsdWRlIG1ha2Utcm93O1xufVxuXG5cbi8vIENvbHVtbnNcbi8vXG4vLyBDb21tb24gc3R5bGVzIGZvciBzbWFsbCBhbmQgbGFyZ2UgZ3JpZCBjb2x1bW5zXG5cbkBpbmNsdWRlIG1ha2UtZ3JpZC1jb2x1bW5zO1xuXG5cbi8vIEV4dHJhIHNtYWxsIGdyaWRcbi8vXG4vLyBDb2x1bW5zLCBvZmZzZXRzLCBwdXNoZXMsIGFuZCBwdWxscyBmb3IgZXh0cmEgc21hbGwgZGV2aWNlcyBsaWtlXG4vLyBzbWFydHBob25lcy5cblxuQGluY2x1ZGUgbWFrZS1ncmlkKHhzKTtcblxuXG4vLyBTbWFsbCBncmlkXG4vL1xuLy8gQ29sdW1ucywgb2Zmc2V0cywgcHVzaGVzLCBhbmQgcHVsbHMgZm9yIHRoZSBzbWFsbCBkZXZpY2UgcmFuZ2UsIGZyb20gcGhvbmVzXG4vLyB0byB0YWJsZXRzLlxuXG5AbWVkaWEgKG1pbi13aWR0aDogJHNjcmVlbi1zbS1taW4pIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkKHNtKTtcbn1cblxuXG4vLyBNZWRpdW0gZ3JpZFxuLy9cbi8vIENvbHVtbnMsIG9mZnNldHMsIHB1c2hlcywgYW5kIHB1bGxzIGZvciB0aGUgZGVza3RvcCBkZXZpY2UgcmFuZ2UuXG5cbkBtZWRpYSAobWluLXdpZHRoOiAkc2NyZWVuLW1kLW1pbikge1xuICBAaW5jbHVkZSBtYWtlLWdyaWQobWQpO1xufVxuXG5cbi8vIExhcmdlIGdyaWRcbi8vXG4vLyBDb2x1bW5zLCBvZmZzZXRzLCBwdXNoZXMsIGFuZCBwdWxscyBmb3IgdGhlIGxhcmdlIGRlc2t0b3AgZGV2aWNlIHJhbmdlLlxuXG5AbWVkaWEgKG1pbi13aWR0aDogJHNjcmVlbi1sZy1taW4pIHtcbiAgQGluY2x1ZGUgbWFrZS1ncmlkKGxnKTtcbn1cbiIsIi5oZWFkZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGluaztcblx0bWFyZ2luLWJvdHRvbTogMDtcblxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRoZWlnaHQ6IDgwcHg7XG5cdH1cblxufVxuXG5cdC5oZWFkZXJfX2xlZnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XG5cdFx0aGVpZ2h0OiA3MHB4O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0aGVpZ2h0OiA4MHB4O1xuXG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHQgICAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcblx0XHRcdCAgICBjb250ZW50OiBcIlwiO1xuXHRcdFx0ICAgIGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0ICAgIGhlaWdodDogMTAwJTtcblx0XHRcdCAgICBsZWZ0OiAtMTAwMHB4O1xuXHRcdFx0ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdCAgICB0b3A6IDA7XG5cdFx0XHQgICAgd2lkdGg6IDEwMDBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuaGVhZGVyX19yaWdodCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHBpbms7XG5cdFx0aGVpZ2h0OiA1NHB4O1xuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRoZWlnaHQ6IDgwcHg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdH1cblx0fVxuXG5cdC5oZWFkZXJfX2xvZ28ge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiAxMTVweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRoZWlnaHQ6IDU1cHg7XG5cblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRcdG1hcmdpbi10b3A6IDE1cHg7XG5cdFx0fVxuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgzNzVweCkge1xuXHRcdFx0Ly8gZnVsbCBsb2dvIG9uIGlQaG9uZSA2IG9yIGJpZ2dlclxuXHRcdFx0d2lkdGg6IDI1MHB4O1xuXHRcdH1cblx0fVxuXG4gICAgLmhlYWRlcl9fbW9iaWxlLW1lbnUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLm0taWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMXB4O1xuICAgICAgICAgICAgd2lkdGg6IDQ1cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgICAgICAgICBmaWxsOiAkcGluaztcbiAgICAgICAgfVxuICAgICAgICAuaGVhZGVyX19tb2JpbGUtbWVudS1pY29uLS1vcGVuIHtcblx0ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgLmhlYWRlcl9fbW9iaWxlLW1lbnUtaWNvbi0tY2xvc2Uge1xuXHQgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0ICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG5cdCAgICAuaGVhZGVyX19tb2JpbGUtbWVudS0tb3BlbiB7XG5cdCAgICAgICAgLmhlYWRlcl9fbW9iaWxlLW1lbnUtaWNvbi0tb3BlbiB7XG5cdFx0ICAgICAgICBkaXNwbGF5OiBub25lO1xuXHQgICAgICAgIH1cblx0ICAgICAgICAuaGVhZGVyX19tb2JpbGUtbWVudS1pY29uLS1jbG9zZSB7XG5cdFx0ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdC5oZWFkZXJfX292ZXJsYXkge1xuXHRcdFx0LXdlYmtpdC1ib3gtc2hhZG93OiAwIDVweCA1cHggMHB4IHJnYmEoMCwwLDAsMC4yKTtcblx0XHRcdC1tb3otYm94LXNoYWRvdzogMCA1cHggNXB4IDBweCByZ2JhKDAsMCwwLDAuMik7XG5cdFx0XHRib3gtc2hhZG93OiAwIDVweCA1cHggMHB4IHJnYmEoMCwwLDAsMC4yKTtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMTIycHg7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0ei1pbmRleDogNTAwO1xuXHRcdH1cblx0fVxuIiwiZm9vdGVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0d2lkdGg6IDEwMCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZmxvYXQ6IGxlZnQ7XG5cdHBhZGRpbmc6IDAgMTBweDtcblx0b3ZlcmZsb3c6IGF1dG87XG59XG5cblx0LmZvb3Rlcl9fY29udGVudCB7XG5cdFx0bWFyZ2luOiAyMHB4IGF1dG87XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHotaW5kZXg6IDE7XG5cdFx0cGFkZGluZy10b3A6IDIwcHg7XG5cdFx0Ym9yZGVyLXRvcDogNXB4IGRvdHRlZCAkd2hpdGU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDVweCBkb3R0ZWQgJHdoaXRlO1xuXHRcdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJHdoaXRlO1xuXHRcdFx0aGVpZ2h0OiAxNDBweDtcblx0XHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXHRcdFx0bWFyZ2luOiAwIGF1dG8gODBweDtcblx0XHR9XG5cdH1cblx0XG5cdGZvb3RlcjpiZWZvcmUge1xuXHQgICAgYmFja2dyb3VuZDogJHB1cnBsZSBub25lIHJlcGVhdCBzY3JvbGwgMCAwO1xuXHQgICAgY29udGVudDogXCJcIjtcblx0ICAgIGRpc3BsYXk6IGJsb2NrO1xuXHQgICAgaGVpZ2h0OiA3MHB4O1xuXHQgICAgbGVmdDogMDtcblx0ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ICAgIHRvcDogLTMwcHg7XG5cdCAgICB0cmFuc2Zvcm06IHNrZXcoMGRlZywgLTJkZWcpO1xuXHQgICAgd2lkdGg6IDEwMCU7XG5cdCAgICB6LWluZGV4OiAwO1xuXHR9XG5cdFxuXHQuZm9vdGVyX19wc2hlIHtcblx0XHR3aWR0aDogMTA2cHg7XG5cdFx0aGVpZ2h0OiAxMDJweDtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMC44ZW07XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFxuXHRcdHN2ZyB7XG5cdFx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0XHRoZWlnaHQ6IDcwcHg7XG5cdFx0fVxuXHRcdFxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0fVxuXHR9IiwiLmNvbnRlbnQge1xuXHRwYWRkaW5nLWJvdHRvbTogNzVweDtcbn0iLCIiLCIubWFpbm5hdl9fbmF2IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiBsZWZ0O1xuXHRcblx0Ji5tYWlubmF2X19uYXYtLWhlYWRlciB7XG5cdFx0XG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6ICRtZWRpdW0pIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdHotaW5kZXg6IDIwMDtcblx0XHRcdFxuXHRcdFx0Lm1haW5uYXZfX2xpc3QsIC5tYWlubmF2X19pdGVtIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdC5tYWlubmF2X19pdGVtIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdGNsZWFyOiBsZWZ0O1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdC5tYWlubmF2X19saW5rIHtcblx0XHRcdFx0cGFkZGluZzogMTdweCAxMHB4O1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRcblx0XG5cdFx0fVxuXHRcdFxuXHRcdEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaXVtKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXHRcdH1cblx0XG5cdH1cblxufVxuXG4ubWFpbm5hdl9fc29jaWFsLCAubWFpbm5hdl9fdXRpbGl0aWVzIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLm1haW5uYXZfX3NvY2lhbCB7XG5cdEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaXVtKSB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdH1cblx0XG5cdCYubWFpbm5hdl9fc29jaWFsLS1oZWFkZXIge1xuXHRcdEBtZWRpYSAobWluLXdpZHRoOiAkbWVkaXVtKSBhbmQgKG1heC13aWR0aDogJGxhcmdlKSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXHRcbn1cblxuLm1haW5uYXZfX3NvY2lhbC0tZm9vdGVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRmbG9hdDogbm9uZTtcblx0Y2xlYXI6IGJvdGg7XG5cdHBhZGRpbmctdG9wOiAxMHB4O1xuXHRcblx0XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRjbGVhcjogbm9uZTtcblx0XHRwYWRkaW5nLXRvcDogMDtcblx0fVxufVxuXG5cdC5tYWlubmF2X19zb2NpYWwtdGl0bGUge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0bWFyZ2luOiAyZW0gMCAwO1xuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cdFx0XG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHR0b3A6IC0yZW07XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cblxuLm1haW5uYXZfX3V0aWxpdGllcyB7XG5cdG1hcmdpbi1yaWdodDogLTE1cHg7XG5cdFxuXHRAbWVkaWEgKG1heC13aWR0aDogJG1lZGl1bSkge1xuXHRcdGZsb2F0OiByaWdodDtcblx0fVxufVxuXG4ubWFpbm5hdl9fbGlzdCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG59XG5cblx0Lm1haW5uYXZfX2l0ZW0ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxuXHRcblx0XHQubWFpbm5hdl9fbGluayB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRmb250LXNpemU6IDEuMnJlbTtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRwYWRkaW5nOiAyOXB4IDE1cHg7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0XG5cdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRsYXJnZSkge1xuXHRcdFx0XHRmb250LXNpemU6IDEuNXJlbTtcblx0XHRcdFx0cGFkZGluZzogMjdweCAxNXB4O1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQmLm1haW5uYXZfX2xpbmstdXRpbGl0eSB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMS4xcmVtO1xuXHRcdFx0XHRwYWRkaW5nOiAxOHB4IDEzcHg7XG5cdFx0XHRcdFxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRcdFx0XHRwYWRkaW5nOiAzMXB4IDIwcHhcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQmLm1haW5uYXZfX2xpbmstc29jaWFsIHtcblx0XHRcdFx0cGFkZGluZzogMTRweCA1cHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMXJlbTtcblx0XHRcdFx0XG5cdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0XHRcdHBhZGRpbmc6IDI3cHggMnB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRpIHtcblx0XHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRcdGhlaWdodDogMjVweDtcblx0XHRcdFx0XHR3aWR0aDogMjVweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMjBweDtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdFx0Y29sb3I6ICRwaW5rO1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0cGFkZGluZzogMnB4IDAgMCAxcHg7XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdCYubWFpbm5hdl9fbGluay1zb2NpYWwtLWxhcmdlIHtcblx0XHRcdFx0XHRmb250LXNpemU6IDEuNHJlbTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpIHtcblx0XHRcdFx0XHRcdGhlaWdodDogMzZweDtcblx0XHRcdFx0XHRcdHdpZHRoOiAzNnB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDMzcHg7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xuXHRcdFx0XHRcdFx0Y29sb3I6ICRwaW5rO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHQubWFpbm5hdl9fbGluay0tbG9naW4ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0XHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xuXHRcdH1cblx0XHRcblx0XHQubWFpbm5hdl9fbGluay0tcmVnaXN0ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcblx0XHRcdGNvbG9yOiAkcGluaztcblx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC01cHg7XG5cdFx0fVxuXHRcdFxuLm1haW5uYXZfX2Zvb3RlciB7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMDtcblx0XG5cdC5tYWlubmF2X19saW5rIHtcblx0XHRjb2xvcjogJHllbGxvdztcblx0fVxuXHRcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdH1cblx0XG5cdEBtZWRpYSAobWF4LXdpZHRoOiAkbWVkaXVtKSB7XG5cdFx0Y2xlYXI6IGxlZnQ7XG5cdFx0XG5cdFx0Lm1haW5uYXZfX2l0ZW0ge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHRcdFxuXHRcdC5tYWlubmF2X19saW5rLm1haW5uYXZfX2xpbmstdXRpbGl0eSB7XG5cdFx0XHRwYWRkaW5nOiAxOHB4IDAgMCAwO1xuXHRcdH1cblx0fVxuXG59IiwiLmJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtZmFtaWx5OiAkYnJhbmQtZm9udC1oZWFkaW5nO1xuXHRmb250LXNpemU6IDFyZW07XG5cdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdGxpbmUtaGVpZ2h0OiAxLjJyZW07XG5cdHBhZGRpbmc6IDEycHg7XG5cdGJvcmRlcjogbm9uZTtcbn1cblxuXHQuYnV0dG9uLS1tYXJnaW4tdG9wIHtcblx0ICAgIG1hcmdpbi10b3A6IDIwcHg7XG5cdH1cblx0XG5cdC5idXR0b24tLW1hcmdpbi1yaWdodCB7XG5cdCAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XG5cdH1cblx0XG5cdC5idXR0b24tLW1hcmdpbi1ib3R0b20ge1xuXHQgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblx0fVxuXHRcblx0LmJ1dHRvbi0tbWFyZ2luLWxlZnQge1xuXHQgICAgbWFyZ2luLWxlZnQ6IDQwcHg7XG5cdH1cblx0XG5cdC5idXR0b24tLWZ1bGwtd2lkdGgge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cdFxuXHQuYnV0dG9uLS1sYXJnZSB7XG5cdCAgICBmb250LXNpemU6IDEuMWVtO1xuXHQgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuXHQgICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcblx0ICAgIHBhZGRpbmc6IDE2cHg7XG5cdH1cblx0XG5cdC5idXR0b24tLXVwcGVyY2FzZSB7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0fVxuXHRcblx0LmJ1dHRvbi0tY2FwaXRhbGlzZSB7XG5cdFx0dGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG5cdH1cblx0XG5cdC5idXR0b24tLXdoaXRlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdH1cblx0XG5cdC5idXR0b24tLWdyZWVuIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdH1cblx0XG5cdC5idXR0b24tLXB1cnBsZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0fVxuXHRcblx0LmJ1dHRvbi0tcGluayB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHBpbms7XG5cdH1cblx0XG5cdC5idXR0b24tLXllbGxvdyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcblx0fVxuXHRcblx0LmJ1dHRvbi0tdGV4dC13aGl0ZSB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxuXHRcblx0LmJ1dHRvbi0tdGV4dC1wdXJwbGUge1xuXHRcdGNvbG9yOiAkcHVycGxlO1xuXHR9XG5cdFxuXHQuYnV0dG9uLS10ZXh0LXBpbmsge1xuXHRcdGNvbG9yOiAkcGluaztcblx0fVxuXHRcblx0LmJ1dHRvbi0tYm9yZGVyLXdoaXRlIHtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkd2hpdGU7XG5cdH1cblx0XG5cdC5idXR0b24tLWJvcmRlci15ZWxsb3cge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICR5ZWxsb3c7XG5cdH1cblx0XG5cdC5idXR0b24tLWJvcmRlci1wdXJwbGUge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICRwdXJwbGU7XG5cdH1cblx0XG5cdC5idXR0b24tLWJvcmRlci1waW5rIHtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkcGluaztcblx0fVxuXHRcbi8qID09PSBNZWRpYSB2YXJpYXRpb25zID09PSAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAgIC5idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn0iLCIuZm9ybV9fYmxvY2sge1xuICAgIFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgJi5mb3JtX19ibG9jay0td2lkZSB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcblx0ICAgIG1heC13aWR0aDogMzIwcHg7XG5cdH1cbn1cblxuLmZvcm1fX2xhYmVsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6ICRicmFuZC1mb250LWhlYWRpbmc7XG59XG5cbi5mb3JtX19sYWJlbC0tcmVzZXQge1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4uZm9ybV9fZmllbGQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDQycHg7XG4gICAgaGVpZ2h0OiA0MnB4O1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi5mb3JtX190aXRsZSB7XG5cdGNvbG9yOiAkeWVsbG93O1xufVxuXG4uZm9ybV9fc3VidGl0bGUge1xuXHRjb2xvcjogJHdoaXRlO1xufVxuXG5zZWxlY3QuZm9ybV9fZmllbGQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5cbi5mb3JtX19maWVsZC0tY2hlY2tib3gge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xufVxuXG4uZm9ybV9fZmllbGQtLXNlbGVjdCB7XG4gICAgcGFkZGluZzogMTNweCAxMHB4O1xufVxuXG4uZm9ybV9fZmllbGQtLXRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IDI1MHB4O1xufVxuXG4uZm9ybV9fZmllbGQtLWVycm9yIHtcbiAgICBiYWNrZ3JvdW5kOiAkcHVycGxlO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxucC5maWVsZF9fZXJyb3Ige1xuICAgIGNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uaXMtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5cbi8vIE5FVyBDT0RFIEJFTE9XIEhFUkUgLSBSRU1PVkUgQUJPVkUgT05DRSBNSUdSQVRFRFxuXG4uZm9ybV9fd3JhcHBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuXHRwYWRkaW5nOiAyNXB4IDAgMTAwcHg7XG5cdG1hcmdpbi1ib3R0b206IC03NXB4O1xuXHRtYXJnaW4tdG9wOiAyMHB4O1xufVxuXG5sZWdlbmQge1xuXHRwYWRkaW5nOiAwO1xuXHRmbG9hdDogbGVmdDtcblx0d2lkdGg6IDEwMCU7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdG1hcmdpbjogMS41ZW0gMDtcblx0Zm9udC1zaXplOiAxLjdyZW07XG59XG5cbmxlZ2VuZCArIHAge1xuXHRtYXJnaW4tdG9wOiAwO1xufVxuXG5maWVsZHNldCB7XG5cdGJvcmRlcjogMDtcblx0cGFkZGluZzogMC4wMWVtIDAgMCAwO1xuXHRtYXJnaW46IDA7XG5cdG1pbi13aWR0aDogMDtcbn1cblxuYm9keTpub3QoOi1tb3otaGFuZGxlci1ibG9ja2VkKSBmaWVsZHNldCB7XG5cdGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG4iLCIuaGVybyB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciB0b3A7XG5cdGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xuXHRwYWRkaW5nLXRvcDogNDAlO1xuXHRcblx0XHRAaW5jbHVkZSAgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRcdGhlaWdodDogMzgwcHg7XG5cdFx0fVxuXHRcdFxuXHRcdEBpbmNsdWRlICBicmVha3BvaW50KCRsYXJnZSkge1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRoZWlnaHQ6IDQ1MHB4O1xuXHRcdH1cblx0XG59XG5cblx0Lmhlcm8tLWRlZmF1bHQge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9pbWFnZXMvaGVyby9kZWZhdWx0LmpwZycpO1xuXHR9XG5cdFxuXHQuaGVyby0tcGF0dGVybiB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9oZXJvL3BhdHRlcm4uanBnJyk7XG5cdH1cblx0XG5cdC5oZXJvLS04LTExIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2hlcm8vOC0xMS5qcGcnKTtcblx0fVxuXHRcblx0Lmhlcm8tLTExLTEyIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2hlcm8vMTEtMTIuanBnJyk7XG5cdH1cblx0XG5cdC5oZXJvLS1hZ2UtZ3JvdXAge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9pbWFnZXMvaGVyby9hZ2UtZ3JvdXAuanBnJyk7XG5cdH1cblx0XG5cdC5oZXJvLS1uZXdzIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2hlcm8vbmV3cy5qcGcnKTtcblx0fVxuXHRcblx0Lmhlcm8tLWFydGljbGUge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9pbWFnZXMvaGVyby9hcnRpY2xlLmpwZycpO1xuXHR9XG5cdFxuXHQuaGVyby0tcGFyZW50cyB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9oZXJvL3BhcmVudHMuanBnJyk7XG5cdH1cblx0XG5cdFxuXHQvLyBMRUdBQ1kgSEVST1MgQkVMT1dcblx0XG5cdC5oZXJvLS1naXJsLWdyb3VwIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2hlcm8vZ2lybC1ncm91cC5qcGcnKTtcblx0fVxuXHRcblx0Lmhlcm8tLWJldHR5LWJ1cyB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9oZXJvL2JldHR5LWJ1cy5qcGcnKTtcblx0fVxuXHRcblx0Lmhlcm8tLWdpcmwtYmVkIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2hlcm8vZ2lybC1iZWQuanBnJyk7XG5cdH1cblx0XG5cdC5oZXJvLS1lcnJvciB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9oZXJvL2Vycm9yLmpwZycpO1xuXHR9XG5cdFxuXHQuaGVyby0tYW5pbWF0ZWQge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9pbWFnZXMvaGVyby9hbmltYXRlZC5qcGcnKTtcblx0XHRwYWRkaW5nLXRvcDogMjQlO1xuXHRcdFxuXHRcdEBpbmNsdWRlICBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdFx0aGVpZ2h0OiAyNzlweDtcblx0XHR9XG5cdFx0XG5cdFx0QGluY2x1ZGUgIGJyZWFrcG9pbnQoJGxhcmdlKSB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRcdGhlaWdodDogMzM2cHg7XG5cdFx0fVxuXHRcdFxuXHRcdC5oZXJvX19iYW5uZXIge1xuXHRcdFx0QGluY2x1ZGUgIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxOTBweDtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0QGluY2x1ZGUgIGJyZWFrcG9pbnQoJGxhcmdlKSB7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDI0MHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0Lmhlcm8tLXZpZGVvIHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLXRvcDogNTYuNSU7XG5cdFx0XG5cdFx0Lmhlcm9fX2Jhbm5lciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0XHRcblx0XHRAaW5jbHVkZSAgYnJlYWtwb2ludCgxMDUwcHgpIHtcblx0XHRcdHBhZGRpbmctdG9wOiA0NSU7XG5cdFx0XHRcblx0XHRcdC5oZXJvX19iYW5uZXIge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR6LWluZGV4OiAyMDA7XG5cdFx0XHRcdGJvdHRvbTogNjVweDtcblx0XHRcdH1cblx0XHRcdFxuXHRcdH1cdFx0XG5cdFx0XG5cdH1cblx0XG5cdC5oZXJvX19jb250ZW50IHtcblx0XHRtYXJnaW4tdG9wOiAtMjVweDtcblx0XHRcblx0XHRAaW5jbHVkZSAgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAtMTAwcHg7XG5cdFx0fVxuXHR9XG5cdFxuXHQuaGVyb19fYmFubmVyIHtcblx0XHRwYWRkaW5nOiAxMHB4IDE4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmbG9hdDogbGVmdDtcblx0XHRmb250LWZhbWlseTogJGJyYW5kLWZvbnQtaGVhZGluZztcblx0XHRmb250LXNpemU6IDEuMWVtO1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XG5cdFx0QGluY2x1ZGUgIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0Zm9udC1zaXplOiAxLjNlbTtcblx0XHRcdG1hcmdpbi10b3A6IDI3NXB4O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHRcdFxuXHRcdEBpbmNsdWRlICBicmVha3BvaW50KCRsYXJnZSkge1xuXHRcdFx0bWFyZ2luLXRvcDogMzUwcHg7XG5cdFx0fVxuXHRcdFxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblx0XG5cdC5oZXJvX19jb3B5IHtcblx0XHRcblx0XHRAaW5jbHVkZSAgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDYwcHg7XG5cdFx0XHRsZWZ0OiAyMHB4O1xuXHRcdH1cblxuXHR9XG5cdFxuXHQuaGVyb19fcGxheSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHBpbms7XG5cdFx0aGVpZ2h0OiA3MHB4O1xuXHRcdHdpZHRoOiA3MHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRwYWRkaW5nLXRvcDogMjBweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDZweDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogNTAlO1xuXHRcdHRvcDogNTAlO1xuXHRcdG1hcmdpbi10b3A6IC04NXB4O1xuXHRcdG1hcmdpbi1sZWZ0OiAtMzVweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFxuXHRcdGkge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDJyZW07XG5cdFx0XHRjb2xvcjogI2ZmZjtcblx0XHR9XG5cdFx0XG5cdFx0QGluY2x1ZGUgIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuXHRcdFx0aGVpZ2h0OiAxNDBweDtcblx0XHRcdHdpZHRoOiAxNDBweDtcblx0XHRcdG1hcmdpbi10b3A6IC03MHB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC03MHB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDM4cHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdFx0XHRcblx0XHRcdGkge1xuXHRcdFx0XHRmb250LXNpemU6IDRyZW07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHR9XG5cdFxuXHQuaGVyb19fdmlkZW8ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0ei1pbmRleDogOTk7XG5cdH0iLCIuYXNpZGUtcHJvbW8ge1xuXHRiYWNrZ3JvdW5kOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2FzaWRlLXByb21vL3JlcGVhdGluZy10aWxlLnBuZycpIHJlcGVhdCAkcGluaztcblx0cGFkZGluZzogMzBweDtcbn1cblxuXHQuYXNpZGUtcHJvbW8tLXRvcC1tYXJnaW4ge1xuXHRcdG1hcmdpbi10b3A6IDQwcHg7XG5cdH1cblx0XG5cdC5hc2lkZS1wcm9tb19fdGl0bGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMS40cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdH0iLCIuc2Nob29sX193cmFwcGVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0cGFkZGluZzogMTBweCAyMHB4O1xufVxuXG4uc2Nob29sX19yb3cge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwYWRkaW5nOiAxM3B4IDEyMHB4IDEzcHggMjBweDtcbiAgICBjb2xvcjogJHB1cnBsZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgICAgXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgLmJ1dHRvbi0tcGluayB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICB9XG4gICAgLnNjaG9vbF9fcG9zdGNvZGUsIC5zY2hvb2xfX25hbWUge1xuXHQgICAgY29sb3I6ICRwdXJwbGU7XG4gICAgfVxufVxuXG4uc2Nob29sX19wb3N0Y29kZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5zY2hvb2xfX3RpdGxlIHtcblx0Y29sb3I6ICNmZmY7XG59XG5cbi5zY2hvb2xfX2xpc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5zY2hvb2xfX3N1bW1hcnkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcHVycGxlO1xuXHRwYWRkaW5nOiAyMHB4O1xuXHRwYWRkaW5nLWxlZnQ6IDEyMHB4O1xuXHRiYWNrZ3JvdW5kOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL3NjaG9vbC95b3VyLXNjaG9vbC5wbmcnKSAzMHB4IDMwcHggbm8tcmVwZWF0ICRwdXJwbGU7XG5cdFxuXHRoNCwgcCB7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdH1cbn1cblxuLnNjaG9vbF9fc3VtbWFyeS1lbHNlIHtcblx0Y29sb3I6ICNmZmY7XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1lZGl1bSkge1xuICAgIC5zY2hvb2xfX3JvdyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICBoZWlnaHQ6IDQzcHg7XG4gICAgfVxuICAgIFxuXHQuc2Nob29sX19wb3N0Y29kZSB7XG5cdFx0d2lkdGg6IDIwJTtcblx0XHRmbG9hdDogbGVmdDtcblx0fVxufVxuIiwiLm5ld3NfX2FydGljbGUge1xuXHRiYWNrZ3JvdW5kOiB1cmwoJy9idW5kbGVzL2FwcC9hc3NldHMvaW1hZ2VzL2FzaWRlLXByb21vL3JlcGVhdGluZy10aWxlLnBuZycpIHJlcGVhdCAkcGluaztcblx0b3ZlcmZsb3c6IGF1dG87XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luLWJvdHRvbTogMzBweDtcblx0XG5cdGltZyB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0XG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkbWVkaXVtKSB7XG5cdFx0XHRtYXgtd2lkdGg6IDMwMHB4O1xuXHRcdH1cblx0fVxuXHRcblx0Lm5ld3NfX2FydGljbGUtdGl0bGUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHRtYXJnaW46IDIwcHggMCAwIDA7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0Y29sb3I6ICRwdXJwbGU7XG5cdFx0Zm9udC1mYW1pbHk6ICRicmFuZC1mb250LWhlYWRpbmc7XG5cdH1cblx0XG5cdC5uZXdzX19hcnRpY2xlLWludHJvIHtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGNvbG9yOiAjZmZmO1xuXHR9XG5cdFxuXHQuYnV0dG9uIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bWFyZ2luOiAwIDEwcHggMTBweDtcblx0XHRcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHRib3R0b206IDEwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdH1cblx0XG5cdCYubmV3c19fYXJ0aWNsZS0tZXhwYW5kZWQge1xuXHRcdHBhZGRpbmctdG9wOiAyNSU7XG5cdFx0bWluLWhlaWdodDogMjEwcHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0dG9wOiAwO1xuXHRcdH1cblx0XHRcblx0XHQubmV3c19fYXJ0aWNsZS10aXRsZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0dG9wOiAzMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHB1cnBsZTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHRcdFxuXHRcdC5idXR0b24ge1xuXHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRyaWdodDogMTBweDtcblx0XHRcdGJvdHRvbTogMTBweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblx0XG5cbn0iLCIucmVzb3VyY2VfX3dyYXBwZXIge1xuXHRtYXJnaW4tdG9wOiA1MHB4O1xufVxuXG4ucmVzb3VyY2VfX2ltYWdlIHtcblx0d2lkdGg6IDEwMCU7XG59XG5cbi5yZXNvdXJjZV9fdGltZSB7XG5cdGNvbG9yOiAkeWVsbG93O1xuXHRmb250LXNpemU6IDEuMXJlbTtcblx0YmFja2dyb3VuZDogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9yZXNvdXJjZS9yZXNvdXJjZS10aW1lLnBuZycpIG5vLXJlcGVhdCBsZWZ0O1xuXHRwYWRkaW5nOiAxNXB4IDAgMTVweCA1MHB4O1xufVxuXG4ucmVzb3VyY2VfX2NvbnRlbnQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcHVycGxlO1xuXHRwYWRkaW5nOiAyMHB4O1xuXHRoZWlnaHQ6IDEwMCU7XG5cdG1hcmdpbi10b3A6IC00cHg7XG5cdFxuXHQ+IGRpdiB7XG5cdFx0cGFkZGluZy1ib3R0b206IDEwcHg7XG5cdH1cblx0XG5cdGg0Om5vdCgucmVzb3VyY2VfX3RpbWUpICwgcCB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxufVxuXG4ucmVzb3VyY2VfX2Zvb3RlciB7XG5cdG1hcmdpbi10b3A6IDVyZW07XG5cdGJhY2tncm91bmQtY29sb3I6ICRwaW5rO1xuXHRwYWRkaW5nOiAyNXB4IDAgMTAwcHg7XG5cdG1hcmdpbi1ib3R0b206IC03NXB4O1xuXHRcblx0aDEsIHAge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cbn0iLCIuYmV0dHktYnVzLXRvdXJfX3RpdGxlLXdyYXAge1xuXHR0b3A6IDIwcHg7XG59XG5cbi5iZXR0eS1idXMtdG91cl9fdGl0bGUge1xuXHRmb250LWZhbWlseTogJGJyYW5kLWZvbnQtcmVndWxhcjtcblx0Zm9udC1zaXplOiAzLjVyZW07XG5cdG1hcmdpbjogMC41ZW0gMCAwIDA7XG5cdFxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRjb2xvcjogJHllbGxvdztcblx0fVxufVxuXG4uYmV0dHktYnVzLXRvdXJfX3N1YnRpdGxlIHtcblx0bWFyZ2luOiAwO1xuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG59XG5cbi5iZXR0eS1idXMtdG91cl9fZGF0ZXMge1xuXHRtYXJnaW46IDA7XG5cdFxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMS4ycmVtO1xuXHR9XG59XG5cbi5iZXR0eS1idXMtdG91cl9faW1hZ2Uge1xuXHR3aWR0aDogMTAwJTtcbn1cbiIsIi5xdW90ZSB7XG5cdGJhY2tncm91bmQ6IHVybCgnL2J1bmRsZXMvYXBwL2Fzc2V0cy9pbWFnZXMvYmV0dHktYnVzL3F1b3RlLXRpbGUucG5nJykgcmVwZWF0ICR3aGl0ZTtcblx0cGFkZGluZzogMjVweDtcblx0bWFyZ2luLXRvcDogMzBweDtcblx0b3ZlcmZsb3c6IGF1dG87XG5cdFxuXHRibG9ja3F1b3RlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xuXHRcdGNvbG9yOiAkcGluaztcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMi41cmVtO1xuXHRcdGZvbnQtZmFtaWx5OiAkYnJhbmQtZm9udC1ib2R5O1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXHRcblx0c3ZnIHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0d2lkdGg6IDc1cHg7XG5cdFx0aGVpZ2h0OiA3NXB4O1xuXHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdH1cbn0iLCIvLyB6LWluZGV4IHByaW9yaXRpZXNcbiRib2R5LXogOiA5OTk7XG4kaWZyYW1lLXogOiAxMDAwO1xuJHRvZ2dsZVRhcmdldC16IDogMTAwMTtcbiRpZnJhbWVCcmVha3BvaW50IDogMTA1MHB4O1xuXG4jaW50ZXJhY3RpdmUtYm9keS1vcGFjaXR5IHsgLy8gaGlkZGVuIHdpdGggbC1oaWRlIGNsYXNzIGJ5IGRlZmF1bHRcblx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuXHRvcGFjaXR5OiAwO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6IDEwMHZoO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IC0xO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTE1LDcyLDE1MSk7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkaWZyYW1lQnJlYWtwb2ludCkge1xuXHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdH1cblx0Ji5oaWRkZW4tb3Age1xuXHRcdHotaW5kZXg6ICRib2R5LXo7XG5cdFx0b3BhY2l0eTogMC45NVxuXHR9XG59XG4uaW50ZXJhY3RpdmUge1xuXHQuaWZyYW1lLWNvbnRhaW5lciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogNzAwcHg7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHQmLmZ1bGxzY3JlZW5lZCB7XG5cdFx0XHR3aWR0aDogOTYlO1xuXHRcdFx0bWF4LXdpZHRoOiAxNDQwcHg7XG5cdFx0XHRoZWlnaHQ6IDkyJTtcblx0XHRcdG1heC1oZWlnaHQ6IDgyOHB4O1xuXHRcdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdFx0ei1pbmRleDogJGlmcmFtZS16O1xuXHRcdFx0bGVmdDogMDsgXG5cdFx0XHRyaWdodDogMDtcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFx0dG9wOiA0JTtcblx0XHRcdG9wYWNpdHk6IDEgIWltcG9ydGFudDtcblx0XHRcdGlmcmFtZSB7XG5cdFx0XHRcdGJvcmRlcjogNHB4IHNvbGlkIHdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRpZnJhbWVCcmVha3BvaW50KSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdH1cblx0I2lmcmFtZS1jb250YWluZXJfX3RhcmdldC1jbGljayB7IC8vIElEIHNpbmNlIGpzIGlzIHVzZWQgd2l0aCBpdFxuXHRcdHotaW5kZXg6ICR0b2dnbGVUYXJnZXQtejtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDsgXG5cdFx0cmlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdHdpZHRoOiA2MHB4O1xuXHRcdCYuZnVsbHNjcmVlbmVkIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR9XG5cdH1cblx0aWZyYW1lIHsgLy8gbm90IGRpc3BsYXllZCBvbiBzbWFsbGVyIGRldmljZXNcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRpZnJhbWVCcmVha3BvaW50KSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0b3ZlcmZsb3cteTogaGlkZGVuO1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHR3aWR0aDoxMDAlO1xuXHR9XG5cdFxuXHQuaW50ZXJhY3RpdmVfX2Rpc2FibGVkIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcblx0XHRAaW5jbHVkZSBicmVha3BvaW50KCRpZnJhbWVCcmVha3BvaW50KSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXHRcbn0iLCIudmlkZW8tY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwO1xufVxuXG4udmlkZW8tY29udGFpbmVyIGlmcmFtZSxcbi52aWRlby1jb250YWluZXIgb2JqZWN0LFxuLnZpZGVvLWNvbnRhaW5lciBlbWJlZCxcbi52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi52aWRlby1lbmxhcmdlIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0Y29sb3I6ICRwdXJwbGU7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRkaXNwbGF5OiBub25lO1xuXHR0b3A6IDIwcHg7XG5cdHJpZ2h0OiAyMHB4O1xuXHRoZWlnaHQ6IDM2cHg7XG5cdHdpZHRoOiAzNnB4O1xuXHR6LWluZGV4OiAxNTA7XG5cdHBhZGRpbmctdG9wOiA2cHg7XG5cdHBhZGRpbmctbGVmdDogM3B4O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Zm9udC1mYW1pbHk6ICRicmFuZC1mb250LWhlYWRpbmc7XG5cdFxuXHRAaW5jbHVkZSBicmVha3BvaW50KDEwNTBweCkge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbkBpbmNsdWRlICBicmVha3BvaW50KDEwNTBweCkge1xuXHQudmlkZW8tbWFzayB7XG5cdFx0YmFja2dyb3VuZDogdXJsKCcvYnVuZGxlcy9hcHAvYXNzZXRzL2ltYWdlcy9oZXJvL3ZpZGVvLW1hc2sucG5nJykgbm8tcmVwZWF0IGJvdHRvbSBjZW50ZXI7XG5cdFx0aGVpZ2h0OiAxODBweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMDtcblx0XHRib3R0b206IDA7XG5cdFx0ei1pbmRleDogMTUwO1xuXHR9XG59IiwiLnByZWhlYWRlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0ZGlzcGxheTogbm9uZTtcblx0XG5cdGltZywgcCwgYSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cdFxuXHRpbWcge1xuXHRcdG1hcmdpbjogMC41cmVtIDJyZW0gLTAuNnJlbTtcblx0fVxuXHRcblx0cCB7XG5cdFx0Zm9udC1zaXplOiAwLjhyZW07XG5cdFx0XG5cdFx0c3Ryb25nIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMS4xcmVtO1xuXHRcdH1cblx0fVxuXHRcblx0YSB7XG5cdFx0bWFyZ2luOiAwLjVyZW0gMCAwLjVyZW0gMS41cmVtO1xuXHRcdHBhZGRpbmc6IDZweCAxNnB4O1xuXHR9XG5cdFxuXHRAaW5jbHVkZSBicmVha3BvaW50KCRtZWRpdW0pIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufSIsIi5hZHZpY2Uge1xuXG59XG5cbi5hZHZpY2UtcHJldmlld19fd3JhcHBlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luLWJvdHRvbTogMjRweDtcblxuXHRoMyB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRiYWNrZ3JvdW5kOiAkcGluaztcblx0XHRwYWRkaW5nOiAxMHB4IDI0cHg7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcblx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0fVxuXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsNykge1xuXHRcdFx0cGFkZGluZzogMTBweCAyNHB4O1xuXHRcdH1cblx0fVxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG4uYWR2aWNlLXByZXZpZXdfX3R4dCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ei1pbmRleDogNDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHBhZGRpbmc6IDIycHggNDRweCAyNHB4IDM0cHg7XG5cblx0QGluY2x1ZGUgYnJlYWtwb2ludCgkc21hbGwpIHtcblx0XHRwYWRkaW5nOiAxNXB4O1xuXHR9XG5cdEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsNykge1xuXHRcdHBhZGRpbmc6IDIycHggNDRweCAyNHB4IDM0cHg7XG5cdH1cbn1cbi5hZHZpY2UtcHJldmlld19fYnV0dG9uIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRyaWdodDogMjRweDtcblx0Ym90dG9tOiAyNnB4O1xufVxuIiwiLyoqXG4gKiBGZWF0dXJlZCBibG9jayB1c2VkIGJ5IHRoZSAvcGFyZW50c1xuICovXG4uYmxvY2stZmVhdHVyZWQge1xuICBiYWNrZ3JvdW5kOiAkeWVsbG93O1xuICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcblxuICBoMyB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDQ4KTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBwYWRkaW5nOiAxM3B4IDE4cHg7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kOiAkcGluaztcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsNykge1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgIH1cbiAgfVxuXG4gICYtLWNvbG9yLWdyZWVuIHtcbiAgICBiYWNrZ3JvdW5kOiAkZ3JlZW47XG4gIH1cbn1cbiAgLmJsb2NrLWZlYXR1cmVkX190eHQge1xuICAgIG1hcmdpbi10b3A6IDEzcHg7XG4gICAgcGFkZGluZzogMTBweCAzMHB4IDEwcHggMjBweDtcblxuICAgIHAge1xuICAgICAgQGluY2x1ZGUgZ2V0LXJlbSgnbGluZS1oZWlnaHQnLCAxOSk7XG4gICAgfVxuICB9XG4gIC5ibG9jay1mZWF0dXJlZF9fYnV0dG9uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xuICB9XG5cbi8qKlxuICogTmV3cyBibG9jayBwcm9tb1xuICovXG4uYmxvY2stbmV3cy1wcm9tbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogJHB1cnBsZTtcblxuICBoMiB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDQwKTtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJhY2tncm91bmQ6ICRwaW5rO1xuICB9XG59XG4gIC5ibG9jay1uZXdzLXByb21vX19sZWZ0LXBhbmVsIHtcbiAgICBmb250LXNpemU6IDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbDcpIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuICB9XG4gIC5ibG9jay1uZXdzLXByb21vX19yaWdodC1wYW5lbCB7XG4gICAgcGFkZGluZy1ib3R0b206IDMwcHg7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbDcpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdG9wOiAwO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWFyZ2luLWxlZnQ6IDUwJTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5ibG9jay1uZXdzLXByb21vcl9fcGFuZWwtd3JhcCB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xuICAgIH1cblxuICAgIGgyIHtcbiAgICAgIG1hcmdpbi10b3A6IDIycHg7XG4gICAgICBwYWRkaW5nOiAyMHB4IDMwcHggMjBweCAxOHB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbWFsbDcpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDI0KTtcbiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbGFyZ2UpIHtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDQwKTtcbiAgICAgICAgcGFkZGluZzogMjBweCAzMHB4IDIwcHggMThweDtcblxuICAgICAgfVxuICAgIH1cbiAgICBhIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbi10b3A6IDlweDtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtYWxsNykge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAzMHB4O1xuICAgICAgICBib3R0b206IDMwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG4iLCIucGFyZW50cyB7XG5cbn1cblxuLnBhcmVudHMge1xuICAucGFyZW50c19faW50cm8ge1xuICAgIGgxLCBoMiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIH1cbiAgfVxuXG4gIC5ibG9jay1uZXdzLXByb21vIHtcbiAgICBtYXJnaW46IDZweCAwIDQwcHggMDtcbiAgfVxuXG4gIC5wYXJlbnQtYWR2aWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjNweDtcblxuICAgIGgyIHtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSg0OCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBwYWRkaW5nLCBtYXJnaW5zLCBib3JkZXJzXG4vLyBPVVRQVVQ6IG0tci0wIChtYXJnaW4tcmlnaHQ6IDA7KVxuQGVhY2ggJHBvcyxcbiRsZXR0ZXIgaW4gJENTU3Bvc2l0aW9ucyB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCA0IHtcbiAgICAgICAgLnAtI3skbGV0dGVyfS0jeyRpfSB7XG4gICAgICAgICAgICBAaWYgJGk9PTAge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctI3skcG9zfTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLSN7JHBvc306ICN7JGl9ZW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubS0jeyRsZXR0ZXJ9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpZiAkaT09MCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLSN7JHBvc306IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLSN7JHBvc306ICN7JGl9ZW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuYi0jeyRsZXR0ZXJ9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpZiAkaT09MCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLSN7JHBvc306IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLSN7JHBvc306ICN7JGl9cHggc29saWQgYmxhY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJhdGlvc1xuLy8gVVNBR0Vcbi8vIDxkaXYgY2xhc3M9XCJyYXRpby0zLTFcIj5cbi8vICAgICA8ZGl2IGNsYXNzPVwicmF0aW8tLWNvbnRlbnRcIj5cbi8vICAgICAvLyB3aGF0IGV2ZXIgeW91IGxpa2UgXG4vLyAgICAgPC9kaXY+XG4vLyA8L2Rpdj5cblxuQGZvciAkZmlyc3QgZnJvbSAxIHRocm91Z2ggMTAge1xuICAgIEBmb3IgJHNlY29uZCBmcm9tIDEgdGhyb3VnaCAxMCB7XG4gICAgICAgIC5yYXRpby0jeyRmaXJzdH0tI3skc2Vjb25kfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8oJGZpcnN0LCAkc2Vjb25kKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogVXRpbGl0eSBjbGFzc2VzIGFyZSBlaXRoZXIgdXNlZnVsIGFkZCBpbiBjbGFzc2VzIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIGEgbW9kdWxlIC8gY29uc2lzdGVudCBwYXR0ZXJuXG4gICBvciBvdmVycmlkaW5nIGNsYXNzZXMgZm9yIHNtYWxsIGNoYW5nZXMgbGlrZSBhZGRpdGlvbmFsIHBhZGRpbmcgLSBzaG91bGQgcmFyZWx5IGJlIHVzZWQhICovXG5cbi51LWNsZWFyZml4IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICAqem9vbTogMTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgXCI7IC8qIDEgKi9cbiAgICAgICAgZGlzcGxheTogdGFibGU7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxufVxuXG4udS1uby1saXN0IHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG5cbi51LXNraXB0b2NvbnRlbnQge1xuICAgIGhlaWdodDogMXB4O1xuICAgIHdpZHRoOiAxcHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdG9wOiAtMTBweDtcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7XG4gICAgfVxufVxuXG4udS1zY3JlZW5yZWFkZXIge1xuICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgIGxlZnQ6LTEwMDAwcHg7XG4gICAgdG9wOmF1dG87XG4gICAgd2lkdGg6MXB4O1xuICAgIGhlaWdodDoxcHg7XG4gICAgb3ZlcmZsb3c6aGlkZGVuO1xufVxuXG4udS1hbGlnbi0tbGVmdCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLnUtYWxpZ24tLXJpZ2h0IHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnUtYWxpZ24tLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLnUtYWxpZ24tLXRvcCB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLnUtYWxpZ24tLWJvdHRvbSB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbn1cblxuLnUtZmxvYXQtLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4udS1mbG9hdC0tcmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbn1cblxuLnUtcGFkZGluZy0tbm9uZSB7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLnUtcGFkZGluZy0tMTAge1xuICAgIHBhZGRpbmc6IDEwcHg7XG59XG5cbi51LXBhZGRpbmctLTIwIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xufVxuXG4udS1tYXJnaW4tLXRvcC0tMCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbn1cblxuLnUtbWFyZ2luLS1ib3R0b20tLTAge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi51LXVwcGVyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnUtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4udS1pbmxpbmUtYmxvY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9ja1xufVxuXG4udS1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDI7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNSk7XG59XG5cbi51LWN1cnNvci0tcG9pbnRlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udS1zdGVwLWdyb3VwIHtcblx0XG5cdGg0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHRmbG9hdDogbGVmdDtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDUwcHg7XG5cdFx0Y2xlYXI6IGxlZnQ7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiA5MnB4O1xuXHR9XG5cblx0cCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAxMjBweDtcblx0fVxuXG5cdG1hcmdpbi1ib3R0b206IDRyZW07XG59XG5cbi51LWZ1bGwtd2lkdGgge1xuICB3aWR0aDogMTAwJTtcbn1cbiIsIi5pcy1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5pcy1kaXNwbGF5ZWQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFNOUMsc0JBQXNCO0FnRE50Qiw0REFBNEQ7QUFFNUQ7Ozs7R0FJRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0QsV0FBVyxFQUFFLFVBQVc7RUFBRSxPQUFPO0VBQ2pDLG9CQUFvQixFQUFFLElBQUs7RUFBRSxPQUFPO0VBQ3BDLHdCQUF3QixFQUFFLElBQUs7RUFBRSxPQUFPLEVBQzNDOztBQUVEOztHQUVHO0FBRUgsQUFBQSxJQUFJLENBQUM7RUFDRCxNQUFNLEVBQUUsQ0FBRSxHQUNiOztBQUVEO2dGQUNnRjtBQUVoRjs7Ozs7R0FLRztBQUVILEFBQUEsT0FBTztBQUNQLEFBQUEsS0FBSztBQUNMLEFBQUEsT0FBTztBQUNQLEFBQUEsVUFBVTtBQUNWLEFBQUEsTUFBTTtBQUNOLEFBQUEsTUFBTTtBQUNOLEFBQUEsTUFBTTtBQUNOLEFBQUEsTUFBTTtBQUNOLEFBQUEsSUFBSTtBQUNKLEFBQUEsSUFBSTtBQUNKLEFBQUEsR0FBRztBQUNILEFBQUEsT0FBTztBQUNQLEFBQUEsT0FBTyxDQUFDO0VBQ0osT0FBTyxFQUFFLEtBQU0sR0FDbEI7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxLQUFLO0FBQ0wsQUFBQSxNQUFNO0FBQ04sQUFBQSxRQUFRO0FBQ1IsQUFBQSxLQUFLLENBQUM7RUFDRixPQUFPLEVBQUUsWUFBYTtFQUFFLE9BQU87RUFDL0IsY0FBYyxFQUFFLFFBQVM7RUFBRSxPQUFPLEVBQ3JDOztBQUVEOzs7R0FHRztBQUVILEFBQW9CLEtB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QUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxTQUFTLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLEVBQUUsQUFBQSxVQUFVLENBQTFoQjtFQUNFLFFBQVEsRUFBRSxRQUFTO0VBRW5CLFVBQVUsRUFBRSxHQUFJO0VBRWhCLFlBQVksRUFBRyxJQUFJO0VBQ25CLGFBQWEsRUFBRSxJQUFLLEdBQ3JCOztBQVNELEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsU0FBUyxFQUFFLEFBQUEsVUFBVSxFQUFFLEFBQUEsVUFBVSxFQUFFLEFBQUEsVUFBVSxDQUFySTtFQUNFLEtBQUssRUFBRSxJQUFLLEdBQ2I7O0FBTUMsQUFBQSxTQUFTLENBQVQ7RUFDRSxLQUFLLEVBQUUsUUFBVSxHQUNsQjs7QUFGRCxBQUFBLFNBQVMsQ0FBVDtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsU0FBUyxDQUFUO0VBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7O0FBRkQsQUFBQSxTQUFTLENBQVQ7RUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjs7QUFGRCxBQUFBLFNBQVMsQ0FBVDtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsU0FBUyxDQUFUO0VBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7O0FBRkQsQUFBQSxTQUFTLENBQVQ7RUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjs7QUFGRCxBQUFBLFNBQVMsQ0FBVDtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsU0FBUyxDQUFUO0VBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7O0FBRkQsQUFBQSxVQUFVLENBQVY7RUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjs7QUFGRCxBQUFBLFVBQVUsQ0FBVjtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsVUFBVSxDQUFWO0VBQ0UsS0FBSyxFQUFFLElBQVUsR0FDbEI7O0FBa0JELEFBQUEsY0FBYyxDQUFkO0VBQ0UsS0FBSyxFQUFFLElBQUssR0FDYjs7QUFQRCxBQUFBLGNBQWMsQ0FBZDtFQUNFLEtBQUssRUFBRSxRQUFVLEdBQ2xCOztBQUZELEFBQUEsY0FBYyxDQUFkO0VBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7O0FBRkQsQUFBQSxjQUFjLENBQWQ7RUFDRSxLQUFLLEVBQUUsR0FBVSxHQUNsQjs7QUFGRCxBQUFBLGNBQWMsQ0FBZDtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsY0FBYyxDQUFkO0VBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7O0FBRkQsQUFBQSxjQUFjLENBQWQ7RUFDRSxLQUFLLEVBQUUsR0FBVSxHQUNsQjs7QUFGRCxBQUFBLGNBQWMsQ0FBZDtFQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCOztBQUZELEFBQUEsY0FBYyxDQUFkO0VBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7O0FBRkQsQUFBQSxjQUFjLENBQWQ7RUFDRSxLQUFLLEVBQUUsR0FBVSxHQUNsQjs7QUFGRCxBQUFB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QUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxTQUFTLENBQVQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsU0FBUyxDQUFUO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLFNBQVMsQ0FBVDtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxTQUFTLENBQVQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsU0FBUyxDQUFUO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLFVBQVUsQ0FBVjtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxVQUFVLENBQVY7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsVUFBVSxDQUFWO0lBQ0UsS0FBSyxFQUFFLElBQVUsR0FDbEI7RUFrQkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsSUFBSyxHQUNiO0VBUEQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsUUFBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxlQUFlLENBQWY7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFB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QUEsU0FBUyxDQUFUO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLFNBQVMsQ0FBVDtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxTQUFTLENBQVQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsU0FBUyxDQUFUO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLFVBQVUsQ0FBVjtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxVQUFVLENBQVY7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsVUFBVSxDQUFWO0lBQ0UsS0FBSyxFQUFFLElBQVUsR0FDbEI7RUFrQkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsSUFBSyxHQUNiO0VBUEQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsUUFBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxHQUFVLEdBQ2xCO0VBRkQsQUFBQSxlQUFlLENBQWY7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsZUFBZSxDQUFmO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLGVBQWUsQ0FBZjtJQUNFLEtBQUssRUFB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QUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLFNBQVMsQ0FBVDtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxTQUFTLENBQVQ7SUFDRSxLQUFLLEVBQUUsR0FBVSxHQUNsQjtFQUZELEFBQUEsVUFBVSxDQUFWO0lBQ0UsS0FBSyxFQUFFLFNBQVUsR0FDbEI7RUFGRCxBQUFBLFVBQVUsQ0FBVjtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxVQUFVLENBQVY7SUFDRSxLQUFLLEVBQUUsSUFBVSxHQUNsQjtFQWtCRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxJQUFLLEdBQ2I7RUFQRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxRQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxjQUFjLENBQWQ7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsY0FBYyxDQUFkO0lBQ0UsS0FBSyxFQUFFLEdBQVUsR0FDbEI7RUFGRCxBQUFBLGVBQWUsQ0FBZjtJQUNFLEtBQUssRUFBRSxTQUFVLEdBQ2xCO0VBRkQsQUFBQSxlQUFlLENBQWY7SUFDRSxLQUFLLEVBQUUsU0FBVSxHQUNsQjtFQUZELEFBQUEsZUFBZSxDQUFmO0lBQ0UsS0FBSyxFQUFFLElBQVUsR0FDbEI7RUFQRCxBQUFBLGNBQWMsQ0FBZDtJQUNFLElBQUksRUFBRSxJQUFLLEdBQ1o7RUFQRCxBQUFBLGNB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 */