@charset "UTF-8";
html {
  box-sizing: border-box; }

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

/*! normalize.css v3.0.1 | 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,
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: 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.
 */
/**
 * 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; }

/**
 * Reset ==============================================================
 * Based on http://meyerweb.com/eric/tools/css/reset
 */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
font,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
input,
select,
textarea,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
  margin: 0px;
  padding: 0px;
  border: 0px;
  outline: 0px;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  line-height: inherit; }

ol,
ul,
.item-list ul,
.item-list ul li {
  list-style: none; }

blockquote,
q {
  quotes: none; }

blockquote:before,
blockquote:after,
q:before, q:after {
  content: '';
  content: none; }

/* remember to define focus styles! */
:focus {
  outline: 0px; }

/* remember to highlight inserts somehow! */
ins {
  text-decoration: none; }

del {
  text-decoration: line-through; }

/*! normalize-opentype.css v0.2.3 | MIT License | kennethormandy.com/journal/normalize-opentype-css */
/**
 * 1. Inherit style issues with custom selections, per robsterlini.co.uk/journal/opentype-and-selection-dont-mix
 * 2. Turn on kerning, standard ligatures, and proportional, oldstyle numerals
 *    Turn off all other ligatures, tabular, lining numerals, and alternates
 * 3. Hard-codes fallback text selection for issue #18, color is Chrome’s per via http://stackoverflow.com/a/16094931/864799
 */
::-moz-selection {
  color: inherit;
  /* 1. */
  text-shadow: inherit;
  /* 2. */
  background-color: #ACCEF7;
  /* 3. */ }

::selection {
  color: inherit;
  /* 1. */
  text-shadow: inherit;
  /* 2. */
  background-color: #ACCEF7;
  /* 3. */ }

html, body, table {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0;
  /* 2. */ }

/* Headings
========================================================================== */
/**
 * 1. Turn on discretionary ligatures for larger headings
 */
h1, h2, h3 {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 1;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 1;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 1;
  /* 1. */ }

/* Text-level semantics
========================================================================== */
/**
 * 1. Change all letters to uppercase
 * 2. Turn on small caps for upper and lowercase letters
 */
abbr {
  text-transform: uppercase;
  /* 1 */
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "smcp" 1, "c2sc" 1;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "smcp" 1, "c2sc" 1;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "smcp" 1, "c2sc" 1;
  /* 2 */ }

/*
 * TODO: Turn on diagonal fractions where appropriate
 */
time {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0; }

/*
 * 1. Turn off kerning and ligatures,
 *    Turn on lining, tabular numerals, slashed zero
 */
pre, kbd, samp, code {
  -webkit-font-feature-settings: "kern" 0, "liga" 0, "calt" 1, "dlig" 0, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 1;
  -moz-font-feature-settings: "kern" 0, "liga" 0, "calt" 1, "dlig" 0, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 1;
  font-feature-settings: "kern" 0, "liga" 0, "calt" 1, "dlig" 0, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 1;
  /* 1. */ }

/**
 * 1. Turn on proper supercript numerals
 */
sup {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "sups" 1;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "sups" 1;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "sups" 1;
  /* 1. */ }

/**
 * 1. Turn on proper subscript numerals
 */
sub {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "subs" 1;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "subs" 1;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 1, "lnum" 0, "dlig" 0, "subs" 1;
  /* 1. */ }

/* Grouping content
========================================================================== */
/**
 * TODO: Adds proper bullets
 */
/*
 * TODO:
 * 1. Adds counters for lists
 * 2. Use proper numerals for lists
 */
/**
 * Adds proper small caps
 */
/**
 * TODO: scmp, sc2c, pnum, case sensitive forms for postal codes
 */
/* Forms
========================================================================== */
/**
 * 1. Turns on lining, proportional numerals without clarified zeroes
 * TODO: Additional input modes https://developer.mozilla.org/en/docs/Web/HTML/Element/Input#attr-inputmode
 */
input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="number"], input[type="range"], input[type="tel"], input[type="week"] {
  -webkit-font-feature-settings: "kern" 0, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 0, "lnum" 1, "zero" 0;
  -moz-font-feature-settings: "kern" 0, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 0, "lnum" 1, "zero" 0;
  font-feature-settings: "kern" 0, "liga" 1, "calt" 1, "pnum" 1, "tnum" 0, "onum" 0, "lnum" 1, "zero" 0;
  /* 1. */ }

/* Localisation
========================================================================== */
/* Tables
========================================================================== */
/**
 * 1. Resets tables to the same settings as the body.
 * 2. Turns on tabular, lining numerals and slashed zero
 */
table {
  /* 1.*/ }

tbody, caption {
  -webkit-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 0;
  -moz-font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 0;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "pnum" 0, "tnum" 1, "onum" 0, "lnum" 1, "zero" 0;
  /* 2. */ }

@font-face {
  font-family: 'Platform';
  src: url("../graphics/fonts/Platform-Medium.woff"), url("../graphics/fonts/Platform-Medium.ttf");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'Simplon';
  src: url("../graphics/fonts/Simplon_BP_Medium_1.woff"), url("../graphics/fonts/Simplon_BP_Medium_1.ttf");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'Simplon-bold';
  src: url("../graphics/fonts/Simplon_BP_Bold_2.woff"), url("../graphics/fonts/Simplon_BP_Bold_2.ttf");
  font-weight: normal;
  font-style: normal; }

/*
// ICONS

// UI icon font: ds.o UI Icons
// Designed by Development Seed
*/
@font-face {
  font-family: "collecticons";
  src: url("../graphics/fonts/collecticons.eot");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: "collecticons";
  src: url("../graphics/fonts/collecticons.ttf");
  src: url("../graphics/fonts/collecticons.woff");
  font-weight: normal;
  font-style: normal; }

.collecticon, [class^="collecticon-"], [class*=" collecticon-"] {
  font-family: "collecticons";
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  vertical-align: bottom;
  /* Better Font Rendering */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.collecticon-arrow-down:before {
  content: "\EA01"; }

.collecticon-arrow-left:before {
  content: "\EA02"; }

.collecticon-arrow-loop:before {
  content: "\EA03"; }

.collecticon-arrow-return:before {
  content: "\EA04"; }

.collecticon-arrow-right:before {
  content: "\EA05"; }

.collecticon-arrow-spin-clockwise:before {
  content: "\EA06"; }

.collecticon-arrow-up:before {
  content: "\EA07"; }

.collecticon-bell:before {
  content: "\EA08"; }

.collecticon-book:before {
  content: "\EA09"; }

.collecticon-briefcase:before {
  content: "\EA0A"; }

.collecticon-calendar:before {
  content: "\EA0B"; }

.collecticon-camera:before {
  content: "\EA0C"; }

.collecticon-chart-line:before {
  content: "\EA0D"; }

.collecticon-chevron-down:before {
  content: "\EA0E"; }

.collecticon-chevron-left:before {
  content: "\EA0F"; }

.collecticon-chevron-right:before {
  content: "\EA10"; }

.collecticon-chevron-step-backward:before {
  content: "\EA11"; }

.collecticon-chevron-step-forward:before {
  content: "\EA12"; }

.collecticon-chevron-up:before {
  content: "\EA13"; }

.collecticon-circle-exclamation:before {
  content: "\EA14"; }

.collecticon-circle-information:before {
  content: "\EA15"; }

.collecticon-circle-play-next:before {
  content: "\EA16"; }

.collecticon-circle-play:before {
  content: "\EA17"; }

.collecticon-circle-question:before {
  content: "\EA18"; }

.collecticon-circle-stop:before {
  content: "\EA19"; }

.collecticon-circle-tick:before {
  content: "\EA1A"; }

.collecticon-circle-xmark:before {
  content: "\EA1B"; }

.collecticon-clipboard-list:before {
  content: "\EA1C"; }

.collecticon-clipboard-tick:before {
  content: "\EA1D"; }

.collecticon-clock-back:before {
  content: "\EA1E"; }

.collecticon-clock:before {
  content: "\EA1F"; }

.collecticon-cog:before {
  content: "\EA20"; }

.collecticon-collecticons:before {
  content: "\EA21"; }

.collecticon-compass:before {
  content: "\EA22"; }

.collecticon-crosshair-2:before {
  content: "\EA23"; }

.collecticon-crosshair:before {
  content: "\EA24"; }

.collecticon-devseed-inner:before {
  content: "\EA25"; }

.collecticon-devseed:before {
  content: "\EA26"; }

.collecticon-disc-dollar:before {
  content: "\EA27"; }

.collecticon-disc-xmark:before {
  content: "\EA28"; }

.collecticon-download:before {
  content: "\EA29"; }

.collecticon-drop:before {
  content: "\EA2A"; }

.collecticon-envelope:before {
  content: "\EA2B"; }

.collecticon-expand-down-left:before {
  content: "\EA2C"; }

.collecticon-expand-down-right:before {
  content: "\EA2D"; }

.collecticon-expand-top-left:before {
  content: "\EA2E"; }

.collecticon-expand-top-right:before {
  content: "\EA2F"; }

.collecticon-eye:before {
  content: "\EA30"; }

.collecticon-facebook:before {
  content: "\EA31"; }

.collecticon-factory:before {
  content: "\EA32"; }

.collecticon-flag:before {
  content: "\EA33"; }

.collecticon-flame:before {
  content: "\EA34"; }

.collecticon-flickr:before {
  content: "\EA35"; }

.collecticon-gauge:before {
  content: "\EA36"; }

.collecticon-github:before {
  content: "\EA37"; }

.collecticon-globe:before {
  content: "\EA38"; }

.collecticon-google-plus:before {
  content: "\EA39"; }

.collecticon-grid-3x3:before {
  content: "\EA3A"; }

.collecticon-hamburger-menu:before {
  content: "\EA3B"; }

.collecticon-heart-full:before {
  content: "\EA3C"; }

.collecticon-house:before {
  content: "\EA3D"; }

.collecticon-human-rights:before {
  content: "\EA3E"; }

.collecticon-id-editor:before {
  content: "\EA3F"; }

.collecticon-instagram:before {
  content: "\EA40"; }

.collecticon-lastfm:before {
  content: "\EA41"; }

.collecticon-leaf:before {
  content: "\EA42"; }

.collecticon-link:before {
  content: "\EA43"; }

.collecticon-linkedin:before {
  content: "\EA44"; }

.collecticon-list:before {
  content: "\EA45"; }

.collecticon-location:before {
  content: "\EA46"; }

.collecticon-lock-2:before {
  content: "\EA47"; }

.collecticon-lock-open:before {
  content: "\EA48"; }

.collecticon-lock:before {
  content: "\EA49"; }

.collecticon-magnifier-left:before {
  content: "\EA4A"; }

.collecticon-magnifier-right:before {
  content: "\EA4B"; }

.collecticon-map:before {
  content: "\EA4C"; }

.collecticon-marker:before {
  content: "\EA4D"; }

.collecticon-minus:before {
  content: "\EA4E"; }

.collecticon-mobile-phone:before {
  content: "\EA4F"; }

.collecticon-page-cog:before {
  content: "\EA50"; }

.collecticon-page-lock-open:before {
  content: "\EA51"; }

.collecticon-page-tick:before {
  content: "\EA52"; }

.collecticon-page:before {
  content: "\EA53"; }

.collecticon-pencil:before {
  content: "\EA54"; }

.collecticon-picture:before {
  content: "\EA55"; }

.collecticon-plus:before {
  content: "\EA56"; }

.collecticon-pop-down:before {
  content: "\EA57"; }

.collecticon-pop-up:before {
  content: "\EA58"; }

.collecticon-printer:before {
  content: "\EA59"; }

.collecticon-quote-left:before {
  content: "\EA5A"; }

.collecticon-quote-right:before {
  content: "\EA5B"; }

.collecticon-repo-fork:before {
  content: "\EA5C"; }

.collecticon-resize-in:before {
  content: "\EA5D"; }

.collecticon-resize-out:before {
  content: "\EA5E"; }

.collecticon-rock:before {
  content: "\EA5F"; }

.collecticon-rss-feed:before {
  content: "\EA60"; }

.collecticon-satellite:before {
  content: "\EA61"; }

.collecticon-share:before {
  content: "\EA62"; }

.collecticon-sign-danger:before {
  content: "\EA63"; }

.collecticon-skype:before {
  content: "\EA64"; }

.collecticon-sliders-horizontal:before {
  content: "\EA65"; }

.collecticon-sm-chevron-down:before {
  content: "\EA66"; }

.collecticon-sm-chevron-left:before {
  content: "\EA67"; }

.collecticon-sm-chevron-right:before {
  content: "\EA68"; }

.collecticon-sm-chevron-up:before {
  content: "\EA69"; }

.collecticon-sm-minus:before {
  content: "\EA6A"; }

.collecticon-sm-plus:before {
  content: "\EA6B"; }

.collecticon-sm-square:before {
  content: "\EA6C"; }

.collecticon-sm-tick:before {
  content: "\EA6D"; }

.collecticon-sm-triangle-down:before {
  content: "\EA6E"; }

.collecticon-sm-triangle-left:before {
  content: "\EA6F"; }

.collecticon-sm-triangle-right:before {
  content: "\EA70"; }

.collecticon-sm-triangle-up:before {
  content: "\EA71"; }

.collecticon-sm-xmark:before {
  content: "\EA72"; }

.collecticon-sort-asc:before {
  content: "\EA73"; }

.collecticon-sort-desc:before {
  content: "\EA74"; }

.collecticon-sort-none:before {
  content: "\EA75"; }

.collecticon-sort:before {
  content: "\EA76"; }

.collecticon-soundcloud:before {
  content: "\EA77"; }

.collecticon-spark:before {
  content: "\EA78"; }

.collecticon-star-full:before {
  content: "\EA79"; }

.collecticon-steam:before {
  content: "\EA7A"; }

.collecticon-tag:before {
  content: "\EA7B"; }

.collecticon-target:before {
  content: "\EA7C"; }

.collecticon-tick:before {
  content: "\EA7D"; }

.collecticon-trash-bin:before {
  content: "\EA7E"; }

.collecticon-triangle-down:before {
  content: "\EA7F"; }

.collecticon-triangle-left:before {
  content: "\EA80"; }

.collecticon-triangle-right:before {
  content: "\EA81"; }

.collecticon-triangle-up:before {
  content: "\EA82"; }

.collecticon-tumblr-reblog:before {
  content: "\EA83"; }

.collecticon-tumblr:before {
  content: "\EA84"; }

.collecticon-twitter:before {
  content: "\EA85"; }

.collecticon-ufo:before {
  content: "\EA86"; }

.collecticon-user-group:before {
  content: "\EA87"; }

.collecticon-user:before {
  content: "\EA88"; }

.collecticon-users:before {
  content: "\EA89"; }

.collecticon-xmark:before {
  content: "\EA8A"; }

.antialiased, body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.truncated {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.hidden {
  display: none !important;
  visibility: hidden; }

.visually-hidden {
  border: 0 none;
  clip: rect(0px, 0px, 0px, 0px);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }

.visually-hidden.focusable:active,
.visually-hidden.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto; }

.visually-hidden-undo {
  position: inherit;
  overflow: visible;
  height: auto;
  width: auto;
  margin: auto; }

.invisible {
  visibility: hidden; }

.clearfix:before, .row:before, .row-contained:before, .page--body > .inner:before, .page--footer > .inner:before, .right--nav_inline:before, .inverted:before, .clearfix:after, .row:after, .row-contained:after, .page--body > .inner:after, .page--footer > .inner:after, .right--nav_inline:after, .inverted:after {
  content: " ";
  display: table; }

.clearfix:after, .row:after, .row-contained:after, .page--body > .inner:after, .page--footer > .inner:after, .right--nav_inline:after, .inverted:after {
  clear: both; }

.disabled {
  opacity: 0.48;
  pointer-events: none;
  cursor: not-allowed; }

.debugged {
  background: red !important; }

@media only screen and (min-width: 1200px) {
  .contain, .data, .right--nav_inline, #index--viz_container {
    margin-left: 10%;
    margin-right: 10%; } }

@media only screen and (min-width: 1200px) {
  .contain-full {
    margin-left: 10%;
    margin-right: 10%;
    width: 80%; } }

.tooltip-element,
.tooltip-element:after,
.tooltip-element:before,
.tooltip-element *,
.tooltip-element *:after,
.tooltip-element *:before {
  box-sizing: border-box; }

.tooltip-element {
  position: absolute;
  display: none; }

.tooltip-element.tooltip-open {
  display: block; }

.tooltip-element.tooltip-theme-arrows {
  max-width: 100%;
  max-height: 100%; }

.tooltip-element.tooltip-theme-arrows .tooltip-content {
  position: relative;
  font-family: inherit;
  padding: 0.8em 1em 0.6em;
  text-align: center;
  line-height: 1.4em;
  background: #313131;
  color: #FFFAEF; }

.tooltip-element.tooltip-theme-arrows .tooltip-content:before {
  content: "";
  display: block;
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-width: 8px;
  border-style: solid; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-center .tooltip-content {
  margin-bottom: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-center .tooltip-content:before {
  top: 100%;
  left: 50%;
  margin-left: -8px;
  border-top-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-center .tooltip-content {
  margin-top: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-center .tooltip-content:before {
  bottom: 100%;
  left: 50%;
  margin-left: -8px;
  border-bottom-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-right.tooltip-element-attached-middle .tooltip-content {
  margin-right: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-right.tooltip-element-attached-middle .tooltip-content:before {
  left: 100%;
  top: 50%;
  margin-top: -8px;
  border-left-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-left.tooltip-element-attached-middle .tooltip-content {
  margin-left: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-left.tooltip-element-attached-middle .tooltip-content:before {
  right: 100%;
  top: 50%;
  margin-top: -8px;
  border-right-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-bottom .tooltip-content {
  margin-top: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-bottom .tooltip-content:before {
  bottom: 100%;
  left: 8px;
  border-bottom-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-bottom .tooltip-content {
  margin-top: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-bottom .tooltip-content:before {
  bottom: 100%;
  right: 8px;
  border-bottom-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-top .tooltip-content {
  margin-bottom: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-top .tooltip-content:before {
  top: 100%;
  left: 8px;
  border-top-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-top .tooltip-content {
  margin-bottom: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-top .tooltip-content:before {
  top: 100%;
  right: 8px;
  border-top-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content {
  margin-right: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content:before {
  top: 8px;
  left: 100%;
  border-left-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content {
  margin-left: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-top.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content:before {
  top: 8px;
  right: 100%;
  border-right-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content {
  margin-right: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-right.tooltip-target-attached-left .tooltip-content:before {
  bottom: 8px;
  left: 100%;
  border-left-color: #000; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content {
  margin-left: 8px; }

.tooltip-element.tooltip-theme-arrows.tooltip-element-attached-bottom.tooltip-element-attached-left.tooltip-target-attached-right .tooltip-content:before {
  bottom: 8px;
  right: 100%;
  border-right-color: #000; }

.tooltip-element.tooltip-theme-arrows {
  pointer-events: none; }

.tooltip-element.tooltip-theme-arrows .tooltip-content {
  padding: 0.5em 1em; }

h1, h2, h3, h4, h5, h6,
p, select, textarea, body {
  color: #313131;
  font-family: "Simplon", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-weight: 400;
  line-height: 1.625; }

html {
  width: 100%;
  overflow-x: hidden; }

body {
  background: #FFFAEF;
  width: 100%;
  overflow-x: hidden; }

#site-canvas {
  cursor: default; }
  #site-canvas p {
    cursor: text; }

h1 {
  font-size: 1.2em;
  line-height: 1.4em;
  font-family: "Platform", "Helvetica Neue", Helvetica, Arial, sans-serif; }
  @media only screen and (min-width: 768px) {
    h1 {
      font-size: 2em; } }

h2 {
  font-size: 1.25em; }
  @media only screen and (min-width: 992px) {
    h2 {
      font-size: 1.5em; } }

h3 {
  font-size: 1em; }
  @media only screen and (min-width: 992px) {
    h3 {
      font-size: 1.25em; } }

a,
a:link,
a:visited,
a:hover,
a:active {
  color: #4D9ECF;
  text-decoration: none;
  cursor: pointer; }

a:hover {
  text-decoration: underline; }

.lt-ie10 #site-canvas {
  display: none; }

.lt-ie10 #nocando {
  margin: 200px auto;
  padding: 32px;
  max-width: 440px;
  background: #fff; }
  .lt-ie10 #nocando h1 {
    font-size: 24px;
    line-height: 1.1;
    margin-bottom: 32px; }

.row, .row-contained, .page--body > .inner, .page--footer > .inner, .right--nav_inline {
  padding-left: 1rem;
  padding-right: 1rem; }
  @media only screen and (min-width: 544px) {
    .row, .row-contained, .page--body > .inner, .page--footer > .inner, .right--nav_inline {
      padding-left: 2rem;
      padding-right: 2rem; } }

.row-centered, .page--body > .inner {
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto; }

.row-contained {
  max-width: 860px; }

.data {
  margin-top: .5em;
  text-align: right; }

.outbound {
  margin-bottom: .725em;
  display: inline-block; }

.index--intro {
  line-height: 1.25em;
  padding: 1.5em 0 1em;
  background: #E5DCD2;
  color: #313131;
  line-height: 140%; }
  @media only screen and (min-width: 992px) {
    .index--intro {
      font-size: 1.25em; } }

.inverted {
  background: #E5DCD2;
  padding-top: 3em;
  padding-bottom: 2em; }

.spaced-row {
  margin-top: 1.5em;
  margin-bottom: 1em; }

.label {
  color: #575757;
  margin-bottom: .5em;
  font-style: italic; }

.blocklabel, .inlinelabel {
  color: #575757;
  text-transform: uppercase;
  font-size: .8em;
  line-height: 1em;
  margin-top: 1.5em;
  margin-bottom: .5em;
  display: block; }

.inlinelabel {
  display: inline-block;
  margin-left: .5em; }

.breadcrumbs {
  text-transform: uppercase;
  font-size: .9em;
  display: flex;
  align-items: flex-end; }
  .breadcrumbs .collecticon {
    color: #4D9ECF;
    line-height: 1.8em; }

.trigger {
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  -ms-user-select: none;
  user-select: none;
  cursor: pointer; }
  .trigger .js--collapse {
    display: none; }
  .trigger .js--expand {
    display: block; }
  .trigger.expanded .js--collapse {
    display: block; }
  .trigger.expanded .js--expand {
    display: none; }

.collapse--target {
  display: none; }

strong, b {
  font-family: "Simplon-bold", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-weight: normal;
  font-style: normal; }

.page {
  position: relative;
  padding-bottom: 4rem;
  margin: 0 1rem; }
  @media only screen and (min-width: 768px) {
    .page {
      margin: 0 2rem; } }
  .page > * {
    position: relative;
    z-index: 2; }

.page .prose {
  float: left;
  display: block;
  margin-right: 2.3576515979%;
  width: 100%; }
  .page .prose:last-child {
    margin-right: 0; }
  @media only screen and (min-width: 544px) {
    .page .prose {
      float: left;
      display: block;
      margin-right: 2.3576515979%;
      width: 82.9403914003%;
      margin-left: 8.5298042998%; }
      .page .prose:last-child {
        margin-right: 0; } }
  @media only screen and (min-width: 992px) {
    .page .prose {
      float: left;
      display: block;
      margin-right: 2.3576515979%;
      width: 65.8807828007%;
      margin-left: 17.0596085997%; }
      .page .prose:last-child {
        margin-right: 0; } }

.page--body {
  padding-top: 4rem;
  -webkit-animation: fade-in 0.8s ease 0s 1;
  -moz-animation: fade-in 0.8s ease 0s 1;
  animation: fade-in 0.8s ease 0s 1; }

.page--footer {
  margin-top: 3rem;
  padding-top: 3rem; }

.displaytext {
  max-width: 860px; }
  .displaytext ul,
  .displaytext ol,
  .displaytext h3,
  .displaytext p {
    line-height: 1.8em;
    margin-bottom: 1.4em;
    cursor: text; }
  .displaytext h3 {
    display: inline-block;
    margin-top: 2em;
    border-bottom: 0.125em solid #E5DCD2;
    text-transform: uppercase; }
  .displaytext li {
    margin-left: 2em;
    margin-bottom: .6em; }
  .displaytext ul li {
    list-style: initial; }
  .displaytext ol li {
    list-style: decimal; }
  .displaytext .js--collapse_trigger {
    display: block; }
  .displaytext img {
    width: 100%; }
    @media only screen and (min-width: 992px) {
      .displaytext img {
        width: auto; } }

blockquote {
  background: #E5DCD2;
  padding: 1em; }
  @media only screen and (min-width: 768px) {
    blockquote {
      padding: 2em; } }

button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0); }

.bttn {
  box-shadow: none;
  display: inline-block;
  font-family: "Simplon", "Helvetica Neue", Helvetica, Arial, sans-serif;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  border-radius: 0.5em;
  border: 0;
  background-image: none;
  text-transform: uppercase;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  line-height: 1.5rem;
  font-size: 1rem;
  padding: 0.25rem 0.75rem;
  min-height: 2rem;
  min-width: 2.5rem;
  -webkit-transition-property: background-color;
  -moz-transition-property: background-color;
  transition-property: background-color;
  -webkit-transition-duration: 0.2s;
  -moz-transition-duration: 0.2s;
  transition-duration: 0.2s;
  -webkit-transition-timing-function: ease;
  -moz-transition-timing-function: ease;
  transition-timing-function: ease;
  -webkit-transition-delay: 0;
  -moz-transition-delay: 0;
  transition-delay: 0; }
  .open > .bttn, .bttn:active, .bttn.active {
    outline: none;
    -webkit-transform: translate(0);
    -moz-transform: translate(0);
    -ms-transform: translate(0);
    -o-transform: translate(0);
    transform: translate(0); }
  .bttn:hover {
    opacity: 1; }
  .bttn.disabled, .bttn[disabled] {
    pointer-events: none;
    cursor: not-allowed;
    opacity: 0.6; }

.bttn-default,
.bttn-default:hover,
.bttn-default:visited {
  background-color: #E5DCD2;
  color: #313131; }
  .bttn-default:hover,
  .bttn-default:hover:hover,
  .bttn-default:visited:hover {
    background-color: #d3cac1; }
  .open > .bttn-default, .bttn-default.active, .bttn-default.active:hover, .bttn-default:active, .open >
  .bttn-default:hover,
  .bttn-default:hover.active,
  .bttn-default:hover.active:hover,
  .bttn-default:hover:active, .open >
  .bttn-default:visited,
  .bttn-default:visited.active,
  .bttn-default:visited.active:hover,
  .bttn-default:visited:active {
    background-color: #c0b9b0; }

.bttn-light,
.bttn-light:hover,
.bttn-light:visited {
  background-color: #FFFAEF;
  color: #838383; }
  .bttn-light:hover,
  .bttn-light:hover:hover,
  .bttn-light:visited:hover {
    background-color: #ebe6dc; }
  .open > .bttn-light, .bttn-light.active, .bttn-light.active:hover, .bttn-light:active, .open >
  .bttn-light:hover,
  .bttn-light:hover.active,
  .bttn-light:hover.active:hover,
  .bttn-light:hover:active, .open >
  .bttn-light:visited,
  .bttn-light:visited.active,
  .bttn-light:visited.active:hover,
  .bttn-light:visited:active {
    background-color: #d6d2c9; }

.bttn-success,
.bttn-success:hover,
.bttn-success:visited {
  background-color: #4D9ECF;
  color: #FFFAEF; }
  .bttn-success:hover,
  .bttn-success:hover:hover,
  .bttn-success:visited:hover {
    background-color: #4791be; }
  .open > .bttn-success, .bttn-success.active, .bttn-success.active:hover, .bttn-success:active, .open >
  .bttn-success:hover,
  .bttn-success:hover.active,
  .bttn-success:hover.active:hover,
  .bttn-success:hover:active, .open >
  .bttn-success:visited,
  .bttn-success:visited.active,
  .bttn-success:visited.active:hover,
  .bttn-success:visited:active {
    background-color: #4185ae; }

.bttn-dark,
.bttn-dark:hover,
.bttn-dark:visited {
  background-color: #838383;
  color: #FFFAEF; }
  .bttn-dark:hover,
  .bttn-dark:hover:hover,
  .bttn-dark:visited:hover {
    background-color: #797979; }
  .open > .bttn-dark, .bttn-dark.active, .bttn-dark.active:hover, .bttn-dark:active, .open >
  .bttn-dark:hover,
  .bttn-dark:hover.active,
  .bttn-dark:hover.active:hover,
  .bttn-dark:hover:active, .open >
  .bttn-dark:visited,
  .bttn-dark:visited.active,
  .bttn-dark:visited.active:hover,
  .bttn-dark:visited:active {
    background-color: #6e6e6e; }

.bttn-cta,
.bttn-cta:hover,
.bttn-cta:visited {
  background-color: #e4f2d2; }
  .bttn-cta:hover,
  .bttn-cta:hover:hover,
  .bttn-cta:visited:hover {
    background-color: #d2dfc1; }
  .open > .bttn-cta, .bttn-cta.active, .bttn-cta.active:hover, .bttn-cta:active, .open >
  .bttn-cta:hover,
  .bttn-cta:hover.active,
  .bttn-cta:hover.active:hover,
  .bttn-cta:hover:active, .open >
  .bttn-cta:visited,
  .bttn-cta:visited.active,
  .bttn-cta:visited.active:hover,
  .bttn-cta:visited:active {
    background-color: #c0cbb0; }

.bttn-s,
.bttn-group-s .bttn {
  line-height: 1.25rem;
  font-size: 0.875rem;
  padding: 0.125rem 0.5rem;
  min-height: 1.25rem; }

.bttn-m,
.bttn-group-m .bttn {
  line-height: 1.5rem;
  font-size: 1rem;
  padding: 0.25rem 0.75rem;
  min-height: 2rem; }

/* Large (40px) */
.bttn-l,
.bttn-group-l .bttn {
  line-height: 1.75rem;
  font-size: 1.25rem;
  padding: 0.425rem 1rem 0.175rem;
  min-height: 2.5rem; }

/* Extra-large (44px) */
.bttn-xl,
.bttn-group-xl .bttn {
  line-height: 1.75rem;
  font-size: 1.25rem;
  padding: 0.5rem 1.25rem;
  min-height: 2.75rem; }

.bttn-group {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  font-size: 0; }
  .bttn-group.bttn-list {
    list-style: none;
    margin: 0;
    padding: 0; }
    .bttn-group.bttn-list > li .bttn {
      display: block; }
  .bttn-group > *,
  .bttn-group > .bttn {
    position: relative;
    float: left;
    margin: 0; }
  .bttn-group > *:first-child:not(:last-child) .bttn,
  .bttn-group > .bttn:first-child:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0; }
  .bttn-group > *:last-child:not(:first-child) .bttn,
  .bttn-group > .bttn:last-child:not(:first-child) {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0; }
  .bttn-group > *:not(:first-child):not(:last-child) .bttn,
  .bttn-group > .bttn:not(:first-child):not(:last-child) {
    border-radius: 0; }
  .bttn-group > .bttn + .bttn,
  .bttn-group.bttn-list > li + li {
    margin-left: -1px; }

input[type="text"],
.search {
  font-family: "Simplon", "Helvetica Neue", Helvetica, Arial, sans-serif;
  -webkit-appearance: none;
  -moz-appearance: none;
  border-radius: 0;
  background-color: #FFFFFF;
  border-style: solid;
  border-width: 1px;
  border-color: #cccccc;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  color: rgba(0, 0, 0, 0.75);
  display: block;
  font-family: inherit;
  font-size: 0.77778rem;
  height: 2.05556rem;
  margin: 0;
  padding: 0.44444rem;
  width: 100%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-transition: border-color 0.15s linear, background 0.15s linear;
  -moz-transition: border-color 0.15s linear, background 0.15s linear;
  -ms-transition: border-color 0.15s linear, background 0.15s linear;
  -o-transition: border-color 0.15s linear, background 0.15s linear;
  transition: border-color 0.15s linear, background 0.15s linear; }

.banner {
  background: #4D9ECF;
  color: #FFFAEF;
  text-transform: uppercase;
  position: relative;
  z-index: 2;
  padding-top: 1em;
  padding-bottom: .8em; }

.nav--mobile a,
.nav--mobile a:link,
.nav--mobile a:hover,
.nav--mobile a:active,
.nav--mobile a:visited,
.banner a,
.banner a:link,
.banner a:hover,
.banner a:active,
.banner a:visited {
  color: #FFFAEF; }

.banner--internal {
  width: 100%;
  display: inline-flex;
  align-items: center; }

.logo {
  width: 32px;
  height: 32px; }
  @media only screen and (min-width: 768px) {
    .logo {
      width: 3em;
      height: 3em; } }

.rdr {
  margin-left: .75em;
  width: 180px; }
  @media only screen and (min-width: 768px) and (max-width: 991px) {
    .rdr {
      width: 320px; } }
  @media only screen and (min-width: 992px) {
    .rdr {
      width: 400px; } }

.nav {
  display: inline-flex;
  align-items: center;
  width: 100%;
  margin-left: 3.05em; }

.nav--item {
  margin: 0 .72em;
  display: inline-block;
  line-height: 1.2em; }

.nav--item_active > a {
  text-decoration: underline; }

.nav--gear_icon {
  width: 1.6em;
  height: 1.6em; }

/* Mobile menu */
.nav--mobile {
  background: #3185b8;
  width: 100%;
  display: none;
  padding: .5 1em .3; }
  .nav--mobile.active {
    display: block; }
  .nav--mobile .nav {
    padding: .5em; }

.nav--vertical {
  text-align: left;
  padding-bottom: 1em; }

.nav--item_vertical {
  line-height: 1.2em;
  padding-top: 1em;
  margin-left: 1em;
  margin-right: 1em; }
  .nav--item_vertical > a {
    display: inline-block; }
  .nav--item_vertical > .collecticon {
    float: right; }

.bttn--hamburger {
  margin: -4px 0 0 auto;
  position: relative;
  overflow: hidden;
  width: 36px;
  height: 30px;
  font-size: 0;
  text-indent: -9999px;
  border: none;
  cursor: pointer;
  transition: background 0.4s ease-out;
  background-color: transparent; }
  .bttn--hamburger ::focus {
    outline: none; }
  .bttn--hamburger span {
    display: block;
    position: absolute;
    top: 14px;
    left: 3px;
    right: 3px;
    height: 5px;
    background: #fefded;
    transition: background 0s 0.15s; }
  .bttn--hamburger ::before, .bttn--hamburger ::after {
    position: absolute;
    display: block;
    left: 0;
    width: 100%;
    height: 5px;
    background-color: #fefded;
    content: "";
    transition-duration: 0.15s, 0.15s;
    transition-delay: 0.15s, 0s; }
  .bttn--hamburger ::before {
    top: -10px;
    transition-property: top, transform; }
  .bttn--hamburger ::after {
    bottom: -10px;
    transition-property: bottom, transform; }
  @media only screen and (min-width: 768px) {
    .bttn--hamburger {
      display: none;
      visibility: hidden; } }

.bttn--hamburger.active span {
  background: none; }
  .bttn--hamburger.active span::before {
    top: 0;
    transform: rotate(45deg);
    transition-delay: 0s, 0.15s; }
  .bttn--hamburger.active span::after {
    bottom: 0;
    transform: rotate(-45deg);
    transition-delay: 0s, 0.15s; }

.right--nav {
  float: right;
  text-align: right;
  position: relative;
  padding-bottom: .5em;
  width: 200px; }
  @media only screen and (min-width: 768px) {
    .right--nav {
      width: 400px;
      padding-bottom: 0; } }

.next,
.subnav--links {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  flex-wrap: wrap;
  flex-direction: column; }
  @media only screen and (min-width: 768px) {
    .next,
    .subnav--links {
      flex-direction: row;
      align-items: center; } }

.subnav--dropdown {
  order: 1; }
  @media only screen and (min-width: 768px) {
    .subnav--dropdown {
      order: 0; } }

.subnav--search {
  order: 0; }
  @media only screen and (min-width: 768px) {
    .subnav--search {
      order: 1; } }

.right--nav_inline {
  margin-top: .5em;
  float: none;
  width: auto;
  text-align: right; }
  .right--nav_inline .subnav--links {
    flex-direction: row;
    align-items: center; }
  .right--nav_inline .subnav--dropdown {
    order: 0; }
  .right--nav_inline .subnav--search {
    order: 1; }

.next--item,
.subnav--item {
  position: relative;
  cursor: pointer;
  padding: .4em;
  line-height: 1em; }
  .next--item .collecticon,
  .subnav--item .collecticon {
    font-size: .9em; }

.next--item {
  display: inline-flex;
  align-items: baseline; }
  .next--item .collecticon {
    color: #4D9ECF; }
  @media only screen and (min-width: 768px) {
    .next--item {
      float: right; }
      .next--item:first-child {
        float: left; } }

.tt-menu {
  background: #F5F5F5;
  position: absolute;
  top: 95%;
  left: 2.5%;
  z-index: 100;
  width: 100%;
  margin-bottom: 20px;
  overflow: hidden; }

.tt-suggestion {
  margin: 0;
  font-size: 14px;
  line-height: 1em;
  padding: 1em 1.25em;
  text-shadow: #FFF;
  border-bottom: 1px solid #ddd;
  border-top: 1px solid #fff;
  display: block; }

.footer {
  background: #E5DCD2;
  padding-top: 1.25em;
  padding-bottom: 1em;
  margin-top: 2em; }

@media only screen and (min-width: 768px) {
  .footer--links {
    display: flex;
    align-items: center;
    justify-content: center; } }

.footer--link {
  padding: .5em;
  display: flex;
  align-items: center; }
  @media only screen and (min-width: 768px) {
    .footer--link {
      display: inline-flex;
      margin-left: .75em;
      margin-right: .75em; } }
  .footer--link .collecticon {
    margin-right: .25em;
    color: #4D9ECF; }

.commons {
  width: 100px;
  display: inline-block; }
  .commons > img {
    width: 100%; }

.table {
  width: 100%;
  border-collapse: collapse;
  empty-cells: show; }
  .table th,
  .table td {
    text-align: center; }
  .table thead tr th:first-child,
  .table tbody tr td:first-child {
    text-align: left;
    padding-left: 1em;
    padding-right: 1em; }
  .table th,
  .table td {
    padding-top: 1.5em;
    padding-bottom: .1em;
    vertical-align: middle; }
  .table th {
    font-weight: normal;
    padding-bottom: .5em;
    font-size: .8em;
    line-height: 1em;
    text-transform: uppercase;
    vertical-align: bottom; }
  .table thead {
    border-bottom: 1px solid #E5DCD2; }
  .table .col_0 {
    background: #E5DCD2; }
  .table .thead--end .col_0 {
    border-bottom: 1px solid #FFFAEF; }

.table--service_label {
  display: block;
  color: #575757;
  margin-bottom: .3em; }

.table--scores {
  line-height: 1.4em;
  table-layout: fixed; }
  .table--scores thead tr th:first-child,
  .table--scores tbody tr td:first-child {
    width: 250px; }
  @media only screen and (min-width: 992px) {
    .table--scores thead tr th:first-child,
    .table--scores tbody tr td:first-child {
      width: 300px; } }

.table--span_3 thead tr th:first-child,
.table--span_3 tbody tr td:first-child, .table--span_4 thead tr th:first-child,
.table--span_4 tbody tr td:first-child {
  width: 350px; }

@media only screen and (min-width: 992px) {
  .table--span_3 thead tr th:first-child,
  .table--span_3 tbody tr td:first-child, .table--span_4 thead tr th:first-child,
  .table--span_4 tbody tr td:first-child {
    width: 400px; } }

.table--span_1 thead tr th:first-child,
.table--span_1 tbody tr td:first-child, .table--span_2 thead tr th:first-child,
.table--span_2 tbody tr td:first-child {
  width: 500px; }

.table--footer td:first-child {
  text-transform: uppercase; }

.dropdown--trigger, .dropdown--trigger_mobile {
  position: relative;
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  -ms-user-select: none;
  user-select: none;
  cursor: pointer; }

.dropdown--trigger_mobile .collecticon {
  color: #FFFAEF;
  margin-bottom: 2px; }

.dropdown--trigger_mobile .collecticon-sm-triangle-up {
  display: none; }

.dropdown--trigger_mobile .collecticon-sm-triangle-down {
  display: inline-block; }

.dropdown--trigger_mobile.expanded .collecticon-sm-triangle-up {
  display: inline-block; }

.dropdown--trigger_mobile.expanded .collecticon-sm-triangle-down {
  display: none; }

.dropdown--trigger_mobile:hover a {
  text-decoration: none; }

.dropdown {
  width: 200px;
  background: #F5F5F5;
  z-index: 0;
  visibility: hidden;
  position: absolute; }

.dropdown--mobile {
  width: 100%;
  background: #F5F5F5;
  position: relative;
  visibility: visible;
  display: none;
  margin-top: .5em; }
  .dropdown--mobile a,
  .dropdown--mobile a:link,
  .dropdown--mobile a:hover,
  .dropdown--mobile a:active,
  .dropdown--mobile a:visited {
    color: #4D9ECF; }
    .dropdown--mobile a:hover,
    .dropdown--mobile a:link:hover,
    .dropdown--mobile a:hover:hover,
    .dropdown--mobile a:active:hover,
    .dropdown--mobile a:visited:hover {
      text-decoration: underline; }

.dropdown--item {
  list-style: none;
  margin: 0;
  font-size: 14px;
  line-height: 1em;
  padding: 1em 1.25em;
  text-shadow: #FFF;
  border-bottom: 1px solid #ddd;
  border-top: 1px solid #fff;
  display: block; }
  .dropdown--item a {
    color: #313131;
    display: block; }

.dropdown--category {
  border-top: none;
  border-bottom: none; }
  .dropdown--category:first-child {
    border-top: 1px solid #fff; }
  .dropdown--category:last-child {
    border-bottom: 1px solid #ddd; }

.dropdown--category_child {
  margin-left: .75em;
  position: relative; }

.dropdown--reverse {
  text-align: right;
  width: 180px; }
  .dropdown--reverse .dropdown--category_child {
    margin-left: 0;
    margin-right: .75em; }

#category--internet,
#category--telco {
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  -ms-user-select: none;
  user-select: none; }

.vis--row {
  width: 100%;
  display: inline-flex;
  align-items: center;
  padding-top: .25em;
  padding-bottom: 0;
  line-height: 1.4em;
  cursor: default; }

.vis--row_title {
  width: 25%;
  text-align: left; }
  @media only screen and (min-width: 768px) {
    .vis--row_title {
      width: 15%; } }

.vis--category_score {
  width: 15%;
  font-family: "Simplon", "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #313131;
  text-align: center; }
  @media only screen and (min-width: 768px) {
    .vis--category_score {
      width: 8%; } }

.vis--type {
  text-transform: uppercase;
  color: #b1b0b0; }

.vis--header {
  border-bottom: 0.1em solid #e4e3e3;
  font-size: .75em;
  margin-top: 1em;
  align-items: flex-end; }

#category--internet .vis--header {
  margin-top: 0; }

.vis--header_item {
  line-height: 1em;
  font-size: 1em;
  background: transparent;
  color: #313131;
  text-transform: uppercase;
  font-family: "Simplon", "Helvetica Neue", Helvetica, Arial, sans-serif;
  padding-top: .5em;
  padding-bottom: .5em;
  overflow: hidden; }
  .vis--header_item > a {
    color: #313131;
    text-decoration: none;
    transition: color .2s ease-out;
    display: block; }
    .vis--header_item > a:hover {
      color: #4D9ECF; }

.sort > .collecticon {
  margin-left: .25em; }

.sort-asc > .collecticon:before {
  content: "\EA73"; }

.sort-desc > .collecticon:before {
  content: "\EA74"; }

.sort-none > .collecticon:before {
  content: "\EA75"; }

.sort-sort > .collecticon:before {
  content: "\EA76"; }

.vis--header_score {
  width: 15%;
  text-align: center; }
  @media only screen and (min-width: 768px) {
    .vis--header_score {
      width: 8%; } }

.vis--row_bars {
  width: 60%;
  display: inline-flex;
  align-items: flex-end;
  justify-content: space-between; }
  @media only screen and (min-width: 768px) {
    .vis--row_bars {
      width: 77%; } }

.vis--row_bar {
  width: 100%;
  text-align: center; }
  @media only screen and (min-width: 768px) {
    .vis--row_bar {
      width: 22%; } }

.bar--count_1,
.bar--count_2,
.bar--count_3 {
  display: none; }
  @media only screen and (min-width: 768px) {
    .bar--count_1,
    .bar--count_2,
    .bar--count_3 {
      display: block; } }

.vis--horiz_bar_container {
  position: relative;
  height: 1.5em;
  background: #E5DCD2;
  overflow: hidden;
  transition: background .2s ease-in; }

.vis--horiz_bar {
  position: absolute;
  left: 0;
  top: 0;
  height: 1.5em;
  display: block;
  background: black; }

.vis--bar_total {
  background: #457CA4;
  transition: background .2s ease-in; }

.vis--bar_commitment {
  background: #57A8D5;
  transition: background .2s ease-in; }

.vis--bar_freedom {
  background: #21BCB3;
  transition: background .2s ease-in; }

.vis--bar_privacy {
  background: #238E88;
  transition: background .2s ease-in; }

.vis--horiz_bar_container:hover {
  background: #dfd4c8; }
  .vis--horiz_bar_container:hover .vis--bar_total {
    background: #27465c; }
  .vis--horiz_bar_container:hover .vis--bar_commitment {
    background: #28749e; }
  .vis--horiz_bar_container:hover .vis--bar_freedom {
    background: #126560; }
  .vis--horiz_bar_container:hover .vis--bar_privacy {
    background: #0f3c3a; }

.comp--title {
  margin-top: .4em;
  margin-bottom: .325em;
  text-transform: uppercase;
  color: #313131;
  display: flex;
  align-items: center; }
  .comp--title .score--tier {
    font-size: .8em;
    margin-left: .5em;
    padding: .15em .4em .1em; }

.comp--company_link {
  display: inline-block; }

.comp--type {
  margin-left: 1em;
  padding: 0.5em 0.5725em 0.4em;
  background: #E5DCD2;
  display: none; }
  @media only screen and (min-width: 992px) {
    .comp--type {
      display: inline-block; } }

.comp--sub_website {
  color: #4D9ECF; }

@media only screen and (min-width: 768px) {
  .comp--about {
    float: left;
    display: block;
    margin-right: 2.3576515979%;
    width: 40.2913699012%; }
    .comp--about:last-child {
      margin-right: 0; } }

.about--subsection {
  margin-top: 1em; }
  @media only screen and (min-width: 768px) {
    .about--subsection {
      margin-top: 2em; } }
  .about--subsection ul {
    list-style: initial; }
    .about--subsection ul li {
      margin-left: 1em; }

.comp--stat {
  margin-top: 1.5em;
  line-height: 1em; }

.stat--key {
  text-transform: uppercase;
  font-size: .75em;
  color: #646464;
  display: block; }

@media only screen and (min-width: 768px) {
  .comp--dot_chart {
    float: left;
    display: block;
    margin-right: 2.3576515979%;
    width: 57.3509785009%; }
    .comp--dot_chart:last-child {
      margin-right: 0; } }

.comp--analysis h3 {
  padding-top: .5em;
  padding-bottom: .3em;
  border-bottom: 1px solid #E5DCD2;
  margin-bottom: 1em;
  position: relative;
  cursor: pointer;
  transition: border-color .2s ease-out;
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
  -ms-user-select: none;
  user-select: none; }
  .comp--analysis h3:hover {
    border-bottom: 1px solid #575757; }
  .comp--analysis h3:after {
    content: 'Show ▼';
    position: absolute;
    right: 1em; }
  .comp--analysis h3.expanded {
    border-bottom: 1px solid #575757; }
    .comp--analysis h3.expanded:after {
      content: 'Hide ▲'; }

.comp--analysis p {
  display: none; }

.survey-row {
  position: relative;
  padding-top: 1em;
  padding-bottom: 1em; }
  .survey-row:first-child {
    padding-top: 0; }

.survey--question_hed {
  margin-top: 1.25em; }

.survey--score {
  display: flex; }

.survey--inline {
  margin-top: .5em; }
  @media only screen and (min-width: 768px) {
    .survey--inline {
      margin-left: 1.5em; } }

.survey--inline_name {
  font-size: .9em;
  text-transform: uppercase; }

.survey--item_title {
  margin-top: .5em;
  margin-bottom: .3em; }

.score--tier {
  padding: .5em .75em .4em; }

.score {
  display: flex;
  align-items: center;
  margin-bottom: .5em; }
  .score .score--tier {
    margin-left: .7em;
    padding: .15em .4em .1em;
    font-size: .9em; }

.score--tier {
  min-width: 52px;
  text-align: center;
  display: inline-block; }
  @media only screen and (min-width: 992px) {
    .score--tier {
      min-width: 52px; } }

.score--tier_3 {
  background: #77bc1f; }

.score--tier_2 {
  background: #b1b0b0; }

.score--tier_1 {
  background: #9B2523;
  color: #FFFAEF; }

.score--tier_0 {
  background: #9B2523;
  color: #FFFAEF; }

.score__tier_na {
  background: #575757; }

.score--tier_t {
  background: #457CA4;
  color: #FFFAEF; }

.score--tier_c {
  background: #57A8D5; }

.score--tier_p {
  background: #238E88; }

.score--tier_f {
  background: #21BCB3; }

@media only screen and (min-width: 768px) {
  .level {
    margin-left: 1em; } }

.label--insufficient {
  text-align: center;
  text-transform: uppercase;
  padding-top: 1em;
  padding-bottom: 1em; }

.indicator--sub_text {
  line-height: 1.8em; }

.indicator--choices,
.indicator--sub_choices {
  margin-top: 1em;
  list-style: initial; }
  .indicator--choices li,
  .indicator--sub_choices li {
    margin-left: 1em; }
    @media only screen and (min-width: 992px) {
      .indicator--choices li,
      .indicator--sub_choices li {
        margin-left: 2em; } }

.circle--charts_container {
  width: 100%; }
  @media only screen and (min-width: 768px) {
    .circle--charts_container {
      display: inline-flex;
      align-items: flex-start;
      justify-content: space-between; } }

.circle--chart {
  text-align: center;
  width: 100%;
  margin-bottom: 2em; }
  @media only screen and (min-width: 768px) {
    .circle--chart {
      width: 33%;
      margin-bottom: 0; } }

.circle--label_val,
.circle--label_name {
  cursor: default; }
  @media only screen and (min-width: 992px) {
    .circle--label_val,
    .circle--label_name {
      font-size: 1.2em; } }

.circle--label_name {
  cursor: pointer;
  fill: #4D9ECF; }
  .circle--label_name:hover {
    text-decoration: underline; }

.circle--arc_remainder {
  fill: #E5DCD2; }

.circle--arc_commitment {
  fill: #57A8D5; }

.circle--arc_freedom {
  fill: #21BCB3; }

.circle--arc_privacy {
  fill: #238E88; }

.dotchart {
  position: relative;
  overflow: visible;
  margin: 0 0 3em;
  height: 5em; }
  @media only screen and (min-width: 768px) {
    .dotchart {
      margin: 0 1em 3em; } }

.dotchart--label {
  position: absolute;
  top: 2.95em;
  font-size: 1em;
  color: #575757; }

.dotchart--label_left {
  left: 0; }

.dotchart--label_right {
  right: 0; }

.dotchart--label_highlight {
  top: 0.05em;
  margin-left: -0.5em; }

.dotchart--baseline {
  position: absolute;
  width: 100%;
  height: 0px;
  left: 0;
  top: 2.45em;
  border-bottom: 2px solid #b1b0b0; }

.dot {
  display: inline-block;
  position: absolute;
  width: 0.9em;
  height: 0.9em;
  top: 2.05em;
  margin-left: -0.45em;
  border-width: 1px;
  border-style: solid;
  border-radius: 50%;
  cursor: pointer;
  transition: background .4s ease-out, border-color .4s ease-out;
  background-color: #575757;
  border-color: #e4e3e3; }
  .dot:hover {
    background-color: #4a4a4a; }

.dotchart--total .highlight {
  background-color: #457CA4; }
  .dotchart--total .highlight:hover {
    background-color: #3b698b; }

.dotchart--privacy .highlight {
  background-color: #238E88; }
  .dotchart--privacy .highlight:hover {
    background-color: #1e7974; }

.dotchart--commitment .highlight {
  background-color: #57A8D5; }
  .dotchart--commitment .highlight:hover {
    background-color: #4a8fb5; }

.dotchart--freedom .highlight {
  background-color: #21BCB3; }
  .dotchart--freedom .highlight:hover {
    background-color: #1ca098; }

.dotchart .highlight {
  border-color: #e4e3e3; }

.dot.highlight {
  width: 1.2em;
  height: 1.2em;
  top: 1.9em;
  margin-left: -0.6em; }

.dotchart--tooltip {
  position: absolute;
  text-align: center;
  padding: .8em 1em .6em;
  background-color: #313131;
  color: #FFFAEF;
  bottom: 4.05em;
  opacity: 0;
  transition: bottom .2s ease-out, opacity .2s ease-out; }
  .dotchart--tooltip.active {
    opacity: 1;
    bottom: 4.55em; }

.bar--axis_y path,
.bar--axis_y line,
.bar--axis_x path,
.bar--axis_x line {
  fill: none;
  shape-rendering: crispEdges;
  stroke: #b1b0b0; }

.bar--default {
  fill: #457CA4; }

.bar--commitment {
  fill: #57A8D5; }

.bar--freedom {
  fill: #21BCB3; }

.bar--privacy {
  fill: #238E88; }

.bar--zero {
  fill: #9B2523; }

.bar--tip {
  padding: 0.8em 1em 0.6em;
  text-align: center;
  line-height: 1.4em;
  background: #313131;
  color: #FFFAEF;
  transition: opacity .2s ease-out; }

.bar--tip:after {
  box-sizing: border-box;
  display: inline;
  font-size: 1em;
  width: 100%;
  line-height: 1;
  color: #313131;
  content: "\25BC";
  position: absolute;
  text-align: center; }

.bar--tip.n:after {
  margin: -1px 0 0 0;
  top: 100%;
  left: 0; }

.bar--axis_y {
  font-size: .8em;
  fill: #313131; }

.bar--axis_x text {
  font-size: .8em;
  cursor: pointer;
  fill: #4D9ECF; }
  .bar--axis_x text:hover {
    text-decoration: underline; }

.small-only {
  display: block; }
  @media only screen and (min-width: 768px) {
    .small-only {
      display: none; } }

.medium-only {
  display: none; }
  @media only screen and (min-width: 768px) and (max-width: 991px) {
    .medium-only {
      display: block; } }

.medium-up {
  display: none; }
  @media only screen and (min-width: 768px) {
    .medium-up {
      display: block; } }

.medium-down {
  display: block; }
  @media only screen and (min-width: 992px) {
    .medium-down {
      display: none; } }

.large-up {
  display: none; }
  @media only screen and (min-width: 992px) {
    .large-up {
      display: block; } }

@page {
  margin: 1cm 1.5cm; }

@media print {
  * {
    color: #4D9ECF; }
  a, a:visited {
    color: #4D9ECF; }
  .no-print, .page--footer {
    display: none; }
  .page-body {
    padding-top: 1rem; }
  .modal.destroyed {
    position: static;
    display: block;
    opacity: 1; }
    .modal.destroyed .modal-content {
      width: 90%;
      margin: 2rem 0 0 0;
      padding: 0; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzIjpbIm1haW4uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2RlcHJlY2F0aW9uLXdhcm5pbmdzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19wcmVmaXhlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2Fzc2V0LXBpcGVsaW5lLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL19ib3VyYm9uLWRlcHJlY2F0ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW5zLWZhbHN5LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1udW1iZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX21vZHVsYXItc2NhbGUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2FuaW1hdGlvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYmFja2dyb3VuZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19jYWxjLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fZmlsdGVyLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9faGlkcGktbWVkaWEtcXVlcnkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9faHlwaGVucy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19wbGFjZWhvbGRlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19ib3JkZXItc3R5bGUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19idXR0b25zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fY2xlYXJmaXguc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9faGlkZS10ZXh0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19zaXplLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdHJpYW5nbGUuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL193b3JkLXdyYXAuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL19uZWF0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQtaGVscGVycy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHJpdmF0ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fbmV3LWJyZWFrcG9pbnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL192aXN1YWwtZ3JpZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19kaXNhYmxlLXdhcm5pbmdzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcHJpdmF0ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX2JveC1zaXppbmcuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19vbWVnYS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX291dGVyLWNvbnRhaW5lci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3NwYW4tY29sdW1ucy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3Jvdy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3NoaWZ0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcGFkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fZmlsbC1wYXJlbnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19tZWRpYS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3RvLWRlcHJlY2F0ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3Zpc3VhbC1ncmlkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fZGlzcGxheS1jb250ZXh0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fZGlyZWN0aW9uLWNvbnRleHQuc2NzcyIsIl9ub3JtYWxpemUuc2NzcyIsIl9yZXNldC5zY3NzIiwiX25vcm1hbGl6ZS1vcGVudHlwZS5zY3NzIiwiX2ZvbnRzLnNjc3MiLCJfdmFyaWFibGVzLnNjc3MiLCJfZnVuY3Rpb25zLnNjc3MiLCJfbWl4aW5zLnNjc3MiLCJfaWNvbnMuc2NzcyIsIl9oZWxwZXJzLnNjc3MiLCJfdGV0aGVyLXRvb2x0aXAuc2NzcyIsIl9iYXNlLnNjc3MiLCJfcGFnZS5zY3NzIiwiX2J1dHRvbi5zY3NzIiwiX2Jhbm5lci1uYXYuc2NzcyIsIl9zdWJuYXYuc2NzcyIsIl9mb290ZXIuc2NzcyIsIl90YWJsZS5zY3NzIiwiX2Ryb3Bkb3duLnNjc3MiLCJfaG9yaXpvbnRhbC1iYXItY2hhcnQuc2NzcyIsIl9jb21wYW55LnNjc3MiLCJfc3VydmV5LnNjc3MiLCJfaW5kaWNhdG9yLnNjc3MiLCJfY2lyY2xlLWNoYXJ0LnNjc3MiLCJfZG90LWNoYXJ0LnNjc3MiLCJfYmFyLWNoYXJ0LnNjc3MiLCJfcHJpbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdXBwcmVzcyBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgYm91cmJvbi01LlxuJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gQ2hhcnNldFxuQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyBMaWJzXG5AaW1wb3J0IFwiYm91cmJvblwiO1xuQGltcG9ydCBcIm5lYXRcIjtcblxuLy8gUmVzZXQgYW5kIG5vcm1hbGl6ZVxuQGltcG9ydCBcIm5vcm1hbGl6ZVwiO1xuQGltcG9ydCBcInJlc2V0XCI7XG5AaW1wb3J0IFwibm9ybWFsaXplLW9wZW50eXBlXCI7XG5cbi8vIFZhcmlhYmxlcywgZm9udHMsIGZ1bmN0aW9ucywgaGVscGVyc1xuQGltcG9ydCBcImZvbnRzXCI7XG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5AaW1wb3J0IFwiaWNvbnNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzXCI7XG5AaW1wb3J0IFwidGV0aGVyLXRvb2x0aXBcIjtcblxuLy8gQmFzZSBzdHVmZlxuQGltcG9ydCBcImJhc2VcIjtcbkBpbXBvcnQgXCJwYWdlXCI7XG5AaW1wb3J0IFwiYnV0dG9uXCI7XG5AaW1wb3J0IFwiYmFubmVyLW5hdlwiO1xuQGltcG9ydCBcInN1Ym5hdlwiO1xuQGltcG9ydCBcImZvb3RlclwiO1xuQGltcG9ydCBcInRhYmxlXCI7XG5AaW1wb3J0IFwiZHJvcGRvd25cIjtcblxuLy8gQ2hhcnRzXG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1iYXItY2hhcnRcIjtcbkBpbXBvcnQgXCJjb21wYW55XCI7XG5AaW1wb3J0IFwic3VydmV5XCI7XG5AaW1wb3J0IFwiaW5kaWNhdG9yXCI7XG5AaW1wb3J0IFwiY2lyY2xlLWNoYXJ0XCI7XG5AaW1wb3J0IFwiZG90LWNoYXJ0XCI7XG5AaW1wb3J0IFwiYmFyLWNoYXJ0XCI7XG5cbi8vIFByaW50XG5AaW1wb3J0IFwicHJpbnRcIjtcbiIsIi8vIEJvdXJib24gNC4zLjRcbi8vIGh0dHA6Ly9ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE3IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJzZXR0aW5ncy9kZXByZWNhdGlvbi13YXJuaW5nc1wiO1xuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xuXG5AaW1wb3J0IFwiYm91cmJvbi1kZXByZWNhdGVcIjtcblxuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxlbmd0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1saWdodFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtc2l6ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1lbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdW5wYWNrXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcblxuQGltcG9ydCBcImhlbHBlcnMvY29udmVydC11bml0c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9mb250LXNvdXJjZS1kZWNsYXJhdGlvblwiO1xuQGltcG9ydCBcImhlbHBlcnMvZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvc2hhcGUtc2l6ZS1zdHJpcHBlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xuXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvY2FsY1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4LWJveFwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJjc3MzL2hpZHBpLW1lZGlhLXF1ZXJ5XCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvc2VsZWN0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LWRlY29yYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvdXNlci1zZWxlY3RcIjtcblxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItY29sb3JcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXdpZHRoXCI7XG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZm9udC1zdGFja3NcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XG5AaW1wb3J0IFwiYWRkb25zL21hcmdpblwiO1xuQGltcG9ydCBcImFkZG9ucy9wYWRkaW5nXCI7XG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwiYWRkb25zL3JldGluYS1pbWFnZVwiO1xuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RleHQtaW5wdXRzXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RpbWluZy1mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvd29yZC13cmFwXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEVuYWJsZSBvciBkaXNhYmxlIG91dHB1dCBvZiBCb3VyYm9u4oCZcyBkZXByZWNhdGlvbi1yZWxhdGVkIFNhc3Mgd2FybmluZ3MuXG4vLy8gVGhpcyB2YXJpYWJsZSBtdXN0IGJlIGRlY2xhcmVkIF9iZWZvcmVfIGltcG9ydGluZyBCb3VyYm9uLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHbG9iYWwgdmFyaWFibGVzIHRvIGVuYWJsZSBvciBkaXNhYmxlIHZlbmRvciBwcmVmaXhlc1xuXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7XG4iLCIkZW0tYmFzZTogMTZweCAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgZ2xvYmFsIHNldHRpbmcgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGAkYXNzZXQtcGlwZWxpbmVgIHZhcmlhYmxlIGZvciBhbGwgZnVuY3Rpb25zIHRoYXQgYWNjZXB0IGl0LlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kYXNzZXQtcGlwZWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVGhyb3dzIFNhc3Mgd2FybmluZ3MgdG8gYW5ub3VuY2UgbGlicmFyeSBkZXByZWNhdGlvbnMuIFlvdSBjYW4gZGlzYWJsZSB0aGVtXG4vLy8gYnkgc2V0dGluZyB0aGUgYCRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nc2AgdmFyaWFibGUgdG8gYGZhbHNlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AbWl4aW4gX2JvdXJib24tZGVwcmVjYXRlKCRmZWF0dXJlLCAkbWVzc2FnZTogbnVsbCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYCN7JGZlYXR1cmV9YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICAgIFwicmVtb3ZlZCBpbiA1LjAuMC4gI3skbWVzc2FnZX1cIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoJGZlYXR1cmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlKCRmZWF0dXJlLCBcIldlIHN1Z2dlc3QgdXNpbmcgYW4gYXV0b21hdGVkIFwiICtcbiAgICBcInByZWZpeGluZyB0b29sLCBsaWtlIEF1dG9wcmVmaXhlci5cIik7XG59XG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgYXNzaWduLWlucHV0c2AgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJGxpc3Q6ICgpO1xuXG4gIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcbi8vLyAgIEEgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIGZvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgY29udGFpbnMoJGxpc3QsICR2YWx1ZSlcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGNvbnRhaW5zYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmIHR5cGUtb2YoaW5kZXgoJGxpc3QsICR2YWx1ZSkpICE9IFwibnVtYmVyXCIge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGRvZXMgbm90IGNvbnRhaW5zIGEgdmFsdWUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMtZmFsc3koJGxpc3QpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBjb250YWlucy1mYWxzeWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBub3QgJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcblxuQGZ1bmN0aW9uIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBpcy1sZW5ndGhgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpICE9IFwibnVsbFwiIGFuZCAoc3RyLXNsaWNlKCR2YWx1ZSArIFwiXCIsIDEsIDQpID09IFwiY2FsY1wiXG4gICAgICAgb3IgaW5kZXgoYXV0byBpbmhlcml0IGluaXRpYWwgMCwgJHZhbHVlKVxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY29sb3IgaXMgbGlnaHQgb3IgZGFyay5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yIChIZXgpfSAkY29sb3Jcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgaXMtbGlnaHQoJGNvbG9yKVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBpcy1saWdodGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ncmVlbjogZ3JlZW4ocmdiYSgkaGV4LWNvbG9yLCAxKSk7XG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1saWdodG5lc3M6ICgkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjIpIC8gMjU1O1xuXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuXG5AZnVuY3Rpb24gaXMtbnVtYmVyKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLW51bWJlcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQHJldHVybiBjb250YWlucyhcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIiAwIDEgMiAzIDQgNSA2IDcgOCA5LCAkdmFsdWUpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBzaXplLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG5cbkBmdW5jdGlvbiBpcy1zaXplKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLXNpemVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gaXMtbGVuZ3RoKCR2YWx1ZSlcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGVtYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuICBAaWYgbm90IHVuaXRsZXNzKCRiYXNlKSB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIHJlbXNcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxuXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHJlbWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XG4gIH1cblxuICAkYmFzZTogJGVtLWJhc2U7XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgJGRpbWVuc2lvbjogMTA7XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXIgKFVuaXRsZXNzKX1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHN0cmlwLXVuaXRzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAgYW5kIHJlcGxhY2VkIGJ5IHRoZSBgc3RyaXAtdW5pdGAgZnVuY3Rpb24uXCI7XG4gIH1cblxuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiB3aGl0ZSB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNhOGRmYzk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcbi8vIEV4YW1wbGU6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoKHRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmQpLCBtb3opIC0+IC1tb3otdHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXNgIGlzIGRlcHJlY2F0ZWQgXCIgK1xuICAgIFwiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gICRuZXctcHJvcHM6ICgpO1xuXG4gIEBlYWNoICRwcm9wIGluICRwcm9wcyB7XG4gICAgJG5ldy1wcm9wczogYXBwZW5kKCRuZXctcHJvcHMsIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvciksIGNvbW1hKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJG5ldy1wcm9wcztcbn1cblxuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvcjogZmFsc2UpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVgIGlzIGRlcHJlY2F0ZWQgXCIgK1xuICAgIFwiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcbiAgICBAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcHJvcDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgdW5wYWNrYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDEge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAyIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAzKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcbiAgfVxufVxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcbiRnb2xkZW46ICAgICAgICAgICAxLjYxODtcbiRtaW5vci1zZWNvbmQ6ICAgICAxLjA2NztcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcbiRtaW5vci10aGlyZDogICAgICAxLjI7XG4kbWFqb3ItdGhpcmQ6ICAgICAgMS4yNTtcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcbiRwZXJmZWN0LWZpZnRoOiAgICAxLjU7XG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xuJG1pbm9yLXNldmVudGg6ICAgIDEuNzc4O1xuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xuJG9jdGF2ZTogICAgICAgICAgIDI7XG4kbWFqb3ItdGVudGg6ICAgICAgMi41O1xuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XG4kZG91YmxlLW9jdGF2ZTogICAgNDtcblxuJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2U7XG5cbiRtb2R1bGFyLXNjYWxlLXJhdGlvOiAkcGVyZmVjdC1mb3VydGggIWRlZmF1bHQ7XG4kbW9kdWxhci1zY2FsZS1iYXNlOiBlbSgkZW0tYmFzZSkgIWRlZmF1bHQ7XG5cbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc7XG5cbkBmdW5jdGlvbiBtb2R1bGFyLXNjYWxlKCRpbmNyZW1lbnQsICR2YWx1ZTogJG1vZHVsYXItc2NhbGUtYmFzZSwgJHJhdGlvOiAkbW9kdWxhci1zY2FsZS1yYXRpbykge1xuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEhlbHBlciBmdW5jdGlvbiBmb3Igc3RyLXRvLW51bSBmbi5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfY29udmVydC11bml0cygkbnVtYmVyLCAkdW5pdCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9jb252ZXJ0LXVuaXRzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIFwiICtcbiAgICBcImJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc3RyaW5nczogXCJweFwiLCBcImNtXCIsIFwibW1cIiwgXCIlXCIsIFwiY2hcIiwgXCJwaWNhXCIsIFwiaW5cIiwgXCJlbVwiLCBcInJlbVwiLCBcInB0XCIsIFwicGNcIiwgXCJleFwiLCBcInZ3XCIsIFwidmhcIiwgXCJ2bWluXCIsIFwidm1heFwiLCBcImRlZ1wiLCBcInJhZFwiLCBcImdyYWRcIiwgXCJ0dXJuXCI7XG4gICR1bml0czogICAxcHgsIDFjbSwgMW1tLCAxJSwgMWNoLCAxcGljYSwgMWluLCAxZW0sIDFyZW0sIDFwdCwgMXBjLCAxZXgsIDF2dywgMXZoLCAxdm1pbiwgMXZtYXgsIDFkZWcsIDFyYWQsIDFncmFkLCAxdHVybjtcbiAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJHVuaXQpO1xuXG4gIEBpZiBub3QgJGluZGV4IHtcbiAgICBAd2FybiBcIlVua25vd24gdW5pdCBgI3skdW5pdH1gLlwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbnVtYmVyKSAhPSBcIm51bWJlclwiIHtcbiAgICBAd2FybiBcImAjeyRudW1iZXJ9IGlzIG5vdCBhIG51bWJlcmBcIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQHJldHVybiAkbnVtYmVyICogbnRoKCR1bml0cywgJGluZGV4KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERpcmVjdGlvbmFsLXByb3BlcnR5IG1peGlucyBhcmUgc2hvcnRoYW5kcyBmb3Igd3JpdGluZyBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZ1xuLy8vXG4vLy8gQGlnbm9yZSBZb3UgY2FuIGFsc28gdXNlIGBmYWxzZWAgaW5zdGVhZCBvZiBgbnVsbGAuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGRpcmVjdGlvbmFsIHZhbHVlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkb3R0ZWQgbnVsbCk7XG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDAgMTBweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkO1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuLy8vICAgICBtYXJnaW4tbGVmdDogMDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWlucy1mYWxzeVxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cblxuQGZ1bmN0aW9uIGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGNvbGxhcHNlLWRpcmVjdGlvbmFsc2AgaXMgZGVwcmVjYXRlZCBhbmQgXCIgK1xuICAgIFwid2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImRpcmVjdGlvbmFsLXByb3BlcnR5XCIpO1xuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIi8vIFVzZWQgZm9yIGNyZWF0aW5nIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBmb250cyB1c2luZyBAZm9udC1mYWNlXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXG5cbkBmdW5jdGlvbiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBmb250LXVybC1wcmVmaXhlcmAgaXMgZGVwcmVjYXRlZCBhbmQgXCIgK1xuICAgIFwid2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIHVybDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJGFzc2V0LXBpcGVsaW5lLFxuICAkZmlsZS1mb3JtYXRzLFxuICAkZm9udC11cmwpIHtcblxuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGZvbnQtc291cmNlLWRlY2xhcmF0aW9uYCBpcyBkZXByZWNhdGVkIFwiICtcbiAgICBcImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxuICApO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xuICAgICAgJGZpbGUtcGF0aDogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XG5cbiAgICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHNyYztcbn1cbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IGxpbmVhcilcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGdyYWRpZW50LXBvc2l0aW9ucztcbn1cbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcbkBmdW5jdGlvbiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfbGluZWFyLWFuZ2xlLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJG9mZnNldDogbnVsbDtcbiAgJHVuaXQtc2hvcnQ6ICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDIsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAkdW5pdC1sb25nOiAgIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgQGlmICgkdW5pdC1sb25nID09IFwiZ3JhZFwiKSBvclxuICAgICAgKCR1bml0LWxvbmcgPT0gXCJ0dXJuXCIpIHtcbiAgICAkb2Zmc2V0OiBpZigkdW5pdC1sb25nID09IFwiZ3JhZFwiLCAtMTAwZ3JhZCAqIDMsIC0wLjc1dHVybik7XG4gIH1cblxuICBAZWxzZSBpZiAoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIikgb3JcbiAgICAgICAgICAgKCR1bml0LXNob3J0ID09IFwicmFkXCIpIHtcbiAgICAkb2Zmc2V0OiBpZigkdW5pdC1zaG9ydCA9PSBcImRlZ1wiLCAtOTAgKiAzLCAxLjZyYWQpO1xuICB9XG5cbiAgQGlmICRvZmZzZXQge1xuICAgICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICgkb2Zmc2V0IC0gJG51bSkgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItZ3JhZGllbnQtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRoYXMtbXVsdGlwbGUtdmFsczogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiIFwiKTtcbiAgJGhhcy1zaW5nbGUtcG9zaXRpb246IHVucXVvdGUoX3Bvc2l0aW9uLWZsaXBwZXIoJGZpcnN0LXZhbCkgKyBcIlwiKTtcbiAgJGhhcy1hbmdsZTogaXMtbnVtYmVyKHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAxKSk7XG5cbiAgQGlmICRoYXMtbXVsdGlwbGUtdmFscyB7XG4gICAgJGdyYWRpZW50czogX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpO1xuICB9XG5cbiAgQGVsc2UgaWYgJGhhcy1zaW5nbGUtcG9zaXRpb24gIT0gXCJcIiB7XG4gICAgJHBvczogdW5xdW90ZSgkaGFzLXNpbmdsZS1wb3NpdGlvbiArIFwiXCIpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcbiAgICApO1xuICB9XG5cbiAgQGVsc2UgaWYgJGhhcy1hbmdsZSB7XG4gICAgLy8gUm90YXRlIGRlZ3JlZSBmb3Igd2Via2l0XG4gICAgJGdyYWRpZW50czogX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItcG9zaXRpb25zLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgJHR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHNwZWM6IG51bGw7XG4gICRkZWdyZWU6IG51bGw7XG4gICRzaWRlOiBudWxsO1xuICAkY29ybmVyOiBudWxsO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XG4gIC8vIFBhcnNlIFNpZGUgYW5kIGNvcm5lciBwb3NpdGlvbnNcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XG4gICAgICAkc2lkZTogbnRoKCRwb3MsIDIpO1xuXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxuICAgICAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHsgLy8gZWcuIHRvIHRvcCBsZWZ0XG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcbiAgICAgICRjb3JuZXI6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgfVxuXG4gICAgQGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgICRzcGVjOiB0byAkc2lkZSAkY29ybmVyO1xuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XG4gICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRkZWdyZWU6ICRwb3M7XG4gICAgICAkc3BlYzogdG8gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRkZWdyZWU6IC0yNzAgLSAkcG9zOyAvL3JvdGF0ZSB0aGUgZ3JhZGllbnQgb3Bwb3NpdGUgZnJvbSBzcGVjXG4gICAgICAkc3BlYzogJHBvcztcbiAgICB9XG4gIH1cbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGRlZ3JlZSAkc3BlYztcbn1cblxuQGZ1bmN0aW9uIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcG9zaXRpb24tZmxpcHBlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQHJldHVybiBpZigkcG9zID09IGxlZnQsIHJpZ2h0LCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSByaWdodCwgbGVmdCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gdG9wLCBib3R0b20sIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IGJvdHRvbSwgdG9wLCBudWxsKTtcbn1cbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcbkBmdW5jdGlvbiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkdmFsLTE6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaGFzLW11bHRpcGxlLXZhbHMgLSAxKTtcbiAgJHZhbC0yOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGhhcy1tdWx0aXBsZS12YWxzICsgMSwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICR2YWwtMzogbnVsbDtcbiAgJGhhcy12YWwtMzogc3RyLWluZGV4KCR2YWwtMiwgXCIgXCIpO1xuXG4gIEBpZiAkaGFzLXZhbC0zIHtcbiAgICAkdmFsLTM6IHN0ci1zbGljZSgkdmFsLTIsICRoYXMtdmFsLTMgKyAxLCBzdHItbGVuZ3RoKCR2YWwtMikpO1xuICAgICR2YWwtMjogc3RyLXNsaWNlKCR2YWwtMiwgMSwgJGhhcy12YWwtMyAtIDEpO1xuICB9XG5cbiAgJHBvczogX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0xKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTIpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMyk7XG4gICRwb3M6IHVucXVvdGUoJHBvcyArIFwiXCIpO1xuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIC8vIFVzZSBvbGQgc3BlYyBmb3Igd2Via2l0XG4gIEBpZiAkdmFsLTEgPT0gXCJ0b1wiIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgJHBvcyArICRzdWZmaXgsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgLy8gQnJpbmcgdGhlIGNvZGUgdXAgdG8gc3BlY1xuICBAZWxzZSB7XG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWFyZy1wYXJzZXIoJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3JhZGlhbC1hcmctcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xuICAgICAgICAgICAgJGcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgJHNoYXBlLXNpemU6IG50aCgkZ3JhZGllbnQtcG9zLCAxKTtcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XG4gICRwb3Mtc3BlYzogaWYoJHBvcywgXCJhdCAjeyRwb3N9XCIsIG51bGwpO1xuXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XG5cbiAgLy8gQWRkIGNvbW1hXG4gIEBpZiAoJHNwZWMgIT0gXCIgIFwiKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCI7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcblxuICBAcmV0dXJuICRwcmUtc3BlYyAkc3BlYztcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaXMtc3BlYy1zeW50YXg6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcImF0XCIpO1xuXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xuICAgICRrZXl3b3JkOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGlzLXNwZWMtc3ludGF4IC0gMik7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XG4gICAgQHdhcm4gXCJSYWRpYWwtZ3JhZGllbnQgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBjb25mb3JtIHRvIGxhdGVzdCBzcGVjLlwiO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiBudWxsLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xuXG5AZnVuY3Rpb24gX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50cywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3JlbmRlci1ncmFkaWVudHNgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICRwcmUtc3BlYzogbnVsbDtcbiAgJHNwZWM6IG51bGw7XG4gICR2ZW5kb3ItZ3JhZGllbnRzOiBudWxsO1xuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcbiAgICBAaWYgJGdyYWRpZW50LXBvc2l0aW9ucyB7XG4gICAgICAkcHJlLXNwZWM6IG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAxKTtcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xuICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgQGlmICR2ZW5kb3Ige1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XG4gIH1cbiAgQGVsc2UgaWYgJHZlbmRvciA9PSBmYWxzZSB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogdW5xdW90ZSgkdmVuZG9yLWdyYWRpZW50cyk7XG4gIH1cbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9zaGFwZS1zaXplLXN0cmlwcGVyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHNoYXBlLXNpemUge1xuICAgIEBpZiAoJHZhbHVlID09IFwiY292ZXJcIikgb3IgKCR2YWx1ZSA9PSBcImNvbnRhaW5cIikge1xuICAgICAgJHZhbHVlOiBudWxsO1xuICAgIH1cbiAgICAkc2hhcGUtc2l6ZS1zcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skdmFsdWV9XCI7XG4gIH1cbiAgQHJldHVybiAkc2hhcGUtc2l6ZS1zcGVjO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBsaW5lYXIvcmFkaWFsLWdyYWRpZW50LXBhcnNlcnMuXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX3N0ci10by1udW0oJHN0cmluZykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9zdHItdG8tbnVtYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAvLyBNYXRyaWNlc1xuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcblxuICAvLyBSZXN1bHRcbiAgJHJlc3VsdDogMDtcbiAgJGRpdmlkZXI6IDA7XG4gICRtaW51czogZmFsc2U7XG5cbiAgLy8gTG9vcGluZyB0aHJvdWdoIGFsbCBjaGFyYWN0ZXJzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XG4gICAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJGNoYXJhY3Rlcik7XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSBcIi1cIiB7XG4gICAgICAkbWludXM6IHRydWU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGNoYXJhY3RlciA9PSBcIi5cIiB7XG4gICAgICAkZGl2aWRlcjogMTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAgICRyZXN1bHQ6IGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcbiAgICAgIH1cblxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xuXG4gICAgICBAaWYgJGRpdmlkZXIgPT0gMCB7XG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBNb3ZlIHRoZSBkZWNpbWFsIGRvdCB0byB0aGUgbGVmdFxuICAgICAgICAkZGl2aWRlcjogJGRpdmlkZXIgKiAxMDtcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xuICAgICAgfVxuXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XG59XG4iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb25cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi1uYW1lXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIik7XG5cbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgkdmFsdWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiKTtcblxuICAvLyBpbmZpbml0ZSB8IDxudW1iZXI+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICR2YWx1ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uKCRkaXJlY3Rpb25zLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWRpcmVjdGlvblwiKTtcblxuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLXBsYXktc3RhdGVcIik7XG5cbiAgLy8gcnVubmluZyB8IHBhdXNlZFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kZWxheSgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24tZGVsYXlcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZmlsbC1tb2RlKCRtb2Rlcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi1maWxsLW1vZGVcIik7XG5cbiAgLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhcHBlYXJhbmNlXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LCB3ZWJraXQgc3BlYyk7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZHMgdXNpbmcgc2hvcnRoYW5kXG4vLyBub3RhdGlvbi5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmRzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYmFja2dyb3VuZFwiKTtcblxuICAkd2Via2l0LWJhY2tncm91bmRzOiAoKTtcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xuXG4gIEBlYWNoICRiYWNrZ3JvdW5kIGluICRiYWNrZ3JvdW5kcyB7XG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkYmFja2dyb3VuZC10eXBlOiB0eXBlLW9mKCRiYWNrZ3JvdW5kKTtcblxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYmFja2dyb3VuZC1pbWFnZVwiKTtcblxuICAkd2Via2l0LWltYWdlczogKCk7XG4gICRzcGVjLWltYWdlczogKCk7XG5cbiAgQGVhY2ggJGltYWdlIGluICRpbWFnZXMge1xuICAgICR3ZWJraXQtaW1hZ2U6ICgpO1xuICAgICRzcGVjLWltYWdlOiAoKTtcblxuICAgIEBpZiAodHlwZS1vZigkaW1hZ2UpID09IHN0cmluZykge1xuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkaW1hZ2UsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6ICRpbWFnZTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgJGltYWdlO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogIG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWltYWdlOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xuICAgICRzcGVjLWltYWdlczogICBhcHBlbmQoJHNwZWMtaW1hZ2VzLCAgICRzcGVjLWltYWdlLCAgIGNvbW1hKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtaW1hZ2U6ICR3ZWJraXQtaW1hZ2VzO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkc3BlYy1pbWFnZXM7XG59XG4iLCJAbWl4aW4gYm9yZGVyLWltYWdlKCRib3JkZXJzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm9yZGVyLWltYWdlXCIpO1xuXG4gICR3ZWJraXQtYm9yZGVyczogKCk7XG4gICRzcGVjLWJvcmRlcnM6ICgpO1xuXG4gIEBlYWNoICRib3JkZXIgaW4gJGJvcmRlcnMge1xuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcbiAgICAkc3BlYy1ib3JkZXI6ICgpO1xuICAgICRib3JkZXItdHlwZTogdHlwZS1vZigkYm9yZGVyKTtcblxuICAgIEBpZiAkYm9yZGVyLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xuICAgICAgJGJvcmRlci1zdHI6IGlmKCRib3JkZXItdHlwZSA9PSBsaXN0LCBudGgoJGJvcmRlciwgMSksICRib3JkZXIpO1xuXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJvcmRlcn1cIik7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcbiAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgIH1cblxuICAgICR3ZWJraXQtYm9yZGVyczogYXBwZW5kKCR3ZWJraXQtYm9yZGVycywgJHdlYmtpdC1ib3JkZXIsIGNvbW1hKTtcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XG4gIH1cblxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogJHNwZWMtYm9yZGVycztcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjYWxjXCIpO1xuXG4gICN7JHByb3BlcnR5fTogLXdlYmtpdC1jYWxjKCN7JHZhbHVlfSk7XG4gICN7JHByb3BlcnR5fTogY2FsYygjeyR2YWx1ZX0pO1xufVxuIiwiQG1peGluIGNvbHVtbnMoJGFyZzogYXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbnNcIik7XG5cbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1ucywgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1jb3VudCgkaW50OiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLWNvdW50XCIpO1xuXG4gIC8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1nYXBcIik7XG5cbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1maWxsXCIpO1xuXG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUoJGFyZykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1ydWxlXCIpO1xuXG4gIC8vIDxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tcnVsZS1jb2xvclwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLXJ1bGUtc3R5bGVcIik7XG5cbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCgkd2lkdGg6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tcnVsZS13aWR0aFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1zcGFuXCIpO1xuXG4gIC8vIG5vbmUgfHwgYWxsXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4td2lkdGhcIik7XG5cbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmaWx0ZXJcIik7XG5cbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveFwiKTtcblxuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJkaXNwbGF5LWJveFwiKTtcblxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxuICBkaXNwbGF5OiBib3g7XG59XG5cbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnQ6IGlubGluZS1heGlzKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LW9yaWVudFwiKTtcblxuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1wYWNrXCIpO1xuXG4vLyBzdGFydHxlbmR8Y2VudGVyfGp1c3RpZnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRwYWNrLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtYWxpZ25cIik7XG5cbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8YmFzZWxpbmV8c3RyZXRjaFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbGlnbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LWRpcmVjdGlvblwiKTtcblxuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtbGluZXNcIik7XG5cbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtb3JkaW5hbC1ncm91cFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleCgkdmFsdWU6IDApIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtZmxleFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1mbGV4LWdyb3VwXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXG5cbi8vIDIwMDkgLSBkaXNwbGF5IChib3ggfCBpbmxpbmUtYm94KVxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXG5AbWl4aW4gZGlzcGxheSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJkaXNwbGF5XCIpO1xuXG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleFwiKTtcblxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmllbnQgKCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMpXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZGlyZWN0aW9uXCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICRkaXJlY3Rpb246IG5vcm1hbDtcblxuICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiY29sdW1uLXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC13cmFwXCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXNcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSB3cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH1cblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZmxvd1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXgtb3JkZXIgKGludGVnZXIpXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcIm9yZGVyXCIpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihvcmRlciwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWdyb3cgKG51bWJlcilcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZ3Jvd1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWdyb3csICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1zaHJpbmsgKG51bWJlcilcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1zaHJpbmtcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1iYXNpc1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAkd2lkdGg7XG59XG5cbi8vIDIwMDkgLSBib3gtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMiAtIGp1c3RpZnktY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZClcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJHZhbHVlOiBmbGV4LXN0YXJ0KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwianVzdGlmeS1jb250ZW50XCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1pdGVtcyAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFsaWduLWl0ZW1zXCIpO1xuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtYWxpZ246ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYWxpZ24tc2VsZlwiKTtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tc2VsZiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1pdGVtLWFsaWduOiAkdmFsdWUtMjAxMTtcbn1cblxuLy8gMjAxMSAtIGZsZXgtbGluZS1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgfCBkaXN0cmlidXRlIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1jb250ZW50KCR2YWx1ZTogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFsaWduLWNvbnRlbnRcIik7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIkBtaXhpbiBmb250LWZhY2UoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUsXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkZm9udC11cmwtcHJlZml4OiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpO1xuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgICAgICRmb250LWZhbWlseSxcbiAgICAgICRmaWxlLXBhdGgsXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXG4gICAgICAkZmlsZS1mb3JtYXRzLFxuICAgICAgJGZvbnQtdXJsLXByZWZpeFxuICAgICk7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZm9udC1mZWF0dXJlLXNldHRpbmdzXCIpO1xuXG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAwIHsgJHNldHRpbmdzOiBub25lOyB9XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZvbnQtZmVhdHVyZS1zZXR0aW5ncywgJHNldHRpbmdzLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxuQG1peGluIGhpZHBpKCRyYXRpbzogMS4zKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiaGlkcGlcIik7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IHJvdW5kKCRyYXRpbyAqIDk2ZHBpKSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImh5cGhlbnNcIik7XG5cbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cbiAgQGluY2x1ZGUgcHJlZml4ZXIoaHlwaGVucywgJGh5cGhlbmF0aW9uLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImltYWdlLXJlbmRlcmluZ1wiKTtcblxuICBAaWYgKCRtb2RlID09IGNyaXNwLWVkZ2VzKSB7XG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgLy8gSUU4K1xuICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcztcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1vLWNyaXNwLWVkZ2VzO1xuICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIGltYWdlLXJlbmRlcmluZzogJG1vZGU7XG4gIH1cbn1cbiIsIi8vIEFkZHMga2V5ZnJhbWVzIGJsb2NrcyBmb3Igc3VwcG9ydGVkIHByZWZpeGVzLCByZW1vdmluZyByZWR1bmRhbnQgcHJlZml4ZXMgaW4gdGhlIGJsb2NrJ3MgY29udGVudFxuQG1peGluIGtleWZyYW1lcygkbmFtZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImtleWZyYW1lc1wiKTtcblxuICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQ6ICAgICRwcmVmaXgtZm9yLXdlYmtpdDtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYTogICAkcHJlZml4LWZvci1tb3ppbGxhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQ6ICRwcmVmaXgtZm9yLW1pY3Jvc29mdDtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmE6ICAgICAkcHJlZml4LWZvci1vcGVyYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYzogICAgICAkcHJlZml4LWZvci1zcGVjO1xuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcbiAgICAkcHJlZml4LWZvci13ZWJraXQ6IHRydWUgIWdsb2JhbDtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcbiAgICAkcHJlZml4LWZvci1tb3ppbGxhOiB0cnVlICFnbG9iYWw7XG4gICAgQC1tb3ota2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0ICAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0ICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmEgICAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyAgICAgICFnbG9iYWw7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMge1xuICAgIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRnMSwgJGcyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImxpbmVhci1ncmFkaWVudFwiKTtcblxuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkcG9zLXNwZWM6IG51bGw7XG4gICRwb3MtZGVncmVlOiBudWxsO1xuXG4gIC8vIElmICRwb3MgaXMgbWlzc2luZyBmcm9tIG1peGluLCByZWFzc2lnbiB2YXJzIGFuZCBhZGQgZGVmYXVsdCBwb3NpdGlvblxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJGcxMDogJGc5OyAkZzk6ICRnODsgJGc4OiAkZzc7ICRnNzogJGc2OyAkZzY6ICRnNTtcbiAgICAkZzU6ICRnNDsgJGc0OiAkZzM7ICRnMzogJGcyOyAkZzI6ICRnMTsgJGcxOiAkcG9zO1xuICAgICRwb3M6IG51bGw7XG4gIH1cblxuICBAaWYgJHBvcyB7XG4gICAgJHBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpO1xuICAgICRwb3MtZGVncmVlOiBudGgoJHBvc2l0aW9ucywgMSk7XG4gICAgJHBvcy1zcGVjOiAgIG50aCgkcG9zaXRpb25zLCAyKTtcbiAgfVxuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZhbGxiYWNrLWNvbG9yOiBudGgoJGcxLCAxKTtcblxuICAvLyBJZiAkZmFsbGJhY2sgaXMgYSBjb2xvciB1c2UgdGhhdCBjb2xvciBhcyB0aGUgZmFsbGJhY2sgY29sb3JcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmFsbGJhY2stY29sb3I7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCRwb3MtZGVncmVlICRmdWxsKTsgLy8gU2FmYXJpIDUuMSssIENocm9tZVxuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KCN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBtaXhpbiBwZXJzcGVjdGl2ZSgkZGVwdGg6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJwZXJzcGVjdGl2ZVwiKTtcblxuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJwZXJzcGVjdGl2ZS1vcmlnaW5cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInBsYWNlaG9sZGVyXCIpO1xuXG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXG5AbWl4aW4gcmFkaWFsLWdyYWRpZW50KCRnMSwgJGcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJyYWRpYWwtZ3JhZGllbnRcIik7XG5cbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xuICAkZzE6ICBudGgoJGRhdGEsIDEpO1xuICAkZzI6ICBudGgoJGRhdGEsIDIpO1xuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xuICAkc2hhcGUtc2l6ZTogbnRoKCRkYXRhLCA0KTtcblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTdHJpcCBkZXByZWNhdGVkIGNvdmVyL2NvbnRhaW4gZm9yIHNwZWNcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZmlyc3QtY29sb3IsIDEpO1xuXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgLy8gQWRkIENvbW1hcyBhbmQgc3BhY2VzXG4gICRzaGFwZS1zaXplOiBpZigkc2hhcGUtc2l6ZSwgXCIjeyRzaGFwZS1zaXplfSwgXCIsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG4gICRzaGFwZS1zaXplLXNwZWM6IGlmKCgkc2hhcGUtc2l6ZS1zcGVjICE9IFwiIFwiKSBhbmQgKCRwb3MgPT0gbnVsbCksIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSwgXCIsIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSBcIik7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoI3skcG9zfSN7JHNoYXBlLXNpemV9I3skZnVsbH0pO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBPdXRwdXRzIHRoZSBzcGVjIGFuZCBwcmVmaXhlZCB2ZXJzaW9ucyBvZiB0aGUgYDo6c2VsZWN0aW9uYCBwc2V1ZG8tZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2x9ICRjdXJyZW50LXNlbGVjdG9yIFtmYWxzZV1cclxuLy8vICAgSWYgc2V0IHRvIGB0cnVlYCwgaXQgdGFrZXMgdGhlIGN1cnJlbnQgZWxlbWVudCBpbnRvIGNvbnNpZGVyYXRpb24uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzZWxlY3Rpb24odHJ1ZSkge1xyXG4vLy8gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgICB9XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50OjotbW96LXNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLmVsZW1lbnQ6OnNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIHNlbGVjdGlvbigkY3VycmVudC1zZWxlY3RvcjogZmFsc2UpIHtcclxuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInNlbGVjdGlvblwiKTtcclxuXHJcbiAgQGlmICRjdXJyZW50LXNlbGVjdG9yIHtcclxuICAgICY6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIHRleHQtZGVjb3JhdGlvbigkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0ZXh0LWRlY29yYXRpb25cIik7XG5cbi8vIDx0ZXh0LWRlY29yYXRpb24tbGluZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1zdHlsZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1jb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLCAkdmFsdWUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tbGluZSgkbGluZTogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRleHQtZGVjb3JhdGlvbi1saW5lXCIpO1xuXG4vLyBub25lIHx8IHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0ZXh0LWRlY29yYXRpb24tc3R5bGVcIik7XG5cbi8vIHNvbGlkIHx8IGRvdWJsZSB8fCBkb3R0ZWQgfHwgZGFzaGVkIHx8IHdhdnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLXN0eWxlLCAkc3R5bGUsIG1veiB3ZWJraXQpO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWNvbG9yKCRjb2xvcjogY3VycmVudENvbG9yKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidGV4dC1kZWNvcmF0aW9uLWNvbG9yXCIpO1xuXG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tY29sb3IsICRjb2xvciwgbW96KTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtXCIpO1xuXG4gIC8vIG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sICRwcm9wZXJ0eSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbigkYXhlczogNTAlKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtLW9yaWdpblwiKTtcblxuICAvLyB4LWF4aXMgLSBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgIHwgbGVuZ3RoIHwgJVxuICAvLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuICAvLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRheGVzLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBmbGF0KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtLXN0eWxlXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCIvLyBTaG9ydGhhbmQgbWl4aW4uIFN1cHBvcnRzIG11bHRpcGxlIHBhcmVudGhlc2VzLWRlbGltaW5hdGVkIHZhbHVlcyBmb3IgZWFjaCB2YXJpYWJsZS5cbi8vIEV4YW1wbGU6IEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAycyBlYXNlLWluLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uIChvcGFjaXR5IDFzIGVhc2UtaW4gMnMsIHdpZHRoIDJzIGVhc2Utb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tcHJvcGVydHkgKHRyYW5zZm9ybSwgb3BhY2l0eSk7XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNpdGlvblwiKTtcblxuICAvLyBGaXggZm9yIHZlbmRvci1wcmVmaXggdHJhbnNmb3JtIHByb3BlcnR5XG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XG4gICR3ZWJraXQ6ICgpO1xuICAkbW96OiAoKTtcbiAgJHNwZWM6ICgpO1xuXG4gIC8vIENyZWF0ZSBsaXN0cyBmb3IgdmVuZG9yLXByZWZpeGVkIHRyYW5zZm9ybVxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIG50aCgkbGlzdCwgMSkgPT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAkbmVlZHMtcHJlZml4ZXM6IHRydWU7XG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xuICAgICAgJGxpc3QyOiAtbW96LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MzogKCk7XG5cbiAgICAgIEBlYWNoICR2YXIgaW4gJGxpc3Qge1xuICAgICAgICAkbGlzdDM6IGpvaW4oJGxpc3QzLCAkdmFyKTtcblxuICAgICAgICBAaWYgJHZhciAhPSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICAgICAkbGlzdDE6IGpvaW4oJGxpc3QxLCAkdmFyKTtcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QxKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdDIpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0LCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRuZWVkcy1wcmVmaXhlcyB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xuICAgICAgIC1tb3otdHJhbnNpdGlvbjogJG1vejtcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICRzcGVjO1xuICB9IEBlbHNlIHtcbiAgICBAaWYgbGVuZ3RoKCRwcm9wZXJ0aWVzKSA+PSAxIHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tcHJvcGVydHlcIik7XG5cbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcbiAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIm1velwiKTtcbiAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tZHVyYXRpb25cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiKTtcblxuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tZGVsYXlcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZTogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInVzZXItc2VsZWN0XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1jb2xvcigjYTYwYjU1ICM3NmNkOWMgbnVsbCAjZThhZTFhKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNlOGFlMWE7XG4vLy8gICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzc2Y2Q5Yztcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1jb2xvcmBcblxuQG1peGluIGJvcmRlci1jb2xvcigkdmFscy4uLikge1xuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBjb2xvciwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1yYWRpdXNgIG9uIGJvdGggY29ybmVycyBvbiB0aGUgc2lkZSBvZiBhIGJveC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaWlcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygzcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXN0eWxlYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXN0eWxlYFxuXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXdpZHRoYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItd2lkdGgoMWVtIG51bGwgMjBweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIwcHg7XG4vLy8gICAgIGJvcmRlci10b3Atd2lkdGg6IDFlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci13aWR0aGBcblxuQG1peGluIGJvcmRlci13aWR0aCgkdmFscy4uLikge1xuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCBidXR0b25zLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC1idXR0b25zfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC1idXR0b25zfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWFjdGl2ZX0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcbi8vLyAgIGJ1dHRvbjpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgYnV0dG9uOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3Rcbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcblxuJGJ1dHRvbnMtbGlzdDogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInJlc2V0XCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic3VibWl0XCJdJztcblxuJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2U7XG5cbiRhbGwtYnV0dG9uczogICAgICAgIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCk7XG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGFjdGl2ZSk7XG4kYWxsLWJ1dHRvbnMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGZvY3VzKTtcbiRhbGwtYnV0dG9ucy1ob3ZlcjogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgaG92ZXIpO1xuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nO1xuXG4kYWxsLWJ1dHRvbi1pbnB1dHM6ICAgICAgICAkYWxsLWJ1dHRvbnM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtYWN0aXZlOiAkYWxsLWJ1dHRvbnMtYWN0aXZlO1xuJGFsbC1idXR0b24taW5wdXRzLWZvY3VzOiAgJGFsbC1idXR0b25zLWZvY3VzO1xuJGFsbC1idXR0b24taW5wdXRzLWhvdmVyOiAgJGFsbC1idXR0b25zLWhvdmVyO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaW5jbHVkZSBhIGNsZWFyZml4IGZvciBjb250YWluaW5nIGZsb2F0cy5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9jc3Ntb2pvLmNvbS9sYXRlc3RfbmV3X2NsZWFyZml4X3NvX2Zhci9cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50OjphZnRlciB7XG4vLy8gICAgIGNsZWFyOiBib3RoO1xuLy8vICAgICBjb250ZW50OiBcIlwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFRydW5jYXRlcyB0ZXh0IGFuZCBhZGRzIGFuIGVsbGlwc2lzIHRvIHJlcHJlc2VudCBvdmVyZmxvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzEwMCVdXG4vLy8gICBNYXgtd2lkdGggZm9yIHRoZSBzdHJpbmcgdG8gcmVzcGVjdCBiZWZvcmUgYmVpbmcgdHJ1bmNhdGVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZWxsaXBzaXM7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgICAgd29yZC13cmFwOiBub3JtYWw7XG4vLy8gICB9XG5cbkBtaXhpbiBlbGxpcHNpcygkd2lkdGg6IDEwMCUpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VvcmdpYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kZ2VvcmdpYTogXCJHZW9yZ2lhXCIsIFwiQ2FtYnJpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIlRpbWVzXCIsIHNlcmlmO1xuXG4vLy8gSGVsdmV0aWNhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgXCJSb2JvdG9cIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuXG4vLy8gTHVjaWRhIEdyYW5kZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbHVjaWRhLWdyYW5kZTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiVGFob21hXCIsIFwiVmVyZGFuYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBNb25vc3BhY2UgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb25zb2xhc1wiLCBcIkNvdXJpZXJcIiwgbW9ub3NwYWNlO1xuXG4vLy8gVmVyZGFuYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kdmVyZGFuYTogXCJWZXJkYW5hXCIsIFwiR2VuZXZhXCIsIHNhbnMtc2VyaWY7XG4iLCIvLy8gSGlkZXMgdGhlIHRleHQgaW4gYW4gZWxlbWVudCwgY29tbW9ubHkgdXNlZCB0byBzaG93IGFuIGltYWdlLiBTb21lIGVsZW1lbnRzIHdpbGwgbmVlZCBibG9jay1sZXZlbCBzdHlsZXMgYXBwbGllZC5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly96ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LWluZGVudDogMTAxJTtcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBoZWlnaHQgYXJndW1lbnQgaW4gdjUuMC4wXG5cbkBtaXhpbiBoaWRlLXRleHQoJGhlaWdodDogbnVsbCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWluZGVudDogMTAxJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgJGhlaWdodCB7XG4gICAgQHdhcm4gXCJUaGUgYGhpZGUtdGV4dGAgbWl4aW4gaGFzIGNoYW5nZWQgYW5kIG5vIGxvbmdlciByZXF1aXJlcyBhIGhlaWdodC4gVGhlIGhlaWdodCBhcmd1bWVudCB3aWxsIG5vIGxvbmdlciBiZSBhY2NlcHRlZCBpbiB2NS4wLjBcIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgbWFyZ2luYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAxMHB4IDNlbSAyMHZoKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xuLy8vICAgICBtYXJnaW4tbGVmdDogMjB2aDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgbWFyZ2luYFxuXG5AbWl4aW4gbWFyZ2luKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShtYXJnaW4sIGZhbHNlLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgcGFkZGluZ2Agb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkZGluZygxMnZoIG51bGwgMTBweCA1JSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuLy8vICAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYHBhZGRpbmdgXG5cbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShwYWRkaW5nLCBmYWxzZSwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciBzZXR0aW5nIGFuIGVsZW1lbnTigJlzIHBvc2l0aW9uLiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge1Bvc2l0aW9ufSAkcG9zaXRpb24gW3JlbGF0aXZlXVxuLy8vICAgQSBDU1MgcG9zaXRpb24gdmFsdWVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJGNvb3JkaW5hdGVzIFtudWxsIG51bGwgbnVsbCBudWxsXVxuLy8vICAgTGlzdCBvZiB2YWx1ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSA0LXZhbHVlIHN5bnRheCBmb3IgdGhlIGVkZ2VzIG9mIGEgYm94XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBsZWZ0OiAxMGVtO1xuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLy8gICAgIHRvcDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSB1bnBhY2tcblxuQG1peGluIHBvc2l0aW9uKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogbnVsbCBudWxsIG51bGwgbnVsbCkge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09IGxpc3Qge1xuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgJGNvb3JkaW5hdGVzOiB1bnBhY2soJGNvb3JkaW5hdGVzKTtcblxuICAkb2Zmc2V0czogKFxuICAgIHRvcDogICAgbnRoKCRjb29yZGluYXRlcywgMSksXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcbiAgICBib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpLFxuICAgIGxlZnQ6ICAgbnRoKCRjb29yZGluYXRlcywgNClcbiAgKTtcblxuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xuXG4gIEBlYWNoICRvZmZzZXQsICR2YWx1ZSBpbiAkb2Zmc2V0cyB7XG4gICAgQGlmIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIG1peGluIGZvciBnZW5lcmF0aW5nIHZlbmRvciBwcmVmaXhlcyBvbiBub24tc3RhbmRhcmRpemVkIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXhcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXG4vLy8gICBWYWx1ZSB0byB1c2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXG4vLy8gICBQcmVmaXhlcyB0byBkZWZpbmVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItcmFkaXVzLCAxMHB4LCB3ZWJraXQgbXMgc3BlYyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1vemlsbGFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1pY3Jvc29mdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXNwZWNcblxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgIEBpZiAkcHJlZml4ID09IHdlYmtpdCB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcbiAgICAgICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbXMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1pY3Jvc29mdCB7XG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xuICAgICAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgIHtcbiAgICAgIEB3YXJuIFwiVW5yZWNvZ25pemVkIHByZWZpeDogI3skcHJlZml4fVwiO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpIHtcbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XG59XG4iLCJAbWl4aW4gcmV0aW5hLWltYWdlKCRmaWxlbmFtZSwgJGJhY2tncm91bmQtc2l6ZSwgJGV4dGVuc2lvbjogcG5nLCAkcmV0aW5hLWZpbGVuYW1lOiBudWxsLCAkcmV0aW5hLXN1ZmZpeDogXzJ4LCAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUoXCJyZXRpbmEtaW1hZ2VcIik7XG5cbiAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgaGlkcGkge1xuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNpemVcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmFsdWUgaW4gYCRzaXplYCBpdCBpcyB1c2VkIGZvciBib3RoIHdpZHRoIGFuZCBoZWlnaHQuIEFsbCB1bml0cyBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMmVtO1xuLy8vICAgICBoZWlnaHQ6IDJlbTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGF1dG87XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxuXG5AbWl4aW4gc2l6ZSgkdmFsdWUpIHtcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcbiAgJGhlaWdodDogJHdpZHRoO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWZvY3VzfSxcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXG4vLy8gICB0ZXh0YXJlYSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcbi8vLyAgIHRleHRhcmVhOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxuLy8vICAgdGV4dGFyZWE6aG92ZXIge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcbi8vLyAgIHRleHRhcmVhOmFjdGl2ZSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInNlYXJjaFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXQ6bm90KFt0eXBlXSknLFxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XG5cbiR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlO1xuXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XG4kYWxsLXRleHQtaW5wdXRzLWFjdGl2ZTogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtdGV4dC1pbnB1dHMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBmb2N1cyk7XG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXG4vLy9cbi8vLyBUaW1pbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBkZW1vZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9yZXNvdXJjZXMvZGVtb3MvZWZmZWN0L2Vhc2luZy5odG1sXG4vLy9cbi8vLyBAdHlwZSBjdWJpYy1iZXppZXJcblxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xuJGVhc2Utb3V0LXF1YXJ0OiAgICBjdWJpYy1iZXppZXIoMC4xNjUsICAwLjg0MCwgMC40NDAsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWV4cG86ICAgICBjdWJpYy1iZXppZXIoMC4xOTAsICAxLjAwMCwgMC4yMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xuXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsICAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWFydDogY3ViaWMtYmV6aWVyKDAuNzcwLCAgMC4wMDAsIDAuMTc1LCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXNpbmU6ICBjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKTtcbiRlYXNlLWluLW91dC1leHBvOiAgY3ViaWMtYmV6aWVyKDEuMDAwLCAgMC4wMDAsIDAuMDAwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xuJGVhc2UtaW4tb3V0LWJhY2s6ICBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTtcbiIsIkBtaXhpbiB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgJGhlaWdodDogbnRoKCRzaXplLCBsZW5ndGgoJHNpemUpKTtcbiAgJGZvcmVncm91bmQtY29sb3I6IG50aCgkY29sb3IsIDEpO1xuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgJHdpZHRoOiAkd2lkdGggLyAyO1xuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC11cCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1yaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZC13cmFwYCBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cbi8vLyAgIFZhbHVlIGZvciB0aGUgYHdvcmQtYnJlYWtgIHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAud3JhcHBlciB7XG4vLy8gICAgIEBpbmNsdWRlIHdvcmQtd3JhcChicmVhay13b3JkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbi8vLyAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICB9XG5cbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcbiAgb3ZlcmZsb3ctd3JhcDogJHdyYXA7XG4gIHdvcmQtd3JhcDogJHdyYXA7XG5cbiAgQGlmICR3cmFwID09IGJyZWFrLXdvcmQge1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgfSBAZWxzZSB7XG4gICAgd29yZC1icmVhazogJHdyYXA7XG4gIH1cbn1cbiIsIi8vIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2VcblxuQG1peGluIGlubGluZS1ibG9jayB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImlubGluZS1ibG9ja1wiKTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtaXhpbiBidXR0b24gKCRzdHlsZTogc2ltcGxlLCAkYmFzZS1jb2xvcjogIzQyOTRmMCwgJHRleHQtc2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImJ1dHRvblwiKTtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICRiYXNlLWNvbG9yO1xuICAgICR0ZXh0LXNpemU6ICRzdHlsZTtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSAjNDI5NGYwIHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxufVxuXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gcGlsbCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICAvLyBDb2xvcmVkIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gZmxhdCB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG59XG5cbi8vIFNpbXBsZSBCdXR0b25cbkBtaXhpbiBzaW1wbGUoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFNoaW55IEJ1dHRvblxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XG4gICRmb3VydGgtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC03OSwgICRncmVlbjogLTcwLCAgJGJsdWU6IC00Nik7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xNDAsICRncmVlbjogLTE0MSwgJGJsdWU6IC0xMTQpO1xuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgICAkdGhpcmQtc3RvcDogICAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xuICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtOTMsICRncmVlbjogLTg1LCAkYmx1ZTogLTY2KTtcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XG4gICAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkdGhpcmQtc3RvcC1ob3Zlcik7XG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBQaWxsIEJ1dHRvblxuQG1peGluIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xuICAkYm9yZGVyLXNpZGVzOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yMSUsICRsaWdodG5lc3M6IC0yMSUpO1xuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDE0JSwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XG4gICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDExLCAkc2F0dXJhdGlvbjogIDYlLCAgICRsaWdodG5lc3M6IC0zMSUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlLWNvbG9yO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCAzcHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBGbGF0IEJ1dHRvblxuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCl7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIEZsZXhpYmxlIGdyaWRcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZmxleC1ncmlkYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIEZvciBncmlkIGZ1bmN0aW9ucywgY2hlY2sgb3V0IEJvdXJib24ncyBzaXN0ZXIgbGlicmFyeVwiICtcbiAgICBcIk5lYXQuXCI7XG4gIH1cblxuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuLy8gRmxleGlibGUgZ3V0dGVyXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBmbGV4LWd1dHRlcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLiBGb3IgZ3JpZCBmdW5jdGlvbnMsIGNoZWNrIG91dCBCb3VyYm9uJ3Mgc2lzdGVyIGxpYnJhcnlcIiArXG4gICAgXCJOZWF0LlwiO1xuICB9XG5cbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZ3JpZC13aWR0aGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLiBGb3IgZ3JpZCBmdW5jdGlvbnMsIGNoZWNrIG91dCBCb3VyYm9uJ3Mgc2lzdGVyIGxpYnJhcnlcIiArXG4gICAgXCJOZWF0LlwiO1xuICB9XG5cbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZ29sZGVuLXJhdGlvYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIFlvdSBjYW4gdXNlIHRoZSBgbW9kdWxhci1zY2FsZWAgZnVuY3Rpb24gaW5zdGVhZC5cIjtcbiAgfVxuXG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWUsICRyYXRpbzogJGdvbGRlbik7XG59XG5cbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtc2l6aW5nXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBOZWF0IDEuNy4yXG4vLyBodHRwOi8vbmVhdC5ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMi0yMDE1IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbi8vIEhlbHBlcnNcbkBpbXBvcnQgXCJuZWF0LWhlbHBlcnNcIjtcblxuLy8gR3JpZFxuQGltcG9ydCBcImdyaWQvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImdyaWQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImdyaWQvb21lZ2FcIjtcbkBpbXBvcnQgXCJncmlkL291dGVyLWNvbnRhaW5lclwiO1xuQGltcG9ydCBcImdyaWQvc3Bhbi1jb2x1bW5zXCI7XG5AaW1wb3J0IFwiZ3JpZC9yb3dcIjtcbkBpbXBvcnQgXCJncmlkL3NoaWZ0XCI7XG5AaW1wb3J0IFwiZ3JpZC9wYWRcIjtcbkBpbXBvcnQgXCJncmlkL2ZpbGwtcGFyZW50XCI7XG5AaW1wb3J0IFwiZ3JpZC9tZWRpYVwiO1xuQGltcG9ydCBcImdyaWQvdG8tZGVwcmVjYXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC92aXN1YWwtZ3JpZFwiO1xuQGltcG9ydCBcImdyaWQvZGlzcGxheS1jb250ZXh0XCI7XG5AaW1wb3J0IFwiZ3JpZC9kaXJlY3Rpb24tY29udGV4dFwiO1xuIiwiLy8gRnVuY3Rpb25zXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3ByaXZhdGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbmV3LWJyZWFrcG9pbnRcIjtcblxuLy8gU2V0dGluZ3NcbkBpbXBvcnQgXCJzZXR0aW5ncy9ncmlkXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvdmlzdWFsLWdyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9kaXNhYmxlLXdhcm5pbmdzXCI7XG4iLCIvLyBOb3QgZnVuY3Rpb24gZm9yIExpYnNhc3MgY29tcGF0aWJpbGl0eVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MvbGlic2Fzcy9pc3N1ZXMvMzY4XG5AZnVuY3Rpb24gaXMtbm90KCR2YWx1ZSkge1xuICBAcmV0dXJuIGlmKCR2YWx1ZSwgZmFsc2UsIHRydWUpO1xufVxuXG4vLyBDaGVja3MgaWYgYSBudW1iZXIgaXMgZXZlblxuQGZ1bmN0aW9uIGlzLWV2ZW4oJGludCkge1xuICBAcmV0dXJuICRpbnQgJSAyID09IDA7XG59XG5cbi8vIENoZWNrcyBpZiBhbiBlbGVtZW50IGJlbG9uZ3MgdG8gYSBsaXN0IG9yIG5vdFxuQGZ1bmN0aW9uIGJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkge1xuICBAcmV0dXJuIGlzLW5vdChub3QtYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSk7XG59XG5cbkBmdW5jdGlvbiBub3QtYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEByZXR1cm4gaXMtbm90KGluZGV4KCRsaXN0LCAkdGVzdGVkLWl0ZW0pKTtcbn1cblxuLy8gQ29udGFpbnMgZGlzcGxheSB2YWx1ZVxuQGZ1bmN0aW9uIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSB7XG4gIEByZXR1cm4gYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KVxuICAgICAgIG9yIGJlbG9uZ3MtdG8oYmxvY2ssICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGlubGluZS1ibG9jaywgJHF1ZXJ5KVxuICAgICAgIG9yIGJlbG9uZ3MtdG8oaW5saW5lLCAkcXVlcnkpO1xufVxuXG4vLyBQYXJzZXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHNwYW4tY29sdW1ucygpXG5AZnVuY3Rpb24gY29udGFpbmVyLXNwYW4oJHNwYW46ICRzcGFuKSB7XG4gIEBpZiBsZW5ndGgoJHNwYW4pID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAzKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJGdyaWQtY29sdW1ucztcbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zaGlmdCgkc2hpZnQ6ICRzaGlmdCkge1xuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQgIWdsb2JhbDtcblxuICBAaWYgbGVuZ3RoKCRzaGlmdCkgPT0gMyB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNoaWZ0LCAzKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQHJldHVybiAkcGFyZW50LWNvbHVtbnM7XG59XG5cbi8vIEdlbmVyYXRlcyBhIHN0cmlwZWQgYmFja2dyb3VuZFxuQGZ1bmN0aW9uIGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMsICRjb2xvcjogJHZpc3VhbC1ncmlkLWNvbG9yKSB7XG4gICR0cmFuc3BhcmVudDogdHJhbnNwYXJlbnQ7XG5cbiAgJGNvbHVtbi13aWR0aDogZmxleC1ncmlkKDEsICRncmlkLWNvbHVtbnMpO1xuICAkZ3V0dGVyLXdpZHRoOiBmbGV4LWd1dHRlcigkZ3JpZC1jb2x1bW5zKTtcbiAgJGNvbHVtbi1vZmZzZXQ6ICRjb2x1bW4td2lkdGg7XG5cbiAgJHZhbHVlczogKCR0cmFuc3BhcmVudCAwLCAkY29sb3IgMCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdG8gJGdyaWQtY29sdW1ucyoyIHtcbiAgICBAaWYgaXMtZXZlbigkaSkge1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR0cmFuc3BhcmVudCAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICRjb2xvciAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJGNvbHVtbi1vZmZzZXQ6ICRjb2x1bW4tb2Zmc2V0ICsgJGNvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRndXR0ZXItd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBMYXlvdXQgZGlyZWN0aW9uXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbigkbGF5b3V0LCAkZGVmYXVsdCkge1xuICAkZGlyZWN0aW9uOiBudWxsO1xuXG4gIEBpZiB0by11cHBlci1jYXNlKCRsYXlvdXQpID09IFwiTFRSXCIgb3IgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIlJUTFwiIHtcbiAgICAkZGlyZWN0aW9uOiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGxheW91dCk7XG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkZGVmYXVsdCk7XG4gIH1cblxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbkBmdW5jdGlvbiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGxheW91dCkge1xuICAkZGlyZWN0aW9uOiBudWxsO1xuXG4gIEBpZiB0by11cHBlci1jYXNlKCRsYXlvdXQpID09IFwiTFRSXCIge1xuICAgICRkaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGxlZnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gXCJsZWZ0XCIge1xuICAgICRvcHBvc2l0ZS1kaXJlY3Rpb246IHJpZ2h0O1xuICB9XG5cbiAgQHJldHVybiAkb3Bwb3NpdGUtZGlyZWN0aW9uO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUmV0dXJucyBhIG1lZGlhIGNvbnRleHQgKG1lZGlhIHF1ZXJ5IC8gZ3JpZCBjb250ZXh0KSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSB2YXJpYWJsZSBhbmQgcGFzc2VkIHRvIGBtZWRpYSgpYCBhcyBhIHNpbmdsZS1rZXl3b3JkIGFyZ3VtZW50LiBNZWRpYSBjb250ZXh0cyBkZWZpbmVkIHVzaW5nIGBuZXctYnJlYWtwb2ludGAgYXJlIHVzZWQgYnkgdGhlIHZpc3VhbCBncmlkLCBhcyBsb25nIGFzIHRoZXkgYXJlIGRlZmluZWQgYmVmb3JlIGltcG9ydGluZyBOZWF0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnlcbi8vLyAgIEEgbGlzdCBvZiBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhbmQgdmFsdWVzLiBFYWNoIGAkZmVhdHVyZWAgc2hvdWxkIGhhdmUgYSBjb3JyZXNwb25kaW5nIGAkdmFsdWVgLlxuLy8vXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGAkdmFsdWVgIGluIGAkcXVlcnlgLCBgJGRlZmF1bHQtZmVhdHVyZWAgaXMgZ29pbmcgdG8gYmUgdXNlZC5cbi8vL1xuLy8vICAgVGhlIG51bWJlciBvZiB0b3RhbCBjb2x1bW5zIGluIHRoZSBncmlkIGNhbiBiZSBzZXQgYnkgcGFzc2luZyBgJGNvbHVtbnNgIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKG92ZXJyaWRlcyBgJHRvdGFsLWNvbHVtbnNgKS4gRm9yIGEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIGAkZmVhdHVyZWAsIGNsaWNrIFtoZXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWExKS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICR0b3RhbC1jb2x1bW5zIFskZ3JpZC1jb2x1bW5zXVxuLy8vICAgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgaW4gdGhlIG5ldyBncmlkIGNvbnRleHQuIENhbiBiZSBzZXQgYXMgYSBzaG9ydGhhbmQgaW4gdGhlIGZpcnN0IHBhcmFtZXRlci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgJG1vYmlsZTogbmV3LWJyZWFrcG9pbnQobWF4LXdpZHRoIDQ4MHB4IDQpO1xuLy8vXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG1lZGlhKCRtb2JpbGUpIHtcbi8vLyAgICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCk7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4vLy8gICAgIC5lbGVtZW50IHtcbi8vLyAgICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgICBtYXJnaW4tcmlnaHQ6IDcuNDIyOTclO1xuLy8vICAgICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgICB9XG4vLy8gICAgIC5lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICAgfVxuLy8vICAgfVxuXG5AZnVuY3Rpb24gbmV3LWJyZWFrcG9pbnQoJHF1ZXJ5OiAkZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICAkcXVlcnk6ICRkZWZhdWx0LWZlYXR1cmUgbnRoKCRxdWVyeSwgMSkgJHRvdGFsLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgaXMtZXZlbihsZW5ndGgoJHF1ZXJ5KSkge1xuICAgICRxdWVyeTogYXBwZW5kKCRxdWVyeSwgJHRvdGFsLWNvbHVtbnMpO1xuICB9XG5cbiAgQGlmIGlzLW5vdChiZWxvbmdzLXRvKCRxdWVyeSwgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzKSkge1xuICAgICR2aXN1YWwtZ3JpZC1icmVha3BvaW50czogYXBwZW5kKCR2aXN1YWwtZ3JpZC1icmVha3BvaW50cywgJHF1ZXJ5LCBjb21tYSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU2V0cyB0aGUgcmVsYXRpdmUgd2lkdGggb2YgYSBzaW5nbGUgZ3JpZCBjb2x1bW4uIFRoZSB1bml0IHVzZWQgc2hvdWxkIGJlIHRoZSBzYW1lIG9uZSB1c2VkIHRvIGRlZmluZSBgJGd1dHRlcmAuIFRvIGxlYXJuIG1vcmUgYWJvdXQgbW9kdWxhci1zY2FsZSgpIHNlZSBbQm91cmJvbiBkb2NzXShodHRwOi8vYm91cmJvbi5pby9kb2NzLyNtb2R1bGFyLXNjYWxlKS4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdClcblxuJGNvbHVtbjogbW9kdWxhci1zY2FsZSgzLCAxZW0sICRnb2xkZW4pICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgcmVsYXRpdmUgd2lkdGggb2YgYSBzaW5nbGUgZ3JpZCBndXR0ZXIuIFRoZSB1bml0IHVzZWQgc2hvdWxkIGJlIHRoZSBzYW1lIG9uZSB1c2VkIHRvIGRlZmluZSBgJGNvbHVtbmAuIFRvIGxlYXJuIG1vcmUgYWJvdXQgbW9kdWxhci1zY2FsZSgpIHNlZSBbQm91cmJvbiBkb2NzXShodHRwOi8vYm91cmJvbi5pby9kb2NzLyNtb2R1bGFyLXNjYWxlKS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuXG4kZ3V0dGVyOiBtb2R1bGFyLXNjYWxlKDEsIDFlbSwgJGdvbGRlbikgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4gSXRzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGluc2lkZSBhIG1lZGlhIHF1ZXJ5IHVzaW5nIHRoZSBgbWVkaWEoKWAgbWl4aW4uIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdGxlc3MpXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgbWF4LXdpZHRoIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IHRoYXQgaW5jbHVkZXMgYG91dGVyLWNvbnRhaW5lcigpYC4gVG8gbGVhcm4gbW9yZSBhYm91dCBgZW0oKWAgc2VlIFtCb3VyYm9uIGRvY3NdKGh0dHA6Ly9ib3VyYm9uLmlvL2RvY3MvI3B4LXRvLWVtKS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuLy8vXG4kbWF4LXdpZHRoOiBlbSgxMDg4KSAhZGVmYXVsdDtcblxuLy8vIFdoZW4gc2V0IHRvIHRydWUsIGl0IHNldHMgdGhlIGJveC1zaXppbmcgcHJvcGVydHkgb2YgYWxsIGVsZW1lbnRzIHRvIGBib3JkZXItYm94YC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIGh0bWwge1xuLy8vICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4vLy9cbi8vLyAgICosICo6OmFmdGVyLCAqOjpiZWZvcmUge1xuLy8vICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuLy8vICAgfVxuXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBkZWZhdWx0IFttZWRpYSBmZWF0dXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWEpIHRoYXQgYG1lZGlhKClgIGFuZCBgbmV3LWJyZWFrcG9pbnQoKWAgcmV2ZXJ0IHRvIHdoZW4gb25seSBhIGJyZWFrcG9pbnQgdmFsdWUgaXMgcGFzc2VkLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG5cbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDsgLy8gRGVmYXVsdCBAbWVkaWEgZmVhdHVyZSBmb3IgdGhlIGJyZWFrcG9pbnQoKSBtaXhpblxuXG4vLy9TZXRzIHRoZSBkZWZhdWx0IGxheW91dCBkaXJlY3Rpb24gb2YgdGhlIGdyaWQuIENhbiBiZSBgTFRSYCBvciBgUlRMYC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vQHR5cGUgU3RyaW5nXG5cbiRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb246IExUUiAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERpc3BsYXlzIHRoZSB2aXN1YWwgZ3JpZCB3aGVuIHNldCB0byB0cnVlLiBUaGUgb3ZlcmxhaWQgZ3JpZCBtYXkgYmUgZmV3IHBpeGVscyBvZmYgZGVwZW5kaW5nIG9uIHRoZSBicm93c2VyJ3MgcmVuZGVyaW5nIGVuZ2luZSBhbmQgcGl4ZWwgcm91bmRpbmcgYWxnb3JpdGhtLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiR2aXN1YWwtZ3JpZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgZ3JpZCBjb2xvci4gU2V0IHdpdGggYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBDb2xvclxuXG4kdmlzdWFsLWdyaWQtY29sb3I6ICNlZWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBgei1pbmRleGAgcHJvcGVydHkgb2YgdGhlIHZpc3VhbCBncmlkLiBDYW4gYmUgYGJhY2tgIChiZWhpbmQgY29udGVudCkgb3IgYGZyb250YCAoaW4gZnJvbnQgb2YgY29udGVudCkuIFNldCB3aXRoIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG5cbiR2aXN1YWwtZ3JpZC1pbmRleDogYmFjayAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIG9wYWNpdHkgcHJvcGVydHkgb2YgdGhlIHZpc3VhbCBncmlkLiBTZXQgd2l0aCBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAodW5pdGxlc3MpXG5cbiR2aXN1YWwtZ3JpZC1vcGFjaXR5OiAwLjQgIWRlZmF1bHQ7XG5cbiR2aXN1YWwtZ3JpZC1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXNhYmxlIGFsbCBkZXByZWNhdGlvbiB3YXJuaW5ncy4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJGRpc2FibGUtd2FybmluZ3M6IGZhbHNlICFkZWZhdWx0O1xuXG5AbWl4aW4gLW5lYXQtd2FybigkbWVzc2FnZSkge1xuICBAaWYgJGRpc2FibGUtd2FybmluZ3MgPT0gZmFsc2Uge1xuICAgIEB3YXJuIFwiI3skbWVzc2FnZX1cIjtcbiAgfVxufVxuIiwiJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0O1xuJGZnLWNvbHVtbjogJGNvbHVtbjtcbiRmZy1ndXR0ZXI6ICRndXR0ZXI7XG4kZmctbWF4LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4kY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFkZWZhdWx0O1xuJGxheW91dC1kaXJlY3Rpb246IExUUiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zICE9ICRncmlkLWNvbHVtbnMge1xuICAgICRwYXJlbnQtY29sdW1uczogJGNvbHVtbnMgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRwYXJlbnQtY29sdW1ucztcbn1cblxuQGZ1bmN0aW9uIGlzLWRpc3BsYXktdGFibGUoJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlLCAkZGlzcGxheSkge1xuICBAcmV0dXJuICRjb250YWluZXItaXMtZGlzcGxheS10YWJsZSA9PSB0cnVlIG9yICRkaXNwbGF5ID09IHRhYmxlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IHRydWUge1xuICBodG1sIHsgLy8gaHR0cDovL2JpdC5seS8xcWsydFZSXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gICoge1xuICAgICYsXG4gICAgJjo6YWZ0ZXIsXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBSZW1vdmVzIHRoZSBlbGVtZW50J3MgZ3V0dGVyIG1hcmdpbiwgcmVnYXJkbGVzcyBvZiBpdHMgcG9zaXRpb24gaW4gdGhlIGdyaWQgaGllcmFyY2h5IG9yIGRpc3BsYXkgcHJvcGVydHkuIEl0IGNhbiB0YXJnZXQgYSBzcGVjaWZpYyBlbGVtZW50LCBvciBldmVyeSBgbnRoLWNoaWxkYCBvY2N1cnJlbmNlLiBXb3JrcyBvbmx5IHdpdGggYGJsb2NrYCBsYXlvdXRzLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnkgW2Jsb2NrXVxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHMuIFN1cHBvcnRlZCBhcmd1bWVudHMgYXJlIGBudGgtY2hpbGRgIHNlbGVjdG9ycyAodGFyZ2V0cyBhIHNwZWNpZmljIHBzZXVkbyBlbGVtZW50KSBhbmQgYGF1dG9gICh0YXJnZXRzIGBsYXN0LWNoaWxkYCkuXG4vLy9cbi8vLyAgIFdoZW4gcGFzc2VkIGFuIGBudGgtY2hpbGRgIGFyZ3VtZW50IG9mIHR5cGUgYCpuYCB3aXRoIGBibG9ja2AgZGlzcGxheSwgdGhlIG9tZWdhIG1peGluIGF1dG9tYXRpY2FsbHkgYWRkcyBhIGNsZWFyIHRvIHRoZSBgKm4rMWAgdGggZWxlbWVudC4gTm90ZSB0aGF0IGNvbXBvc2l0ZSBhcmd1bWVudHMgc3VjaCBhcyBgMm4rMWAgZG8gbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlLlxuLy8vXG4vLy8gICAqKkRlcHJlY2F0aW9uIHdhcm5pbmcqKjogVGhlIG9tZWdhIG1peGluIHdpbGwgbm8gbG9uZ2VyIHRha2UgYSBgJGRpcmVjdGlvbmAgYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIGByb3coJGRpcmVjdGlvbilgIG9yIHNldCBgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbmAgaW5zdGVhZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBvbWVnYTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLm50aC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb21lZ2EoNG4pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5udGgtZWxlbWVudDpudGgtY2hpbGQoNG4pIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAubnRoLWVsZW1lbnQ6bnRoLWNoaWxkKDRuKzEpIHtcbi8vLyAgICAgY2xlYXI6IGxlZnQ7XG4vLy8gICB9XG5cbkBtaXhpbiBvbWVnYSgkcXVlcnk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gICR0YWJsZTogYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KTtcbiAgJGF1dG86IGJlbG9uZ3MtdG8oYXV0bywgJHF1ZXJ5KTtcblxuICBAaWYgJGRpcmVjdGlvbiAhPSBkZWZhdWx0IHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIG9tZWdhIG1peGluIHdpbGwgbm8gbG9uZ2VyIHRha2UgYSAkZGlyZWN0aW9uIGFyZ3VtZW50LiBUbyBjaGFuZ2UgdGhlIGxheW91dCBkaXJlY3Rpb24sIHVzZSB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICB9XG5cbiAgQGlmICR0YWJsZSB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBvbWVnYSBtaXhpbiBubyBsb25nZXIgcmVtb3ZlcyBwYWRkaW5nIGluIHRhYmxlIGxheW91dHMuXCIpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiBjb250YWlucy1kaXNwbGF5LXZhbHVlKCRxdWVyeSkgYW5kICR0YWJsZSA9PSBmYWxzZSB7XG4gICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQoJHF1ZXJ5LCAkZGlyZWN0aW9uKTtcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgbnRoLWNoaWxkKG50aCgkcXVlcnksIDEpLCAkZGlyZWN0aW9uKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUb28gbWFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBvbWVnYSgpIG1peGluLlwiKTtcbiAgfVxufVxuXG5AbWl4aW4gbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSkge1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIgYW5kIHVuaXQoJHF1ZXJ5KSA9PSBcIm5cIiB7XG4gICAgJjpudGgtY2hpbGQoI3skcXVlcnl9KzEpIHtcbiAgICAgIGNsZWFyOiAkb3Bwb3NpdGUtZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCBhIG91dGVyIGNvbnRhaW5lciBieSBjZW50cmluZyBpdCBpbiB0aGUgdmlld3BvcnQsIGNsZWFyaW5nIGl0cyBmbG9hdHMsIGFuZCBzZXR0aW5nIGl0cyBgbWF4LXdpZHRoYC5cbi8vLyBBbHRob3VnaCBvcHRpb25hbCwgdXNpbmcgYG91dGVyLWNvbnRhaW5lcmAgaXMgcmVjb21tZW5kZWQuIFRoZSBtaXhpbiBjYW4gYmUgY2FsbGVkIG9uIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBwZXIgcGFnZSwgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgbmVzdGVkLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgW3VuaXRdfSAkbG9jYWwtbWF4LXdpZHRoIFskbWF4LXdpZHRoXVxuLy8vICAgTWF4IHdpZHRoIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQuIENhbiBiZSBhIHBlcmNlbnRhZ2Ugb3IgYSBtZWFzdXJlLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcigxMDAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgKnpvb206IDE7XG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4vLy8gICAgIG1hcmdpbi1yaWdodDogYXV0bztcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6YmVmb3JlLCAuZWxlbWVudDphZnRlciB7XG4vLy8gICAgIGNvbnRlbnQ6IFwiIFwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgIH1cblxuQG1peGluIG91dGVyLWNvbnRhaW5lcigkbG9jYWwtbWF4LXdpZHRoOiAkbWF4LXdpZHRoKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXgtd2lkdGg6ICRsb2NhbC1tYXgtd2lkdGg7XG4gIG1hcmdpbjoge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW4gZWxlbWVudCBzaG91bGQgc3Bhbi4gSWYgdGhlIHNlbGVjdG9yIGlzIG5lc3RlZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgaXRzIHBhcmVudCBlbGVtZW50IHNob3VsZCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgYXMgd2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNwYW5cbi8vLyAgIEEgbGlzdCBjb250YWluaW5nIGAkY29sdW1uc2AsIHRoZSB1bml0bGVzcyBudW1iZXIgb2YgY29sdW1ucyB0aGUgZWxlbWVudCBzcGFucyAocmVxdWlyZWQpLCBhbmQgYCRjb250YWluZXItY29sdW1uc2AsIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgcGFyZW50IGVsZW1lbnQgc3BhbnMgKG9wdGlvbmFsKS5cbi8vL1xuLy8vICAgSWYgb25seSBvbmUgdmFsdWUgaXMgcGFzc2VkLCBpdCBpcyBhc3N1bWVkIHRoYXQgaXQncyBgJGNvbHVtbnNgIGFuZCB0aGF0IHRoYXQgYCRjb250YWluZXItY29sdW1uc2AgaXMgZXF1YWwgdG8gYCRncmlkLWNvbHVtbnNgLCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4vLy9cbi8vLyAgIFRoZSB2YWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCB3aXRoIGFueSBzdHJpbmcgc3VjaCBhcyBgb2ZgLCBgL2AsIGV0Yy5cbi8vL1xuLy8vICAgYCRjb2x1bW5zYCBhbHNvIGFjY2VwdHMgZGVjaW1hbHMgZm9yIHdoZW4gaXQncyBuZWNlc3NhcnkgdG8gYnJlYWsgb3V0IG9mIHRoZSBzdGFuZGFyZCBncmlkLiBFLmcuIFBhc3NpbmcgYDIuNGAgaW4gYSBzdGFuZGFyZCAxMiBjb2x1bW4gZ3JpZCB3aWxsIGRpdmlkZSB0aGUgcm93IGludG8gNSBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja11cbi8vLyAgIFNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQuIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0IG9mIHRoZSBlbGVtZW50IHRvIGBibG9ja2AuXG4vLy9cbi8vLyAgIElmIHBhc3NlZCBgYmxvY2stY29sbGFwc2VgLCBpdCBhbHNvIHJlbW92ZXMgdGhlIG1hcmdpbiBndXR0ZXIgYnkgYWRkaW5nIGl0IHRvIHRoZSBlbGVtZW50IHdpZHRoLlxuLy8vXG4vLy8gICBJZiBwYXNzZWQgYHRhYmxlYCwgaXQgc2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSB0byBgdGFibGUtY2VsbGAgYW5kIGNhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBlbGVtZW50IHdpdGhvdXQgdGFraW5nIGd1dHRlcnMgaW50byBjb25zaWRlcmF0aW9uLiBUaGUgcmVzdWx0IGRvZXMgbm90IGFsaWduIHdpdGggdGhlIGJsb2NrLWJhc2VkIGdyaWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vXG4vLy8gICAgLm5lc3RlZC1lbGVtZW50IHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucygyIG9mIDYpO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMi4zNTc2NSU7XG4vLy8gICAgIHdpZHRoOiA0OC44MjExNyU7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50IC5uZXN0ZWQtZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiA0LjgyOTE2JTtcbi8vLyAgICAgd2lkdGg6IDMwLjExMzg5JTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQgLm5lc3RlZC1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG5cbkBtaXhpbiBzcGFuLWNvbHVtbnMoJHNwYW46ICRjb2x1bW5zIG9mICRjb250YWluZXItY29sdW1ucywgJGRpc3BsYXk6IGJsb2NrKSB7XG4gICRjb2x1bW5zOiBudGgoJHNwYW4sIDEpO1xuICAkY29udGFpbmVyLWNvbHVtbnM6IGNvbnRhaW5lci1zcGFuKCRzcGFuKTtcblxuICAkcGFyZW50LWNvbHVtbnM6IGdldC1wYXJlbnQtY29sdW1ucygkY29udGFpbmVyLWNvbHVtbnMpICFnbG9iYWw7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgJGRpc3BsYXktdGFibGU6IGlzLWRpc3BsYXktdGFibGUoJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlLCAkZGlzcGxheSk7XG5cbiAgQGlmICRkaXNwbGF5LXRhYmxlICB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyAvICRjb250YWluZXItY29sdW1ucyk7XG4gIH0gQGVsc2Uge1xuICAgIGZsb2F0OiAjeyRvcHBvc2l0ZS1kaXJlY3Rpb259O1xuXG4gICAgQGlmICRkaXNwbGF5ICE9IG5vLWRpc3BsYXkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgQGlmICRkaXNwbGF5ID09IGNvbGxhcHNlIHtcbiAgICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgJ2NvbGxhcHNlJyBhcmd1bWVudCB3aWxsIGJlIGRlcHJlY2F0ZWQuIFVzZSAnYmxvY2stY29sbGFwc2UnIGluc3RlYWQuXCIpO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSBvciAkZGlzcGxheSA9PSBibG9jay1jb2xsYXBzZSB7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpICsgZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERlc2lnbmF0ZXMgdGhlIGVsZW1lbnQgYXMgYSByb3cgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZCBsYXlvdXQuIEl0IGNsZWFycyB0aGUgZmxvYXRzIG9uIHRoZSBlbGVtZW50IGFuZCBzZXRzIGl0cyBkaXNwbGF5IHByb3BlcnR5LiBSb3dzIGNhbid0IGJlIG5lc3RlZCwgYnV0IHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIHJvdyBlbGVtZW504oCUd2l0aCBkaWZmZXJlbnQgZGlzcGxheSBwcm9wZXJ0aWVz4oCUcGVyIGxheW91dC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbZGVmYXVsdF1cbi8vLyAgU2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGRpc3BsYXkgY29udGV4dCB0aGF0IHdpbGwgYmUgdXNlZCBieSBpdHMgY2hpbGRyZW4uIENhbiBiZSBgYmxvY2tgIG9yIGB0YWJsZWAuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpcmVjdGlvbiBbJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbl1cbi8vLyAgU2V0cyB0aGUgbGF5b3V0IGRpcmVjdGlvbi4gQ2FuIGJlIGBMVFJgIChsZWZ0LXRvLXJpZ2h0KSBvciBgUlRMYCAocmlnaHQtdG8tbGVmdCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIHJvdygpO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICAqem9vbTogMTtcbi8vLyAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgfVxuLy8vXG4vLy8gLmVsZW1lbnQ6YmVmb3JlLCAuZWxlbWVudDphZnRlciB7XG4vLy8gICBjb250ZW50OiBcIiBcIjtcbi8vLyAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vIH1cbi8vL1xuLy8vIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgIGNsZWFyOiBib3RoO1xuLy8vIH1cblxuQG1peGluIHJvdygkZGlzcGxheTogZGVmYXVsdCwgJGRpcmVjdGlvbjogJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiAhPSAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICRkaXJlY3Rpb24gYXJndW1lbnQgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG4gIH1cblxuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRpcmVjdGlvbiAhZ2xvYmFsO1xuXG4gIEBpZiAkZGlzcGxheSAhPSBkZWZhdWx0IHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICRkaXNwbGF5IGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpc3BsYXkoKXsuLi59IG1peGluLlwiKTtcbiAgfVxuXG4gIEBpZiAkZGlzcGxheSA9PSB0YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgQGluY2x1ZGUgZmlsbC1wYXJlbnQ7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6IHRydWUgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiBmYWxzZSAhZ2xvYmFsO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBUcmFuc2xhdGVzIGFuIGVsZW1lbnQgaG9yaXpvbnRhbGx5IGJ5IGEgbnVtYmVyIG9mIGNvbHVtbnMuIFBvc2l0aXZlIGFyZ3VtZW50cyBzaGlmdCB0aGUgZWxlbWVudCB0byB0aGUgYWN0aXZlIGxheW91dCBkaXJlY3Rpb24sIHdoaWxlIG5lZ2F0aXZlIG9uZXMgc2hpZnQgaXQgdG8gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICRuLWNvbHVtbnMgWzFdXG4vLy8gICBOdW1iZXIgb2YgY29sdW1ucyBieSB3aGljaCB0aGUgZWxlbWVudCBzaGlmdHMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2hpZnQoLTMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIG91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogLTI1LjU4OTQxJTtcbi8vLyAgIH1cblxuQG1peGluIHNoaWZ0KCRuLWNvbHVtbnM6IDEpIHtcbiAgQGluY2x1ZGUgc2hpZnQtaW4tY29udGV4dCgkbi1jb2x1bW5zKTtcbn1cblxuLy8vIFRyYW5zbGF0ZXMgYW4gZWxlbWVudCBob3Jpem9udGFsbHkgYnkgYSBudW1iZXIgb2YgY29sdW1ucywgaW4gYSBzcGVjaWZpYyBuZXN0aW5nIGNvbnRleHQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaGlmdFxuLy8vICAgQSBsaXN0IGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIHNoaWZ0IChgJGNvbHVtbnNgKSBhbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIG9mIHRoZSBwYXJlbnQgZWxlbWVudCAoYCRjb250YWluZXItY29sdW1uc2ApLlxuLy8vXG4vLy8gICBUaGUgdHdvIHZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIHdpdGggYW55IHN0cmluZyBzdWNoIGFzIGBvZmAsIGAvYCwgZXRjLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNoaWZ0KC0zIG9mIDYpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIG91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogLTUyLjQxNDU4JTtcbi8vLyAgIH1cblxuQG1peGluIHNoaWZ0LWluLWNvbnRleHQoJHNoaWZ0OiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMpIHtcbiAgJG4tY29sdW1uczogbnRoKCRzaGlmdCwgMSk7XG4gICRwYXJlbnQtY29sdW1uczogY29udGFpbmVyLXNoaWZ0KCRzaGlmdCkgIWdsb2JhbDtcblxuICAkZGlyZWN0aW9uOiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQtZGlyZWN0aW9uLCAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKTtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKTtcblxuICBtYXJnaW4tI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTogJG4tY29sdW1ucyAqIGZsZXgtZ3JpZCgxLCAkcGFyZW50LWNvbHVtbnMpICsgJG4tY29sdW1ucyAqIGZsZXgtZ3V0dGVyKCRwYXJlbnQtY29sdW1ucyk7XG5cbiAgLy8gUmVzZXQgbmVzdGluZyBjb250ZXh0XG4gICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQWRkcyBwYWRkaW5nIHRvIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcGFkZGluZyBbZmxleC1ndXR0ZXIoKV1cbi8vLyAgIEEgbGlzdCBvZiBwYWRkaW5nIHZhbHVlKHMpIHRvIHVzZS4gUGFzc2luZyBgZGVmYXVsdGAgaW4gdGhlIGxpc3Qgd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBhZGRpbmcgdmFsdWUuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkKDMwcHggLTIwcHggMTBweCBkZWZhdWx0KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgcGFkZGluZzogMzBweCAtMjBweCAxMHB4IDIuMzU3NjUlO1xuLy8vICAgfVxuXG5AbWl4aW4gcGFkKCRwYWRkaW5nOiBmbGV4LWd1dHRlcigpKSB7XG4gICRwYWRkaW5nLWxpc3Q6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcGFkZGluZyB7XG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gJ2RlZmF1bHQnLCBmbGV4LWd1dHRlcigpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWxpc3Q6IGpvaW4oJHBhZGRpbmctbGlzdCwgJHZhbHVlKTtcbiAgfVxuICBwYWRkaW5nOiAkcGFkZGluZy1saXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRm9yY2VzIHRoZSBlbGVtZW50IHRvIGZpbGwgaXRzIHBhcmVudCBjb250YWluZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZmlsbC1wYXJlbnQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuLy8vICAgfVxuXG5AbWl4aW4gZmlsbC1wYXJlbnQoKSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBpZiAkYm9yZGVyLWJveC1zaXppbmcgPT0gZmFsc2Uge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE91dHB1dHMgYSBtZWRpYS1xdWVyeSBibG9jayB3aXRoIGFuIG9wdGlvbmFsIGdyaWQgY29udGV4dCAodGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGdyaWQpLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnlcbi8vLyAgIEEgbGlzdCBvZiBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhbmQgdmFsdWVzLCB3aGVyZSBlYWNoIGAkZmVhdHVyZWAgc2hvdWxkIGhhdmUgYSBjb3JyZXNwb25kaW5nIGAkdmFsdWVgLlxuLy8vICAgRm9yIGEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIGAkZmVhdHVyZWAsIGNsaWNrIFtoZXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWExKS5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBgJHZhbHVlYCBpbiBgJHF1ZXJ5YCwgYCRkZWZhdWx0LWZlYXR1cmVgIGlzIGdvaW5nIHRvIGJlIHVzZWQuXG4vLy9cbi8vLyAgIFRoZSBudW1iZXIgb2YgdG90YWwgY29sdW1ucyBpbiB0aGUgZ3JpZCBjYW4gYmUgc2V0IGJ5IHBhc3NpbmcgYCRjb2x1bW5zYCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IChvdmVycmlkZXMgYCR0b3RhbC1jb2x1bW5zYCkuXG4vLy9cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICR0b3RhbC1jb2x1bW5zIFskZ3JpZC1jb2x1bW5zXVxuLy8vICAgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgaW4gdGhlIG5ldyBncmlkIGNvbnRleHQuIENhbiBiZSBzZXQgYXMgYSBzaG9ydGhhbmQgaW4gdGhlIGZpcnN0IHBhcmFtZXRlci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLnJlc3BvbnNpdmUtZWxlbWVudCB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSg3NjlweCkge1xuLy8vICAgICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyAgLm5ldy1jb250ZXh0LWVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1lZGlhKG1pbi13aWR0aCAzMjBweCBtYXgtd2lkdGggNDgwcHgsIDYpIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbi8vLyAgICAucmVzcG9uc2l2ZS1lbGVtZW50IHtcbi8vLyAgICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICBtYXJnaW4tcmlnaHQ6IDIuMzU3NjUlO1xuLy8vICAgICAgd2lkdGg6IDQ4LjgyMTE3JTtcbi8vLyAgICB9XG4vLy9cbi8vLyAgICAucmVzcG9uc2l2ZS1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMyMHB4KSBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbi8vLyAgICAubmV3LWNvbnRleHQtZWxlbWVudCB7XG4vLy8gICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiA0LjgyOTE2JTtcbi8vLyAgICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgIH1cbi8vL1xuLy8vICAgIC5uZXctY29udGV4dC1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgIH1cbi8vLyAgfVxuXG5AbWl4aW4gbWVkaWEoJHF1ZXJ5OiAkZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zICFnbG9iYWw7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJGxvb3AtdG86IGxlbmd0aCgkcXVlcnkpO1xuICAgICRtZWRpYS1xdWVyeTogXCJzY3JlZW4gYW5kIFwiO1xuICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucyAhZ2xvYmFsO1xuXG4gICAgQGlmIGlzLW5vdChpcy1ldmVuKGxlbmd0aCgkcXVlcnkpKSkge1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgJGxvb3AtdG8pICFnbG9iYWw7XG4gICAgICAkbG9vcC10bzogJGxvb3AtdG8gLSAxO1xuICAgIH1cblxuICAgICRpOiAxO1xuICAgIEB3aGlsZSAkaSA8PSAkbG9vcC10byB7XG4gICAgICAkbWVkaWEtcXVlcnk6ICRtZWRpYS1xdWVyeSArIFwiKFwiICsgbnRoKCRxdWVyeSwgJGkpICsgXCI6IFwiICsgbnRoKCRxdWVyeSwgJGkgKyAxKSArIFwiKSBcIjtcblxuICAgICAgQGlmICgkaSArIDEpICE9ICRsb29wLXRvIHtcbiAgICAgICAgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcImFuZCBcIjtcbiAgICAgIH1cblxuICAgICAgJGk6ICRpICsgMjtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skbWVkaWEtcXVlcnl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeTokZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgYnJlYWtwb2ludCgpIG1peGluIHdhcyByZW5hbWVkIHRvIG1lZGlhKCkgaW4gTmVhdCAxLjAuIFBsZWFzZSB1cGRhdGUgeW91ciBwcm9qZWN0IHdpdGggdGhlIG5ldyBzeW50YXggYmVmb3JlIHRoZSBuZXh0IHZlcnNpb24gYnVtcC5cIik7XG5cbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMyB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgMyk7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gNCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkgYW5kIChudGgoJHF1ZXJ5LCAzKTogbnRoKCRxdWVyeSwgNCkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDUge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCA1KTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGJyZWFrcG9pbnQoKS4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlwiKTtcbiAgfVxufVxuXG5AbWl4aW4gbnRoLW9tZWdhKCRudGgsICRkaXNwbGF5OiBibG9jaywgJGRpcmVjdGlvbjogZGVmYXVsdCkge1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIG50aC1vbWVnYSgpIG1peGluIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugb21lZ2EoKSBpbnN0ZWFkLlwiKTtcbiAgQGluY2x1ZGUgb21lZ2EoJG50aCAkZGlzcGxheSwgJGRpcmVjdGlvbik7XG59XG5cbi8vLyBSZXNldHMgdGhlIGFjdGl2ZSBkaXNwbGF5IHByb3BlcnR5IHRvIGBibG9ja2AuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBjaGFuZ2luZyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBpbiBhIHNpbmdsZSByb3cuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KHRhYmxlKTtcbi8vLyAgICAgLy8gQ29udGV4dCBjaGFuZ2VkIHRvIHRhYmxlIGRpc3BsYXlcbi8vLyAgIH1cbi8vL1xuLy8vICAgQGluY2x1ZGUgcmVzZXQtZGlzcGxheTtcbi8vLyAgIC8vIENvbnRleHQgaXMgcmVzZXQgdG8gYmxvY2sgZGlzcGxheVxuXG5AbWl4aW4gcmVzZXQtZGlzcGxheSB7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlJlc2V0dGluZyAkZGlzcGxheSB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXNwbGF5KCl7Li4ufSBtaXhpbi5cIik7XG59XG5cbi8vLyBSZXNldHMgdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlIHNldCBpbiBgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbmAuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBjaGFuZ2luZyB0aGUgbGF5b3V0IGRpcmVjdGlvbiBpbiBhIHNpbmdsZSByb3cuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KCRkaXJlY3Rpb246IFJUTCk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byByaWdodC10by1sZWZ0XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJlc2V0LWxheW91dC1kaXJlY3Rpb247XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGxlZnQtdG8tcmlnaHRcblxuQG1peGluIHJlc2V0LWxheW91dC1kaXJlY3Rpb24ge1xuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiAhZ2xvYmFsO1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiUmVzZXR0aW5nICRkaXJlY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG59XG5cbi8vLyBSZXNldHMgYm90aCB0aGUgYWN0aXZlIGxheW91dCBkaXJlY3Rpb24gYW5kIHRoZSBhY3RpdmUgZGlzcGxheSBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSByb3codGFibGUsIFJUTCk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byB0YWJsZSB0YWJsZSBhbmQgcmlnaHQtdG8tbGVmdFxuLy8vICAgfVxuLy8vXG4vLy8gICBAaW5jbHVkZSByZXNldC1hbGw7XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGJsb2NrIGRpc3BsYXkgYW5kIGxlZnQtdG8tcmlnaHRcblxuQG1peGluIHJlc2V0LWFsbCB7XG4gIEBpbmNsdWRlIHJlc2V0LWRpc3BsYXk7XG4gIEBpbmNsdWRlIHJlc2V0LWxheW91dC1kaXJlY3Rpb247XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBtaXhpbiBncmlkLWNvbHVtbi1ncmFkaWVudCgkdmFsdWVzLi4uKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICN7JHZhbHVlc30pXCIpO1xufVxuXG5AaWYgJHZpc3VhbC1ncmlkID09IHRydWUgb3IgJHZpc3VhbC1ncmlkID09IHllcyB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ncmFkaWVudChncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zKSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICAgIG9wYWNpdHk6ICR2aXN1YWwtZ3JpZC1vcGFjaXR5O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpZiAkdmlzdWFsLWdyaWQtaW5kZXggPT0gYmFjayB7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkdmlzdWFsLWdyaWQtaW5kZXggPT0gZnJvbnQge1xuICAgICAgei1pbmRleDogOTk5OTtcbiAgICB9XG5cbiAgICBAZWFjaCAkYnJlYWtwb2ludCBpbiAkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHMge1xuICAgICAgQGlmICRicmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ncmFkaWVudChncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoYW5nZXMgdGhlIGRpc3BsYXkgcHJvcGVydHkgdXNlZCBieSBvdGhlciBtaXhpbnMgY2FsbGVkIGluIHRoZSBjb2RlIGJsb2NrIGFyZ3VtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja11cbi8vLyAgIERpc3BsYXkgdmFsdWUgdG8gYmUgdXNlZCB3aXRoaW4gdGhlIGJsb2NrLiBDYW4gYmUgYHRhYmxlYCBvciBgYmxvY2tgLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgQGluY2x1ZGUgZGlzcGxheS1jb250ZXh0KHRhYmxlKSB7XG4vLy8gICAgLmRpc3BsYXktdGFibGUge1xuLy8vICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3Ncbi8vLyAgIC5kaXNwbGF5LXRhYmxlIHtcbi8vLyAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4vLy8gICAgICAuLi5cbi8vLyAgIH1cblxuQG1peGluIGRpc3BsYXktY29udGV4dCgkZGlzcGxheTogYmxvY2spIHtcbiAgJHNjb3BlLWRpc3BsYXk6ICRjb250YWluZXItZGlzcGxheS10YWJsZTtcbiAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiAkZGlzcGxheSA9PSB0YWJsZSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogJHNjb3BlLWRpc3BsYXkgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoYW5nZXMgdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSB1c2VkIGJ5IG90aGVyIG1peGlucyBjYWxsZWQgaW4gdGhlIGNvZGUgYmxvY2sgYXJndW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpcmVjdGlvbiBbbGVmdC10by1yaWdodF1cbi8vLyAgIExheW91dCBkaXJlY3Rpb24gdG8gYmUgdXNlZCB3aXRoaW4gdGhlIGJsb2NrLiBDYW4gYmUgYGxlZnQtdG8tcmlnaHRgIG9yIGByaWdodC10by1sZWZ0YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgQGluY2x1ZGUgZGlyZWN0aW9uLWNvbnRleHQocmlnaHQtdG8tbGVmdCkge1xuLy8vICAgIC5yaWdodC10by1sZWZ0LWJsb2NrIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLnJpZ2h0LXRvLWxlZnQtYmxvY2sge1xuLy8vICAgICBmbG9hdDogcmlnaHQ7XG4vLy8gICAgICAuLi5cbi8vLyAgIH1cblxuQG1peGluIGRpcmVjdGlvbi1jb250ZXh0KCRkaXJlY3Rpb246IGxlZnQtdG8tcmlnaHQpIHtcbiAgJHNjb3BlLWRpcmVjdGlvbjogJGxheW91dC1kaXJlY3Rpb247XG5cbiAgQGlmIHRvLWxvd2VyLWNhc2UoJGRpcmVjdGlvbikgPT0gXCJsZWZ0LXRvLXJpZ2h0XCIge1xuICAgICRsYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWdsb2JhbDtcbiAgfSBAZWxzZSBpZiB0by1sb3dlci1jYXNlKCRkaXJlY3Rpb24pID09IFwicmlnaHQtdG8tbGVmdFwiIHtcbiAgICAkbGF5b3V0LWRpcmVjdGlvbjogUlRMICFnbG9iYWw7XG4gIH1cblxuICBAY29udGVudDtcblxuICAkbGF5b3V0LWRpcmVjdGlvbjogJHNjb3BlLWRpcmVjdGlvbiAhZ2xvYmFsO1xufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovXG5cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZ1xuICogICAgdXNlciB6b29tLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTEgYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgd2hlbiBmb2N1c2VkIGFuZCBhbHNvIG1vdXNlIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG4vLyBoMSB7XG4vLyAgIGZvbnQtc2l6ZTogMmVtO1xuLy8gICBtYXJnaW46IDAuNjdlbSAwO1xuLy8gfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5ociB7XG4gIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuICogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbiAgbWFyZ2luOiAwOyAvKiAzICovXG59XG5cbi8qKlxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cbiAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG4gKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lXG4gKiAgICAoaW5jbHVkZSBgLW1vemAgdG8gZnV0dXJlLXByb29mKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCIvKipcbiAqIFJlc2V0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCYXNlZCBvbiBodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0XG4gKi9cblxuaHRtbCxcbmJvZHksXG5cbi8qIFN0cnVjdHVyZXMgKi9cbmRpdixcbnNwYW4sXG5hcHBsZXQsXG5vYmplY3QsXG5pZnJhbWUsXG5cbi8qIFRleHQgKi9cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbnAsXG5ibG9ja3F1b3RlLFxucHJlLFxuYSxcbmFiYnIsXG5hY3JvbnltLFxuYWRkcmVzcyxcbmJpZyxcbmNpdGUsXG5jb2RlLFxuZGVsLFxuZGZuLFxuZW0sXG5mb250LFxuaW1nLFxuaW5zLFxua2JkLFxucSxcbnMsXG5zYW1wLFxuc21hbGwsXG5zdHJpa2UsXG5zdHJvbmcsXG5zdWIsXG5zdXAsXG50dCxcbnZhcixcbmIsXG51LFxuaSxcbmNlbnRlcixcblxuLyogTGlzdHMgKi9cbmRsLFxuZHQsXG5kZCxcbm9sLFxudWwsXG5saSxcblxuLyogRm9ybXMgKi9cbmZpZWxkc2V0LFxuZm9ybSxcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEsXG5sYWJlbCxcbmxlZ2VuZCxcblxuLyogVGFibGVzICovXG50YWJsZSxcbmNhcHRpb24sXG50Ym9keSxcbnRmb290LFxudGhlYWQsXG50cixcbnRoLFxudGQge1xuICBtYXJnaW46MHB4O1xuICBwYWRkaW5nOjBweDtcbiAgYm9yZGVyOjBweDtcbiAgb3V0bGluZTowcHg7XG4gIGZvbnQtc2l6ZToxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgbGluZS1oZWlnaHQ6aW5oZXJpdDtcbiAgfVxuXG5vbCxcbnVsLFxuLml0ZW0tbGlzdCB1bCxcbi5pdGVtLWxpc3QgdWwgbGkge1xuICBsaXN0LXN0eWxlOm5vbmU7XG4gIH1cblxuYmxvY2txdW90ZSxcbnEgeyBxdW90ZXM6bm9uZTsgfVxuXG5ibG9ja3F1b3RlOmJlZm9yZSxcbmJsb2NrcXVvdGU6YWZ0ZXIsXG5xOmJlZm9yZSwgcTphZnRlciB7XG4gIGNvbnRlbnQ6Jyc7XG4gIGNvbnRlbnQ6bm9uZTtcbiAgfVxuXG4vKiByZW1lbWJlciB0byBkZWZpbmUgZm9jdXMgc3R5bGVzISAqL1xuOmZvY3VzIHsgb3V0bGluZTowcHg7IH1cblxuLyogcmVtZW1iZXIgdG8gaGlnaGxpZ2h0IGluc2VydHMgc29tZWhvdyEgKi9cbmlucyB7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9XG5kZWwgeyB0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoOyB9IiwiLyohIG5vcm1hbGl6ZS1vcGVudHlwZS5jc3MgdjAuMi4zIHwgTUlUIExpY2Vuc2UgfCBrZW5uZXRob3JtYW5keS5jb20vam91cm5hbC9ub3JtYWxpemUtb3BlbnR5cGUtY3NzICovXG4vKipcbiAqIDEuIEluaGVyaXQgc3R5bGUgaXNzdWVzIHdpdGggY3VzdG9tIHNlbGVjdGlvbnMsIHBlciByb2JzdGVybGluaS5jby51ay9qb3VybmFsL29wZW50eXBlLWFuZC1zZWxlY3Rpb24tZG9udC1taXhcbiAqIDIuIFR1cm4gb24ga2VybmluZywgc3RhbmRhcmQgbGlnYXR1cmVzLCBhbmQgcHJvcG9ydGlvbmFsLCBvbGRzdHlsZSBudW1lcmFsc1xuICogICAgVHVybiBvZmYgYWxsIG90aGVyIGxpZ2F0dXJlcywgdGFidWxhciwgbGluaW5nIG51bWVyYWxzLCBhbmQgYWx0ZXJuYXRlc1xuICogMy4gSGFyZC1jb2RlcyBmYWxsYmFjayB0ZXh0IHNlbGVjdGlvbiBmb3IgaXNzdWUgIzE4LCBjb2xvciBpcyBDaHJvbWXigJlzIHBlciB2aWEgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTYwOTQ5MzEvODY0Nzk5XG4gKi9cbjo6LW1vei1zZWxlY3Rpb24ge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgLyogMS4gKi9cbiAgdGV4dC1zaGFkb3c6IGluaGVyaXQ7XG4gIC8qIDIuICovXG4gIGJhY2tncm91bmQtY29sb3I6ICNBQ0NFRjc7XG4gIC8qIDMuICovIH1cbjo6c2VsZWN0aW9uIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEuICovXG4gIHRleHQtc2hhZG93OiBpbmhlcml0O1xuICAvKiAyLiAqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUNDRUY3O1xuICAvKiAzLiAqLyB9XG5cbmh0bWwsIGJvZHksIHRhYmxlIHtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDAsIFwiZGxpZ1wiIDA7XG4gICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwLCBcImRsaWdcIiAwO1xuICAgICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMCwgXCJkbGlnXCIgMDtcbiAgLyogMi4gKi8gfVxuXG4vKiBIZWFkaW5nc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gVHVybiBvbiBkaXNjcmV0aW9uYXJ5IGxpZ2F0dXJlcyBmb3IgbGFyZ2VyIGhlYWRpbmdzXG4gKi9cbmgxLCBoMiwgaDMge1xuICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMCwgXCJkbGlnXCIgMTtcbiAgICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDAsIFwiZGxpZ1wiIDE7XG4gICAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwLCBcImRsaWdcIiAxO1xuICAvKiAxLiAqLyB9XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBDaGFuZ2UgYWxsIGxldHRlcnMgdG8gdXBwZXJjYXNlXG4gKiAyLiBUdXJuIG9uIHNtYWxsIGNhcHMgZm9yIHVwcGVyIGFuZCBsb3dlcmNhc2UgbGV0dGVyc1xuICovXG5hYmJyIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgLyogMSAqL1xuICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMCwgXCJzbWNwXCIgMSwgXCJjMnNjXCIgMTtcbiAgICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDAsIFwic21jcFwiIDEsIFwiYzJzY1wiIDE7XG4gICAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwLCBcInNtY3BcIiAxLCBcImMyc2NcIiAxO1xuICAvKiAyICovIH1cblxuLypcbiAqIFRPRE86IFR1cm4gb24gZGlhZ29uYWwgZnJhY3Rpb25zIHdoZXJlIGFwcHJvcHJpYXRlXG4gKi9cbnRpbWUge1xuICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMDtcbiAgICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDA7XG4gICAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwOyB9XG5cbi8qXG4gKiAxLiBUdXJuIG9mZiBrZXJuaW5nIGFuZCBsaWdhdHVyZXMsXG4gKiAgICBUdXJuIG9uIGxpbmluZywgdGFidWxhciBudW1lcmFscywgc2xhc2hlZCB6ZXJvXG4gKi9cbnByZSwga2JkLCBzYW1wLCBjb2RlIHtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDAsIFwibGlnYVwiIDAsIFwiY2FsdFwiIDEsIFwiZGxpZ1wiIDAsIFwicG51bVwiIDAsIFwidG51bVwiIDEsIFwib251bVwiIDAsIFwibG51bVwiIDEsIFwiemVyb1wiIDE7XG4gICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAwLCBcImxpZ2FcIiAwLCBcImNhbHRcIiAxLCBcImRsaWdcIiAwLCBcInBudW1cIiAwLCBcInRudW1cIiAxLCBcIm9udW1cIiAwLCBcImxudW1cIiAxLCBcInplcm9cIiAxO1xuICAgICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMCwgXCJsaWdhXCIgMCwgXCJjYWx0XCIgMSwgXCJkbGlnXCIgMCwgXCJwbnVtXCIgMCwgXCJ0bnVtXCIgMSwgXCJvbnVtXCIgMCwgXCJsbnVtXCIgMSwgXCJ6ZXJvXCIgMTtcbiAgLyogMS4gKi8gfVxuXG4vKipcbiAqIDEuIFR1cm4gb24gcHJvcGVyIHN1cGVyY3JpcHQgbnVtZXJhbHNcbiAqL1xuc3VwIHtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDAsIFwiZGxpZ1wiIDAsIFwic3Vwc1wiIDE7XG4gICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwLCBcImRsaWdcIiAwLCBcInN1cHNcIiAxO1xuICAgICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMCwgXCJkbGlnXCIgMCwgXCJzdXBzXCIgMTtcbiAgLyogMS4gKi8gfVxuXG4vKipcbiAqIDEuIFR1cm4gb24gcHJvcGVyIHN1YnNjcmlwdCBudW1lcmFsc1xuICovXG5zdWIge1xuICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMSwgXCJsbnVtXCIgMCwgXCJkbGlnXCIgMCwgXCJzdWJzXCIgMTtcbiAgICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDEsIFwibG51bVwiIDAsIFwiZGxpZ1wiIDAsIFwic3Vic1wiIDE7XG4gICAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAxLCBcImxudW1cIiAwLCBcImRsaWdcIiAwLCBcInN1YnNcIiAxO1xuICAvKiAxLiAqLyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFRPRE86IEFkZHMgcHJvcGVyIGJ1bGxldHNcbiAqL1xuLypcbiAqIFRPRE86XG4gKiAxLiBBZGRzIGNvdW50ZXJzIGZvciBsaXN0c1xuICogMi4gVXNlIHByb3BlciBudW1lcmFscyBmb3IgbGlzdHNcbiAqL1xuLyoqXG4gKiBBZGRzIHByb3BlciBzbWFsbCBjYXBzXG4gKi9cbi8qKlxuICogVE9ETzogc2NtcCwgc2MyYywgcG51bSwgY2FzZSBzZW5zaXRpdmUgZm9ybXMgZm9yIHBvc3RhbCBjb2Rlc1xuICovXG4vKiBGb3Jtc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gVHVybnMgb24gbGluaW5nLCBwcm9wb3J0aW9uYWwgbnVtZXJhbHMgd2l0aG91dCBjbGFyaWZpZWQgemVyb2VzXG4gKiBUT0RPOiBBZGRpdGlvbmFsIGlucHV0IG1vZGVzIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9JbnB1dCNhdHRyLWlucHV0bW9kZVxuICovXG5pbnB1dFt0eXBlPVwiY29sb3JcIl0sIGlucHV0W3R5cGU9XCJkYXRlXCJdLCBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0sIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSwgaW5wdXRbdHlwZT1cIm51bWJlclwiXSwgaW5wdXRbdHlwZT1cInJhbmdlXCJdLCBpbnB1dFt0eXBlPVwidGVsXCJdLCBpbnB1dFt0eXBlPVwid2Vla1wiXSB7XG4gIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAwLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAxLCBcInRudW1cIiAwLCBcIm9udW1cIiAwLCBcImxudW1cIiAxLCBcInplcm9cIiAwO1xuICAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMCwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMSwgXCJ0bnVtXCIgMCwgXCJvbnVtXCIgMCwgXCJsbnVtXCIgMSwgXCJ6ZXJvXCIgMDtcbiAgICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDAsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDEsIFwidG51bVwiIDAsIFwib251bVwiIDAsIFwibG51bVwiIDEsIFwiemVyb1wiIDA7XG4gIC8qIDEuICovIH1cblxuLyogTG9jYWxpc2F0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogVGFibGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBSZXNldHMgdGFibGVzIHRvIHRoZSBzYW1lIHNldHRpbmdzIGFzIHRoZSBib2R5LlxuICogMi4gVHVybnMgb24gdGFidWxhciwgbGluaW5nIG51bWVyYWxzIGFuZCBzbGFzaGVkIHplcm9cbiAqL1xudGFibGUge1xuICAvKiAxLiovIH1cblxudGJvZHksIGNhcHRpb24ge1xuICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIgMSwgXCJsaWdhXCIgMSwgXCJjYWx0XCIgMSwgXCJwbnVtXCIgMCwgXCJ0bnVtXCIgMSwgXCJvbnVtXCIgMCwgXCJsbnVtXCIgMSwgXCJ6ZXJvXCIgMDtcbiAgICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiIDEsIFwibGlnYVwiIDEsIFwiY2FsdFwiIDEsIFwicG51bVwiIDAsIFwidG51bVwiIDEsIFwib251bVwiIDAsIFwibG51bVwiIDEsIFwiemVyb1wiIDA7XG4gICAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImtlcm5cIiAxLCBcImxpZ2FcIiAxLCBcImNhbHRcIiAxLCBcInBudW1cIiAwLCBcInRudW1cIiAxLCBcIm9udW1cIiAwLCBcImxudW1cIiAxLCBcInplcm9cIiAwO1xuICAvKiAyLiAqLyB9XG4iLCJAZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdQbGF0Zm9ybSc7XG4gIHNyYzogdXJsKCcuLi9ncmFwaGljcy9mb250cy9QbGF0Zm9ybS1NZWRpdW0ud29mZicpLFxuICAgICAgIHVybCgnLi4vZ3JhcGhpY3MvZm9udHMvUGxhdGZvcm0tTWVkaXVtLnR0ZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1NpbXBsb24nO1xuICBzcmM6IHVybCgnLi4vZ3JhcGhpY3MvZm9udHMvU2ltcGxvbl9CUF9NZWRpdW1fMS53b2ZmJyksXG4gICAgICAgdXJsKCcuLi9ncmFwaGljcy9mb250cy9TaW1wbG9uX0JQX01lZGl1bV8xLnR0ZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1NpbXBsb24tYm9sZCc7XG4gIHNyYzogdXJsKCcuLi9ncmFwaGljcy9mb250cy9TaW1wbG9uX0JQX0JvbGRfMi53b2ZmJyksXG4gICAgICAgdXJsKCcuLi9ncmFwaGljcy9mb250cy9TaW1wbG9uX0JQX0JvbGRfMi50dGYnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuIiwiJHBsYXRmb3JtOiAnUGxhdGZvcm0nLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJHNpbXBsb246ICdTaW1wbG9uJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiRzaW1wbG9uLWJvbGQ6ICdTaW1wbG9uLWJvbGQnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXG4vLyBMaWdodCBibHVlXG4kYmFzZS1jb2xvcjogIzREOUVDRjtcbi8vIERlZXAgb3JhbmdlXG4kcHJpbWFyeS1jb2xvcjogIzlCMjUyMztcbi8vIExpZ2h0IHJlZFxuJHNlY29uZGFyeS1jb2xvcjogI0ZGRDBCRjtcbi8vIExpZ2h0IGdyZWVuXG4kdGVydGlhcnktY29sb3I6ICNDM0Q1MDA7XG4vLyBHcmVlblxuJHN1Y2Nlc3MtY29sb3I6ICM3N2JjMWY7XG5cbiRkcm9wZG93bi1iZzogI0Y1RjVGNTtcblxuLy8gR3JheXNjYWxlc1xuJGJsYWNrOiAjMzEzMTMxO1xuJGRhcms6IGxpZ2h0ZW4oJGJsYWNrLCAxNSUpO1xuJGdyYXk6IGxpZ2h0ZW4oJGJsYWNrLCA1MCUpO1xuJGxpZ2h0OiBsaWdodGVuKCRibGFjaywgNzAlKTtcbiR3aGl0ZTogI0ZGRkFFRjtcblxuJGJlaWdlOiAjRTVEQ0QyO1xuXG4vLyBDYXRlZ29yeSBjb2xvcnNcbiRjYXQtdG90YWw6ICM0NTdDQTQ7XG4kY2F0LWNvbW1pdG1lbnQ6ICM1N0E4RDU7XG4kY2F0LWZyZWVkb206ICMyMUJDQjM7XG4kY2F0LXByaXZhY3k6ICMyMzhFODg7XG5cbi8vIFdlIHVzZSB0aGVzZSB0byBtYWtlIHN1cmUgYm9yZGVyIHJhZGl1cyBtYXRjaGVzIHVubGVzcyB3ZSB3YW50IGl0IGRpZmZlcmVudC5cbiRnbG9iYWwtcmFkaXVzOiAwLjVlbTtcbiRzZW1pLXJhZGl1czogJGdsb2JhbC1yYWRpdXMvMjtcbiRnbG9iYWwtcm91bmRlZDogNjByZW07XG5cbi8vIFdlIHVzZSB0aGlzIHNldCBzaXRlIHJvdydzIG1pbiBhbmQgbWF4IHdpZHRoXG4kcm93LW1pbi13aWR0aDogNzY4cHg7XG4kcm93LW1heC13aWR0aDogMTI4MHB4O1xuXG4vLyBNZWRpYSBxdWVyeSByYW5nZXNcbiR4c21hbGwtcmFuZ2U6ICgwLCA1NDNweCk7XG4kc21hbGwtcmFuZ2U6ICg1NDRweCwgNzY3cHgpO1xuJG1lZGl1bS1yYW5nZTogKDc2OHB4LCA5OTFweCk7XG4kbGFyZ2UtcmFuZ2U6ICg5OTJweCwgMTE5OXB4KTtcbiR4bGFyZ2UtcmFuZ2U6ICgxMjAwcHgpO1xuXG4kc2NyZWVuOiBcIm9ubHkgc2NyZWVuXCI7XG5cbiRwcm9zZS13aWR0aDogODYwcHg7XG4iLCIvLyBSQU5HRVNcbi8vIFdlIHVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gZGVmaW5lIHJhbmdlcyBmb3IgdmFyaW91cyB0aGluZ3MsIGxpa2UgbWVkaWEgcXVlcmllcy5cbkBmdW5jdGlvbiBsb3dlci1ib3VuZCgkcmFuZ2Upe1xuICBAaWYgbGVuZ3RoKCRyYW5nZSkgPD0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG4gIEByZXR1cm4gbnRoKCRyYW5nZSwxKTtcbn1cblxuQGZ1bmN0aW9uIHVwcGVyLWJvdW5kKCRyYW5nZSkge1xuICBAaWYgbGVuZ3RoKCRyYW5nZSkgPCAyIHtcbiAgICBAcmV0dXJuIDk5OTk5OTk5OTk5OTtcbiAgfVxuICBAcmV0dXJuIG50aCgkcmFuZ2UsIDIpO1xufVxuXG4iLCIvLyBNRURJQSBRVUVSSUVTXG5AbWl4aW4gbWVkaWEoJGFyZykge1xuICBAaWYgJGFyZyA9PSBzY3JlZW4ge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IHsgQGNvbnRlbnQ7IH1cbiAgfVxuICBAaWYgJGFyZyA9PSBsYW5kc2NhcGUge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgeyBAY29udGVudDsgfVxuICB9XG4gIEBpZiAkYXJnID09IHBvcnRyYWl0IHtcbiAgICBAbWVkaWEgI3skc2NyZWVufSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgeyBAY29udGVudDsgfVxuICB9XG4gIEBpZiAkYXJnID09IHhzbWFsbC11cCB7XG4gICAgQG1lZGlhICN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6IGxvd2VyLWJvdW5kKCR4c21hbGwtcmFuZ2UpKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGlmICRhcmcgPT0geHNtYWxsLW9ubHkge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IGFuZCAobWF4LXdpZHRoOiB1cHBlci1ib3VuZCgkeHNtYWxsLXJhbmdlKSkgeyBAY29udGVudDsgfVxuICB9XG4gIEBpZiAkYXJnID09IHNtYWxsLXVwIHtcbiAgICBAbWVkaWEgI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDogbG93ZXItYm91bmQoJHNtYWxsLXJhbmdlKSkgeyBAY29udGVudDsgfVxuICB9XG4gIEBpZiAkYXJnID09IHNtYWxsLW9ubHkge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IGFuZCAobWluLXdpZHRoOiBsb3dlci1ib3VuZCgkc21hbGwtcmFuZ2UpKSBhbmQgKG1heC13aWR0aDogdXBwZXItYm91bmQoJHNtYWxsLXJhbmdlKSkgeyBAY29udGVudDsgfVxuICB9XG4gIEBpZiAkYXJnID09IG1lZGl1bS11cCB7XG4gICAgQG1lZGlhICN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6IGxvd2VyLWJvdW5kKCRtZWRpdW0tcmFuZ2UpKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGlmICRhcmcgPT0gbWVkaXVtLW9ubHkge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IGFuZCAobWluLXdpZHRoOiBsb3dlci1ib3VuZCgkbWVkaXVtLXJhbmdlKSkgYW5kIChtYXgtd2lkdGg6IHVwcGVyLWJvdW5kKCRtZWRpdW0tcmFuZ2UpKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGlmICRhcmcgPT0gbGFyZ2UtdXAge1xuICAgIEBtZWRpYSAjeyRzY3JlZW59IGFuZCAobWluLXdpZHRoOiBsb3dlci1ib3VuZCgkbGFyZ2UtcmFuZ2UpKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGlmICRhcmcgPT0gbGFyZ2Utb25seSB7XG4gICAgQG1lZGlhICN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6IGxvd2VyLWJvdW5kKCRsYXJnZS1yYW5nZSkpIGFuZCAobWF4LXdpZHRoOiB1cHBlci1ib3VuZCgkbGFyZ2UtcmFuZ2UpKSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGlmICRhcmcgPT0geGxhcmdlLXVwIHtcbiAgICBAbWVkaWEgI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDogbG93ZXItYm91bmQoJHhsYXJnZS1yYW5nZSkpIHsgQGNvbnRlbnQ7IH1cbiAgfVxufVxuXG5AbWl4aW4gYnR0bi12YXJpYXRpb24oJGNvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUoJGNvbG9yLCA4JSk7XG4gIH1cbiAgLm9wZW4gPiAmLFxuICAmLmFjdGl2ZSxcbiAgJi5hY3RpdmU6aG92ZXIsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgkY29sb3IsIDE2JSk7XG4gIH1cbn1cblxuQG1peGluIHRvb2x0aXAoKSB7XG4gIHBhZGRpbmc6IDAuOGVtIDFlbSAwLjZlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMS40ZW07XG4gIGJhY2tncm91bmQ6ICRibGFjaztcbiAgY29sb3I6ICR3aGl0ZTtcbn1cblxuQG1peGluIG5vc2VsZWN0IHtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuIiwiLypcbi8vIElDT05TXG5cbi8vIFVJIGljb24gZm9udDogZHMubyBVSSBJY29uc1xuLy8gRGVzaWduZWQgYnkgRGV2ZWxvcG1lbnQgU2VlZFxuKi9cblxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiY29sbGVjdGljb25zXCI7XG4gIHNyYzogdXJsKCcuLi9ncmFwaGljcy9mb250cy9jb2xsZWN0aWNvbnMuZW90Jyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuXG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJjb2xsZWN0aWNvbnNcIjtcblxuICBzcmM6IHVybCgnLi4vZ3JhcGhpY3MvZm9udHMvY29sbGVjdGljb25zLnR0ZicpO1xuXG5cbiAgc3JjOiB1cmwoJy4uL2dyYXBoaWNzL2ZvbnRzL2NvbGxlY3RpY29ucy53b2ZmJyk7XG5cbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5cbi5jb2xsZWN0aWNvbiwgW2NsYXNzXj1cImNvbGxlY3RpY29uLVwiXSwgW2NsYXNzKj1cIiBjb2xsZWN0aWNvbi1cIl0ge1xuICBmb250LWZhbWlseTogXCJjb2xsZWN0aWNvbnNcIjtcbiAgc3BlYWs6IG5vbmU7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuXG4gIC8qIEJldHRlciBGb250IFJlbmRlcmluZyAqL1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuXG4uY29sbGVjdGljb24tYXJyb3ctZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEwMVwiXG59XG5cbi5jb2xsZWN0aWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTAyXCJcbn1cblxuLmNvbGxlY3RpY29uLWFycm93LWxvb3A6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMDNcIlxufVxuXG4uY29sbGVjdGljb24tYXJyb3ctcmV0dXJuOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTA0XCJcbn1cblxuLmNvbGxlY3RpY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTA1XCJcbn1cblxuLmNvbGxlY3RpY29uLWFycm93LXNwaW4tY2xvY2t3aXNlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTA2XCJcbn1cblxuLmNvbGxlY3RpY29uLWFycm93LXVwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTA3XCJcbn1cblxuLmNvbGxlY3RpY29uLWJlbGw6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMDhcIlxufVxuXG4uY29sbGVjdGljb24tYm9vazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEwOVwiXG59XG5cbi5jb2xsZWN0aWNvbi1icmllZmNhc2U6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMEFcIlxufVxuXG4uY29sbGVjdGljb24tY2FsZW5kYXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMEJcIlxufVxuXG4uY29sbGVjdGljb24tY2FtZXJhOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTBDXCJcbn1cblxuLmNvbGxlY3RpY29uLWNoYXJ0LWxpbmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMERcIlxufVxuXG4uY29sbGVjdGljb24tY2hldnJvbi1kb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTBFXCJcbn1cblxuLmNvbGxlY3RpY29uLWNoZXZyb24tbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEwRlwiXG59XG5cbi5jb2xsZWN0aWNvbi1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTEwXCJcbn1cblxuLmNvbGxlY3RpY29uLWNoZXZyb24tc3RlcC1iYWNrd2FyZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUExMVwiXG59XG5cbi5jb2xsZWN0aWNvbi1jaGV2cm9uLXN0ZXAtZm9yd2FyZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUExMlwiXG59XG5cbi5jb2xsZWN0aWNvbi1jaGV2cm9uLXVwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTEzXCJcbn1cblxuLmNvbGxlY3RpY29uLWNpcmNsZS1leGNsYW1hdGlvbjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUExNFwiXG59XG5cbi5jb2xsZWN0aWNvbi1jaXJjbGUtaW5mb3JtYXRpb246YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMTVcIlxufVxuXG4uY29sbGVjdGljb24tY2lyY2xlLXBsYXktbmV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUExNlwiXG59XG5cbi5jb2xsZWN0aWNvbi1jaXJjbGUtcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUExN1wiXG59XG5cbi5jb2xsZWN0aWNvbi1jaXJjbGUtcXVlc3Rpb246YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMThcIlxufVxuXG4uY29sbGVjdGljb24tY2lyY2xlLXN0b3A6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMTlcIlxufVxuXG4uY29sbGVjdGljb24tY2lyY2xlLXRpY2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMUFcIlxufVxuXG4uY29sbGVjdGljb24tY2lyY2xlLXhtYXJrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTFCXCJcbn1cblxuLmNvbGxlY3RpY29uLWNsaXBib2FyZC1saXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTFDXCJcbn1cblxuLmNvbGxlY3RpY29uLWNsaXBib2FyZC10aWNrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTFEXCJcbn1cblxuLmNvbGxlY3RpY29uLWNsb2NrLWJhY2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMUVcIlxufVxuXG4uY29sbGVjdGljb24tY2xvY2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMUZcIlxufVxuXG4uY29sbGVjdGljb24tY29nOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTIwXCJcbn1cblxuLmNvbGxlY3RpY29uLWNvbGxlY3RpY29uczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEyMVwiXG59XG5cbi5jb2xsZWN0aWNvbi1jb21wYXNzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTIyXCJcbn1cblxuLmNvbGxlY3RpY29uLWNyb3NzaGFpci0yOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTIzXCJcbn1cblxuLmNvbGxlY3RpY29uLWNyb3NzaGFpcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEyNFwiXG59XG5cbi5jb2xsZWN0aWNvbi1kZXZzZWVkLWlubmVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTI1XCJcbn1cblxuLmNvbGxlY3RpY29uLWRldnNlZWQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMjZcIlxufVxuXG4uY29sbGVjdGljb24tZGlzYy1kb2xsYXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMjdcIlxufVxuXG4uY29sbGVjdGljb24tZGlzYy14bWFyazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEyOFwiXG59XG5cbi5jb2xsZWN0aWNvbi1kb3dubG9hZDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEyOVwiXG59XG5cbi5jb2xsZWN0aWNvbi1kcm9wOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTJBXCJcbn1cblxuLmNvbGxlY3RpY29uLWVudmVsb3BlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTJCXCJcbn1cblxuLmNvbGxlY3RpY29uLWV4cGFuZC1kb3duLWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMkNcIlxufVxuXG4uY29sbGVjdGljb24tZXhwYW5kLWRvd24tcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMkRcIlxufVxuXG4uY29sbGVjdGljb24tZXhwYW5kLXRvcC1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTJFXCJcbn1cblxuLmNvbGxlY3RpY29uLWV4cGFuZC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMkZcIlxufVxuXG4uY29sbGVjdGljb24tZXllOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTMwXCJcbn1cblxuLmNvbGxlY3RpY29uLWZhY2Vib29rOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTMxXCJcbn1cblxuLmNvbGxlY3RpY29uLWZhY3Rvcnk6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMzJcIlxufVxuXG4uY29sbGVjdGljb24tZmxhZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEzM1wiXG59XG5cbi5jb2xsZWN0aWNvbi1mbGFtZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEzNFwiXG59XG5cbi5jb2xsZWN0aWNvbi1mbGlja3I6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMzVcIlxufVxuXG4uY29sbGVjdGljb24tZ2F1Z2U6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBMzZcIlxufVxuXG4uY29sbGVjdGljb24tZ2l0aHViOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTM3XCJcbn1cblxuLmNvbGxlY3RpY29uLWdsb2JlOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTM4XCJcbn1cblxuLmNvbGxlY3RpY29uLWdvb2dsZS1wbHVzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTM5XCJcbn1cblxuLmNvbGxlY3RpY29uLWdyaWQtM3gzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTNBXCJcbn1cblxuLmNvbGxlY3RpY29uLWhhbWJ1cmdlci1tZW51OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTNCXCJcbn1cblxuLmNvbGxlY3RpY29uLWhlYXJ0LWZ1bGw6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBM0NcIlxufVxuXG4uY29sbGVjdGljb24taG91c2U6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBM0RcIlxufVxuXG4uY29sbGVjdGljb24taHVtYW4tcmlnaHRzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTNFXCJcbn1cblxuLmNvbGxlY3RpY29uLWlkLWVkaXRvcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUEzRlwiXG59XG5cbi5jb2xsZWN0aWNvbi1pbnN0YWdyYW06YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNDBcIlxufVxuXG4uY29sbGVjdGljb24tbGFzdGZtOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTQxXCJcbn1cblxuLmNvbGxlY3RpY29uLWxlYWY6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNDJcIlxufVxuXG4uY29sbGVjdGljb24tbGluazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0M1wiXG59XG5cbi5jb2xsZWN0aWNvbi1saW5rZWRpbjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0NFwiXG59XG5cbi5jb2xsZWN0aWNvbi1saXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTQ1XCJcbn1cblxuLmNvbGxlY3RpY29uLWxvY2F0aW9uOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTQ2XCJcbn1cblxuLmNvbGxlY3RpY29uLWxvY2stMjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0N1wiXG59XG5cbi5jb2xsZWN0aWNvbi1sb2NrLW9wZW46YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNDhcIlxufVxuXG4uY29sbGVjdGljb24tbG9jazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0OVwiXG59XG5cbi5jb2xsZWN0aWNvbi1tYWduaWZpZXItbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0QVwiXG59XG5cbi5jb2xsZWN0aWNvbi1tYWduaWZpZXItcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNEJcIlxufVxuXG4uY29sbGVjdGljb24tbWFwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTRDXCJcbn1cblxuLmNvbGxlY3RpY29uLW1hcmtlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0RFwiXG59XG5cbi5jb2xsZWN0aWNvbi1taW51czpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE0RVwiXG59XG5cbi5jb2xsZWN0aWNvbi1tb2JpbGUtcGhvbmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNEZcIlxufVxuXG4uY29sbGVjdGljb24tcGFnZS1jb2c6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNTBcIlxufVxuXG4uY29sbGVjdGljb24tcGFnZS1sb2NrLW9wZW46YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNTFcIlxufVxuXG4uY29sbGVjdGljb24tcGFnZS10aWNrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTUyXCJcbn1cblxuLmNvbGxlY3RpY29uLXBhZ2U6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNTNcIlxufVxuXG4uY29sbGVjdGljb24tcGVuY2lsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTU0XCJcbn1cblxuLmNvbGxlY3RpY29uLXBpY3R1cmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNTVcIlxufVxuXG4uY29sbGVjdGljb24tcGx1czpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE1NlwiXG59XG5cbi5jb2xsZWN0aWNvbi1wb3AtZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE1N1wiXG59XG5cbi5jb2xsZWN0aWNvbi1wb3AtdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNThcIlxufVxuXG4uY29sbGVjdGljb24tcHJpbnRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE1OVwiXG59XG5cbi5jb2xsZWN0aWNvbi1xdW90ZS1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTVBXCJcbn1cblxuLmNvbGxlY3RpY29uLXF1b3RlLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTVCXCJcbn1cblxuLmNvbGxlY3RpY29uLXJlcG8tZm9yazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE1Q1wiXG59XG5cbi5jb2xsZWN0aWNvbi1yZXNpemUtaW46YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNURcIlxufVxuXG4uY29sbGVjdGljb24tcmVzaXplLW91dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE1RVwiXG59XG5cbi5jb2xsZWN0aWNvbi1yb2NrOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTVGXCJcbn1cblxuLmNvbGxlY3RpY29uLXJzcy1mZWVkOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTYwXCJcbn1cblxuLmNvbGxlY3RpY29uLXNhdGVsbGl0ZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2MVwiXG59XG5cbi5jb2xsZWN0aWNvbi1zaGFyZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2MlwiXG59XG5cbi5jb2xsZWN0aWNvbi1zaWduLWRhbmdlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2M1wiXG59XG5cbi5jb2xsZWN0aWNvbi1za3lwZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2NFwiXG59XG5cbi5jb2xsZWN0aWNvbi1zbGlkZXJzLWhvcml6b250YWw6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNjVcIlxufVxuXG4uY29sbGVjdGljb24tc20tY2hldnJvbi1kb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTY2XCJcbn1cblxuLmNvbGxlY3RpY29uLXNtLWNoZXZyb24tbGVmdDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2N1wiXG59XG5cbi5jb2xsZWN0aWNvbi1zbS1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTY4XCJcbn1cblxuLmNvbGxlY3RpY29uLXNtLWNoZXZyb24tdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNjlcIlxufVxuXG4uY29sbGVjdGljb24tc20tbWludXM6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNkFcIlxufVxuXG4uY29sbGVjdGljb24tc20tcGx1czpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2QlwiXG59XG5cbi5jb2xsZWN0aWNvbi1zbS1zcXVhcmU6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNkNcIlxufVxuXG4uY29sbGVjdGljb24tc20tdGljazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE2RFwiXG59XG5cbi5jb2xsZWN0aWNvbi1zbS10cmlhbmdsZS1kb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTZFXCJcbn1cblxuLmNvbGxlY3RpY29uLXNtLXRyaWFuZ2xlLWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNkZcIlxufVxuXG4uY29sbGVjdGljb24tc20tdHJpYW5nbGUtcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzBcIlxufVxuXG4uY29sbGVjdGljb24tc20tdHJpYW5nbGUtdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzFcIlxufVxuXG4uY29sbGVjdGljb24tc20teG1hcms6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzJcIlxufVxuXG4uY29sbGVjdGljb24tc29ydC1hc2M6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzNcIlxufVxuXG4uY29sbGVjdGljb24tc29ydC1kZXNjOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTc0XCJcbn1cblxuLmNvbGxlY3RpY29uLXNvcnQtbm9uZTpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE3NVwiXG59XG5cbi5jb2xsZWN0aWNvbi1zb3J0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTc2XCJcbn1cblxuLmNvbGxlY3RpY29uLXNvdW5kY2xvdWQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzdcIlxufVxuXG4uY29sbGVjdGljb24tc3Bhcms6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBNzhcIlxufVxuXG4uY29sbGVjdGljb24tc3Rhci1mdWxsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTc5XCJcbn1cblxuLmNvbGxlY3RpY29uLXN0ZWFtOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTdBXCJcbn1cblxuLmNvbGxlY3RpY29uLXRhZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE3QlwiXG59XG5cbi5jb2xsZWN0aWNvbi10YXJnZXQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBN0NcIlxufVxuXG4uY29sbGVjdGljb24tdGljazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE3RFwiXG59XG5cbi5jb2xsZWN0aWNvbi10cmFzaC1iaW46YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBN0VcIlxufVxuXG4uY29sbGVjdGljb24tdHJpYW5nbGUtZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE3RlwiXG59XG5cbi5jb2xsZWN0aWNvbi10cmlhbmdsZS1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTgwXCJcbn1cblxuLmNvbGxlY3RpY29uLXRyaWFuZ2xlLXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTgxXCJcbn1cblxuLmNvbGxlY3RpY29uLXRyaWFuZ2xlLXVwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTgyXCJcbn1cblxuLmNvbGxlY3RpY29uLXR1bWJsci1yZWJsb2c6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBODNcIlxufVxuXG4uY29sbGVjdGljb24tdHVtYmxyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTg0XCJcbn1cblxuLmNvbGxlY3RpY29uLXR3aXR0ZXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBODVcIlxufVxuXG4uY29sbGVjdGljb24tdWZvOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxFQTg2XCJcbn1cblxuLmNvbGxlY3RpY29uLXVzZXItZ3JvdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXEVBODdcIlxufVxuXG4uY29sbGVjdGljb24tdXNlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE4OFwiXG59XG5cbi5jb2xsZWN0aWNvbi11c2VyczpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE4OVwiXG59XG5cbi5jb2xsZWN0aWNvbi14bWFyazpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcRUE4QVwiXG59XG4iLCIvLyBGb250IHNtb290aGluZ1xuLy8gQXBwbHkgdG8gc2luZ2xlIGVsZW1lbnRzIGluc3RlYWQgb2YgZ2xvYmFsbHkgdG8gYm9keS5cbi8vIE9ubHkgYXBwbGllcyB0byB3ZWJraXQgZGVza3RvcCwgYW5kIEZGIDI1ICsgb24gTWFjLlxuLmFudGlhbGlhc2VkIHtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbi8vIFRydW5jYXRlIHRleHRcbi50cnVuY2F0ZWQge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gSGlkZSBmcm9tIGJvdGggc2NyZWVucmVhZGVycyBhbmQgYnJvd3NlcnNcbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLy8gSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbnJlYWRlcnNcbi52aXN1YWxseS1oaWRkZW4ge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwcHgsIDBweCwgMHB4LCAwcHgpO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi8vIEV4dGVuZHMgLnZpc3VhbGx5LWhpZGRlbiB0byBhbGxvdyBrZXlib2FyZCBmb2N1c1xuLnZpc3VhbGx5LWhpZGRlbi5mb2N1c2FibGU6YWN0aXZlLFxuLnZpc3VhbGx5LWhpZGRlbi5mb2N1c2FibGU6Zm9jdXMge1xuICBjbGlwOiBhdXRvO1xuICBoZWlnaHQ6IGF1dG87XG4gIG1hcmdpbjogMDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHdpZHRoOiBhdXRvO1xufVxuXG4vLyBVbmRvIHZpc3VhbGx5LWhpZGRlblxuLnZpc3VhbGx5LWhpZGRlbi11bmRvIHtcbiAgcG9zaXRpb246IGluaGVyaXQ7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW46IGF1dG87XG59XG5cbi8vIEhpZGUgdmlzdWFsbHkgYW5kIGZyb20gc2NyZWVucmVhZGVycywgYnV0IG1haW50YWluIGxheW91dFxuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLy8gQ2xlYXJmaXggZm9yIG1vZGVybiBicm93c2Vyc1xuLmNsZWFyZml4IHtcbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG5cbi8vIERpc2FibGVkXG4uZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjQ4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLy8gRGVidWdnZWRcbi8vIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXMgb25seVxuLmRlYnVnZ2VkIHtcbiAgYmFja2dyb3VuZDogcmVkICFpbXBvcnRhbnQ7XG59XG5cbi5jb250YWluIHtcbiAgQGluY2x1ZGUgbWVkaWEoeGxhcmdlLXVwKSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwJTtcbiAgfVxufVxuXG4uY29udGFpbi1mdWxsIHtcbiAgQGluY2x1ZGUgbWVkaWEoeGxhcmdlLXVwKSB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwJTtcbiAgICB3aWR0aDogODAlO1xuICB9XG59XG5cbiIsIi50b29sdGlwLWVsZW1lbnQsXG4udG9vbHRpcC1lbGVtZW50OmFmdGVyLFxuLnRvb2x0aXAtZWxlbWVudDpiZWZvcmUsXG4udG9vbHRpcC1lbGVtZW50ICosXG4udG9vbHRpcC1lbGVtZW50ICo6YWZ0ZXIsXG4udG9vbHRpcC1lbGVtZW50ICo6YmVmb3JlIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnRvb2x0aXAtZWxlbWVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLW9wZW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cyAudG9vbHRpcC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgQGluY2x1ZGUgdG9vbHRpcDtcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cyAudG9vbHRpcC1jb250ZW50OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci13aWR0aDogOHB4O1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWNlbnRlciAudG9vbHRpcC1jb250ZW50IHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWNlbnRlciAudG9vbHRpcC1jb250ZW50OmJlZm9yZSB7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogNTAlO1xuICBtYXJnaW4tbGVmdDogLThweDtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDtcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1jZW50ZXIgLnRvb2x0aXAtY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDhweDtcbn1cblxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1jZW50ZXIgLnRvb2x0aXAtY29udGVudDpiZWZvcmUge1xuICBib3R0b206IDEwMCU7XG4gIGxlZnQ6IDUwJTtcbiAgbWFyZ2luLWxlZnQ6IC04cHg7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7XG59XG5cbi50b29sdGlwLWVsZW1lbnQudG9vbHRpcC10aGVtZS1hcnJvd3MudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLXJpZ2h0LnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1taWRkbGUgLnRvb2x0aXAtY29udGVudCB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuXG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1yaWdodC50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtbWlkZGxlIC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgbGVmdDogMTAwJTtcbiAgdG9wOiA1MCU7XG4gIG1hcmdpbi10b3A6IC04cHg7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwO1xuXG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1sZWZ0LnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1taWRkbGUgLnRvb2x0aXAtY29udGVudCB7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG5cbn1cbi50b29sdGlwLWVsZW1lbnQudG9vbHRpcC10aGVtZS1hcnJvd3MudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWxlZnQudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLW1pZGRsZSAudG9vbHRpcC1jb250ZW50OmJlZm9yZSB7XG4gIHJpZ2h0OiAxMDAlO1xuICB0b3A6IDUwJTtcbiAgbWFyZ2luLXRvcDogLThweDtcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwO1xuXG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC10b3AudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWxlZnQudG9vbHRpcC10YXJnZXQtYXR0YWNoZWQtYm90dG9tIC50b29sdGlwLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiA4cHg7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC10b3AudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWxlZnQudG9vbHRpcC10YXJnZXQtYXR0YWNoZWQtYm90dG9tIC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgYm90dG9tOiAxMDAlO1xuICBsZWZ0OiA4cHg7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC10b3AudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLXJpZ2h0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLWJvdHRvbSAudG9vbHRpcC1jb250ZW50IHtcbiAgbWFyZ2luLXRvcDogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1yaWdodC50b29sdGlwLXRhcmdldC1hdHRhY2hlZC1ib3R0b20gLnRvb2x0aXAtY29udGVudDpiZWZvcmUge1xuICBib3R0b206IDEwMCU7XG4gIHJpZ2h0OiA4cHg7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWxlZnQudG9vbHRpcC10YXJnZXQtYXR0YWNoZWQtdG9wIC50b29sdGlwLWNvbnRlbnQge1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLWxlZnQudG9vbHRpcC10YXJnZXQtYXR0YWNoZWQtdG9wIC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiA4cHg7XG4gIGJvcmRlci10b3AtY29sb3I6ICMwMDA7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLXJpZ2h0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLXRvcCAudG9vbHRpcC1jb250ZW50IHtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtYm90dG9tLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1yaWdodC50b29sdGlwLXRhcmdldC1hdHRhY2hlZC10b3AgLnRvb2x0aXAtY29udGVudDpiZWZvcmUge1xuICB0b3A6IDEwMCU7XG4gIHJpZ2h0OiA4cHg7XG4gIGJvcmRlci10b3AtY29sb3I6ICMwMDA7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC10b3AudG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLXJpZ2h0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLWxlZnQgLnRvb2x0aXAtY29udGVudCB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1yaWdodC50b29sdGlwLXRhcmdldC1hdHRhY2hlZC1sZWZ0IC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgdG9wOiA4cHg7XG4gIGxlZnQ6IDEwMCU7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwO1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1sZWZ0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLXJpZ2h0IC50b29sdGlwLWNvbnRlbnQge1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtdG9wLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1sZWZ0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLXJpZ2h0IC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgdG9wOiA4cHg7XG4gIHJpZ2h0OiAxMDAlO1xuICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7XG59XG4udG9vbHRpcC1lbGVtZW50LnRvb2x0aXAtdGhlbWUtYXJyb3dzLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1ib3R0b20udG9vbHRpcC1lbGVtZW50LWF0dGFjaGVkLXJpZ2h0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLWxlZnQgLnRvb2x0aXAtY29udGVudCB7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtYm90dG9tLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1yaWdodC50b29sdGlwLXRhcmdldC1hdHRhY2hlZC1sZWZ0IC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgYm90dG9tOiA4cHg7XG4gIGxlZnQ6IDEwMCU7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwO1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtYm90dG9tLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1sZWZ0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLXJpZ2h0IC50b29sdGlwLWNvbnRlbnQge1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuLnRvb2x0aXAtZWxlbWVudC50b29sdGlwLXRoZW1lLWFycm93cy50b29sdGlwLWVsZW1lbnQtYXR0YWNoZWQtYm90dG9tLnRvb2x0aXAtZWxlbWVudC1hdHRhY2hlZC1sZWZ0LnRvb2x0aXAtdGFyZ2V0LWF0dGFjaGVkLXJpZ2h0IC50b29sdGlwLWNvbnRlbnQ6YmVmb3JlIHtcbiAgYm90dG9tOiA4cHg7XG4gIHJpZ2h0OiAxMDAlO1xuICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7XG59XG5cbi50b29sdGlwLWVsZW1lbnQudG9vbHRpcC10aGVtZS1hcnJvd3Mge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi50b29sdGlwLWVsZW1lbnQudG9vbHRpcC10aGVtZS1hcnJvd3MgLnRvb2x0aXAtY29udGVudCB7XG4gIHBhZGRpbmc6IDAuNWVtIDFlbTtcbn1cbiIsImgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG5wLCBzZWxlY3QsIHRleHRhcmVhLCBib2R5IHtcbiAgY29sb3I6ICRibGFjaztcbiAgZm9udC1mYW1pbHk6ICRzaW1wbG9uO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS42MjU7XG59XG5cbmh0bWwge1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBAZXh0ZW5kIC5hbnRpYWxpYXNlZDtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuI3NpdGUtY2FudmFzIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBwIHtcbiAgICBjdXJzb3I6IHRleHRcbiAgfVxufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgZm9udC1mYW1pbHk6ICRwbGF0Zm9ybTtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgZm9udC1zaXplOiAyZW07XG4gIH1cbn1cblxuaDIge1xuICBmb250LXNpemU6IDEuMjVlbTtcbiAgQGluY2x1ZGUgbWVkaWEobGFyZ2UtdXApIHsgZm9udC1zaXplOiAxLjVlbTsgfVxufVxuXG5oMyB7XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBAaW5jbHVkZSBtZWRpYShsYXJnZS11cCkge2ZvbnQtc2l6ZTogMS4yNWVtOyB9XG59XG5cbmEsXG5hOmxpbmssXG5hOnZpc2l0ZWQsXG5hOmhvdmVyLFxuYTphY3RpdmUge1xuICBjb2xvcjogJGJhc2UtY29sb3I7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5hOmhvdmVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi8vIElFIDwgMTBcbi8vIERvbid0IGRlbGV0ZS5cbi5sdC1pZTEwIHtcbiAgI3NpdGUtY2FudmFzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICNub2NhbmRvIHtcbiAgICBtYXJnaW46IDIwMHB4IGF1dG87XG4gICAgcGFkZGluZzogMzJweDtcbiAgICBtYXgtd2lkdGg6IDQ0MHB4O1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gICAgfVxuICB9XG59XG5cbi5yb3cge1xuICBAZXh0ZW5kIC5jbGVhcmZpeDtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICBAaW5jbHVkZSBtZWRpYShzbWFsbC11cCkge1xuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuICB9XG59XG5cbi5yb3ctY2VudGVyZWQge1xuICBtYXgtd2lkdGg6ICRyb3ctbWF4LXdpZHRoO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ucm93LWNvbnRhaW5lZCB7XG4gIEBleHRlbmQgLnJvdztcbiAgbWF4LXdpZHRoOiAkcHJvc2Utd2lkdGg7XG59XG5cbi5kYXRhIHtcbiAgbWFyZ2luLXRvcDogLjVlbTtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIEBleHRlbmQgLmNvbnRhaW47XG59XG5cbi5vdXRib3VuZCB7XG4gIG1hcmdpbi1ib3R0b206IC43MjVlbTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uaW5kZXgtLWludHJvIHtcbiAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcbiAgcGFkZGluZzogMS41ZW0gMCAxZW07XG4gIGJhY2tncm91bmQ6ICRiZWlnZTtcbiAgY29sb3I6ICRibGFjaztcbiAgQGluY2x1ZGUgbWVkaWEobGFyZ2UtdXApIHtcbiAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgfVxuICBsaW5lLWhlaWdodDogMTQwJTtcbn1cblxuLmludmVydGVkIHtcbiAgYmFja2dyb3VuZDogJGJlaWdlO1xuICBwYWRkaW5nLXRvcDogM2VtO1xuICBwYWRkaW5nLWJvdHRvbTogMmVtO1xuICBAZXh0ZW5kIC5jbGVhcmZpeDtcbn1cblxuLnNwYWNlZC1yb3cge1xuICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4ubGFiZWwge1xuICBjb2xvcjogJGRhcms7XG4gIG1hcmdpbi1ib3R0b206IC41ZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmJsb2NrbGFiZWwge1xuICBjb2xvcjogJGRhcms7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogLjhlbTtcbiAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgbWFyZ2luLXRvcDogMS41ZW07XG4gIG1hcmdpbi1ib3R0b206IC41ZW07XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uaW5saW5lbGFiZWwge1xuICBAZXh0ZW5kIC5ibG9ja2xhYmVsO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1sZWZ0OiAuNWVtO1xufVxuXG4uYnJlYWRjcnVtYnMge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LXNpemU6IC45ZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblxuICAuY29sbGVjdGljb24ge1xuICAgIGNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgICBsaW5lLWhlaWdodDogMS44ZW07XG4gIH1cbn1cblxuLnRyaWdnZXIge1xuICAuanMtLWNvbGxhcHNlIHsgZGlzcGxheTogbm9uZTsgfVxuICAuanMtLWV4cGFuZCB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gICYuZXhwYW5kZWQge1xuICAgIC5qcy0tY29sbGFwc2UgeyBkaXNwbGF5OiBibG9jazsgfVxuICAgIC5qcy0tZXhwYW5kIHsgZGlzcGxheTogbm9uZTsgfVxuICB9XG4gIEBpbmNsdWRlIG5vc2VsZWN0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jb2xsYXBzZS0tdGFyZ2V0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuc3Ryb25nLCBiIHtcbiAgZm9udC1mYW1pbHk6ICRzaW1wbG9uLWJvbGQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbiIsIi5wYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcbiAgbWFyZ2luOiAwIDFyZW07XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIG1hcmdpbjogMCAycmVtO1xuICB9XG4gID4gKiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7XG4gIH1cbn1cblxuLnBhZ2UgLnByb3NlIHtcbiAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEyIG9mIDEyKTtcbiAgQGluY2x1ZGUgbWVkaWEoc21hbGwtdXApIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMTAgb2YgMTIpO1xuICAgIEBpbmNsdWRlIHNoaWZ0KDEpO1xuICB9XG4gIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDggb2YgMTIpO1xuICAgIEBpbmNsdWRlIHNoaWZ0KDIpO1xuICB9XG59XG5cbi5wYWdlLS1ib2R5IHtcbiAgcGFkZGluZy10b3A6IDRyZW07XG4gIEBpbmNsdWRlIGFuaW1hdGlvbihmYWRlLWluIDAuOHMgZWFzZSAwcyAxKTtcbiAgPiAuaW5uZXIge1xuICAgIEBleHRlbmQgLnJvdztcbiAgICBAZXh0ZW5kIC5yb3ctY2VudGVyZWQ7XG4gICAgQGV4dGVuZCAuY2xlYXJmaXg7XG4gIH1cbn1cblxuLnBhZ2UtLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IDNyZW07XG4gIHBhZGRpbmctdG9wOiAzcmVtO1xuICA+IC5pbm5lciB7XG4gICAgQGV4dGVuZCAucm93O1xuICAgIEBleHRlbmQgLmNsZWFyZml4O1xuICB9XG4gIEBleHRlbmQgLm5vLXByaW50O1xufVxuXG4uZGlzcGxheXRleHQge1xuXG4gIG1heC13aWR0aDogJHByb3NlLXdpZHRoO1xuXG4gIHVsLFxuICBvbCxcbiAgaDMsXG4gIHAge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjhlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjRlbTtcbiAgICBjdXJzb3I6IHRleHQ7XG4gIH1cblxuICBoMyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICBib3JkZXItYm90dG9tOiAuMTI1ZW0gc29saWQgJGJlaWdlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNmVtO1xuICB9XG5cbiAgdWwgbGkgeyBsaXN0LXN0eWxlOiBpbml0aWFsOyB9XG4gIG9sIGxpIHsgbGlzdC1zdHlsZTogZGVjaW1hbDsgfVxuXG4gIC5qcy0tY29sbGFwc2VfdHJpZ2dlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gIH1cblxufVxuXG5ibG9ja3F1b3RlIHtcbiAgYmFja2dyb3VuZDogJGJlaWdlO1xuICBwYWRkaW5nOiAxZW07XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIHBhZGRpbmc6IDJlbTtcbiAgfVxufVxuIiwiYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPWJ1dHRvbl0sXG5pbnB1dFt0eXBlPXJlc2V0XSxcbmlucHV0W3R5cGU9c3VibWl0XSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVaKDApKTtcbn1cblxuLmJ0dG4ge1xuICBib3gtc2hhZG93OiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAkc2ltcGxvbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBAaW5jbHVkZSB1c2VyLXNlbGVjdChub25lKTtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDJyZW07XG4gIG1pbi13aWR0aDogMi41cmVtO1xuICAub3BlbiA+ICYsXG4gICY6YWN0aXZlLFxuICAmLmFjdGl2ZSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlKDApKTtcbiAgfVxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxuICBAaW5jbHVkZSB0cmFuc2l0aW9uLXByb3BlcnR5KGJhY2tncm91bmQtY29sb3IpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLWR1cmF0aW9uKDAuMnMpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbihlYXNlKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kZWxheSgwKTtcbiAgQGluY2x1ZGUgbWVkaWEocHJpbnQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8vIFZBUklBVElPTlNcblxuLy8gRGVmYXVsdCAoR3JheSlcbi5idHRuLWRlZmF1bHQsXG4uYnR0bi1kZWZhdWx0OmhvdmVyLFxuLmJ0dG4tZGVmYXVsdDp2aXNpdGVkIHtcbiAgQGluY2x1ZGUgYnR0bi12YXJpYXRpb24oJGJlaWdlKTtcbiAgY29sb3I6ICRibGFjaztcbn1cblxuLy8gTGlnaHQgKEdyYXkpXG4uYnR0bi1saWdodCxcbi5idHRuLWxpZ2h0OmhvdmVyLFxuLmJ0dG4tbGlnaHQ6dmlzaXRlZCB7XG4gIEBpbmNsdWRlIGJ0dG4tdmFyaWF0aW9uKCR3aGl0ZSk7XG4gIGNvbG9yOiB0aW50KCRibGFjaywgNDAlKTtcbn1cblxuLy8gU3VjY2VzcyAoQmx1ZSlcbi5idHRuLXN1Y2Nlc3MsXG4uYnR0bi1zdWNjZXNzOmhvdmVyLFxuLmJ0dG4tc3VjY2Vzczp2aXNpdGVkIHtcbiAgQGluY2x1ZGUgYnR0bi12YXJpYXRpb24oJGJhc2UtY29sb3IpO1xuICBjb2xvcjogJHdoaXRlO1xufVxuXG4vLyBEYXJrIChHcmF5KVxuLmJ0dG4tZGFyayxcbi5idHRuLWRhcms6aG92ZXIsXG4uYnR0bi1kYXJrOnZpc2l0ZWQge1xuICBAaW5jbHVkZSBidHRuLXZhcmlhdGlvbih0aW50KCRibGFjaywgNDAlKSk7XG4gIGNvbG9yOiAkd2hpdGU7XG59XG5cbi8vIENhbGwgdG8gQWN0aW9uXG4uYnR0bi1jdGEsXG4uYnR0bi1jdGE6aG92ZXIsXG4uYnR0bi1jdGE6dmlzaXRlZCB7XG4gIEBpbmNsdWRlIGJ0dG4tdmFyaWF0aW9uKHRpbnQoJHN1Y2Nlc3MtY29sb3IsIDgwJSkpO1xufVxuXG4vLyBTSVpFU1xuXG4vLyBTbWFsbCAoMjRweClcbi5idHRuLXMsXG4uYnR0bi1ncm91cC1zIC5idHRuIHtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTtcbiAgbWluLWhlaWdodDogMS4yNXJlbTtcbn1cblxuLy8gTWVkaXVtICgzMnB4KVxuLy8gRGVmYXVsdFxuLmJ0dG4tbSxcbi5idHRuLWdyb3VwLW0gLmJ0dG4ge1xuICBsaW5lLWhlaWdodDogMS41cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTtcbiAgbWluLWhlaWdodDogMnJlbTtcbn1cblxuLyogTGFyZ2UgKDQwcHgpICovXG4uYnR0bi1sLFxuLmJ0dG4tZ3JvdXAtbCAuYnR0biB7XG4gIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIHBhZGRpbmc6IDAuNDI1cmVtIDFyZW0gMC4xNzVyZW07XG4gIG1pbi1oZWlnaHQ6IDIuNXJlbTtcbn1cblxuLyogRXh0cmEtbGFyZ2UgKDQ0cHgpICovXG4uYnR0bi14bCxcbi5idHRuLWdyb3VwLXhsIC5idHRuIHtcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgcGFkZGluZzogMC41cmVtIDEuMjVyZW07XG4gIG1pbi1oZWlnaHQ6IDIuNzVyZW07XG59XG5cbi8vIEdST1VQXG5cbi5idHRuLWdyb3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZvbnQtc2l6ZTogMDtcbiAgJi5idHRuLWxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgPiBsaSAuYnR0biB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbiAgPiAqLFxuICA+IC5idHRuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gID4gKjpmaXJzdC1jaGlsZDpub3QoOmxhc3QtY2hpbGQpIC5idHRuLFxuICA+IC5idHRuOmZpcnN0LWNoaWxkOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG4gID4gKjpsYXN0LWNoaWxkOm5vdCg6Zmlyc3QtY2hpbGQpIC5idHRuLFxuICA+IC5idHRuOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgfVxuICA+ICo6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSAuYnR0bixcbiAgPiAuYnR0bjpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG4gID4gLmJ0dG4gKyAuYnR0bixcbiAgJi5idHRuLWxpc3QgPiBsaSArIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgfVxufVxuXG5pbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5zZWFyY2gge1xuICBmb250LWZhbWlseTogJHNpbXBsb247XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjY2NjY2NjO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IDAuNzc3NzhyZW07XG4gIGhlaWdodDogMi4wNTU1NnJlbTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwLjQ0NDQ0cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGxpbmVhciwgYmFja2dyb3VuZCAwLjE1cyBsaW5lYXI7XG4gIC1tb3otdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGxpbmVhciwgYmFja2dyb3VuZCAwLjE1cyBsaW5lYXI7XG4gIC1tcy10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgbGluZWFyLCBiYWNrZ3JvdW5kIDAuMTVzIGxpbmVhcjtcbiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGxpbmVhciwgYmFja2dyb3VuZCAwLjE1cyBsaW5lYXI7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBsaW5lYXIsIGJhY2tncm91bmQgMC4xNXMgbGluZWFyO1xufVxuIiwiLmJhbm5lciB7XG4gIGJhY2tncm91bmQ6ICRiYXNlLWNvbG9yO1xuICBjb2xvcjogJHdoaXRlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIHBhZGRpbmctdG9wOiAxZW07XG4gIHBhZGRpbmctYm90dG9tOiAuOGVtO1xufVxuXG4ubmF2LS1tb2JpbGUgYSxcbi5uYXYtLW1vYmlsZSBhOmxpbmssXG4ubmF2LS1tb2JpbGUgYTpob3Zlcixcbi5uYXYtLW1vYmlsZSBhOmFjdGl2ZSxcbi5uYXYtLW1vYmlsZSBhOnZpc2l0ZWQsXG4uYmFubmVyIGEsXG4uYmFubmVyIGE6bGluayxcbi5iYW5uZXIgYTpob3Zlcixcbi5iYW5uZXIgYTphY3RpdmUsXG4uYmFubmVyIGE6dmlzaXRlZCB7XG4gIGNvbG9yOiAkd2hpdGU7XG59XG5cbi5iYW5uZXItLWludGVybmFsIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubG9nbyB7XG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDMycHg7XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIHdpZHRoOiAzZW07XG4gICAgaGVpZ2h0OiAzZW07XG4gIH1cbn1cblxuLnJkciB7XG4gIG1hcmdpbi1sZWZ0OiAuNzVlbTtcbiAgd2lkdGg6IDE4MHB4O1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tb25seSkgeyB3aWR0aDogMzIwcHg7IH1cbiAgQGluY2x1ZGUgbWVkaWEobGFyZ2UtdXApIHsgd2lkdGg6IDQwMHB4OyB9XG59XG5cbi5uYXYge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAzLjA1ZW07XG59XG5cbi5uYXYtLWl0ZW0ge1xuICBtYXJnaW46IDAgLjcyZW07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDEuMmVtO1xufVxuXG4ubmF2LS1pdGVtX2FjdGl2ZSA+IGEge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLm5hdi0tZ2Vhcl9pY29uIHtcbiAgd2lkdGg6IDEuNmVtO1xuICBoZWlnaHQ6IDEuNmVtO1xufVxuXG4vKiBNb2JpbGUgbWVudSAqL1xuLm5hdi0tbW9iaWxlIHtcbiAgYmFja2dyb3VuZDogZGFya2VuKCRiYXNlLWNvbG9yLCAxMCUpO1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogLjUgMWVtIC4zO1xuICAmLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5uYXYgeyBwYWRkaW5nOiAuNWVtOyB9XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICB9XG59XG5cbi5uYXYtLXZlcnRpY2FsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcGFkZGluZy1ib3R0b206IDFlbTtcbn1cblxuLm5hdi0taXRlbV92ZXJ0aWNhbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgcGFkZGluZy10b3A6IDFlbTtcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07XG5cbiAgPiBhIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICA+IC5jb2xsZWN0aWNvbiB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG5cblxuLmJ0dG4tLWhhbWJ1cmdlciB7XG4gIG1hcmdpbjogLTRweCAwIDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBmb250LXNpemU6IDA7XG4gIHRleHQtaW5kZW50OiAtOTk5OXB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjRzIGVhc2Utb3V0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICA6OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfVxuXG4gIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDE0cHg7XG4gICAgbGVmdDogM3B4O1xuICAgIHJpZ2h0OiAzcHg7XG4gICAgaGVpZ2h0OiA1cHg7XG4gICAgYmFja2dyb3VuZDogI2ZlZmRlZDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDBzIDAuMTVzO1xuICB9XG5cbiAgOjpiZWZvcmUsIDo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZWZkZWQ7XG4gICAgY29udGVudDogXCJcIjtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cywgMC4xNXM7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXMsIDBzO1xuICB9XG5cbiAgOjpiZWZvcmUge1xuICAgIHRvcDogLTEwcHg7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdG9wLCB0cmFuc2Zvcm07XG4gIH1cblxuICA6OmFmdGVyIHtcbiAgICBib3R0b206IC0xMHB4O1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJvdHRvbSwgdHJhbnNmb3JtO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbn1cblxuLmJ0dG4tLWhhbWJ1cmdlci5hY3RpdmUge1xuICBzcGFuIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICB0b3A6IDA7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcywgMC4xNXNcbiAgICB9XG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcbiAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzLCAwLjE1c1xuICAgIH1cbiAgfVxufVxuIiwiLnJpZ2h0LS1uYXYge1xuICBmbG9hdDogcmlnaHQ7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiAuNWVtO1xuICB3aWR0aDogMjAwcHg7XG5cbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgd2lkdGg6IDQwMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG59XG5cbi5uZXh0LFxuLnN1Ym5hdi0tbGlua3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cblxuLnN1Ym5hdi0tZHJvcGRvd24ge1xuICBvcmRlcjogMTtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgb3JkZXI6IDA7XG4gIH1cbn1cblxuLnN1Ym5hdi0tc2VhcmNoIHtcbiAgb3JkZXI6IDA7XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIG9yZGVyOiAxXG4gIH1cbn1cblxuLnJpZ2h0LS1uYXZfaW5saW5lIHtcbiAgQGV4dGVuZCAucm93O1xuICBAZXh0ZW5kIC5jb250YWluO1xuICBtYXJnaW4tdG9wOiAuNWVtO1xuICBmbG9hdDogbm9uZTtcbiAgd2lkdGg6IGF1dG87XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gIC5zdWJuYXYtLWxpbmtzIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLnN1Ym5hdi0tZHJvcGRvd24geyBvcmRlcjogMDsgfVxuICAuc3VibmF2LS1zZWFyY2ggeyBvcmRlcjogMSB9XG59XG5cbi5uZXh0LS1pdGVtLFxuLnN1Ym5hdi0taXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiAuNGVtO1xuICBsaW5lLWhlaWdodDogMWVtO1xuXG4gIC5jb2xsZWN0aWNvbiB7XG4gICAgZm9udC1zaXplOiAuOWVtO1xuICB9XG59XG5cbi5uZXh0LS1pdGVtIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgLmNvbGxlY3RpY29uIHtcbiAgICBjb2xvcjogJGJhc2UtY29sb3I7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG4gIH1cbn1cblxuLnR0LW1lbnUge1xuICBiYWNrZ3JvdW5kOiAkZHJvcGRvd24tYmc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA5NSU7XG4gIGxlZnQ6IDIuNSU7XG4gIHotaW5kZXg6IDEwMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50dC1zdWdnZXN0aW9uIHtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIHBhZGRpbmc6IDFlbSAxLjI1ZW07XG4gIHRleHQtc2hhZG93OiAjRkZGO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuIiwiLmZvb3RlciB7XG4gIGJhY2tncm91bmQ6ICRiZWlnZTtcbiAgcGFkZGluZy10b3A6IDEuMjVlbTtcbiAgcGFkZGluZy1ib3R0b206IDFlbTtcbiAgbWFyZ2luLXRvcDogMmVtO1xufVxuXG4uZm9vdGVyLS1saW5rcyB7XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxufVxuXG4uZm9vdGVyLS1saW5rIHtcbiAgcGFkZGluZzogLjVlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgbWFyZ2luLWxlZnQ6IC43NWVtO1xuICAgIG1hcmdpbi1yaWdodDogLjc1ZW07XG4gIH1cblxuICAuY29sbGVjdGljb24ge1xuICAgIG1hcmdpbi1yaWdodDogLjI1ZW07XG4gICAgY29sb3I6ICRiYXNlLWNvbG9yO1xuICB9XG59XG5cbi5jb21tb25zIHtcbiAgd2lkdGg6IDEwMHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gID4gaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiQG1peGluIHRhYmxlc3Bhbigkd2lkdGgpIHtcbiAgdGhlYWQgdHIgdGg6Zmlyc3QtY2hpbGQsXG4gIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHsgd2lkdGg6ICR3aWR0aDsgfVxufVxuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgZW1wdHktY2VsbHM6IHNob3c7XG5cbiAgdGgsXG4gIHRkIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbiAgdGhlYWQgdHIgdGg6Zmlyc3QtY2hpbGQsXG4gIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDFlbTtcbiAgfVxuXG4gIHRoLCB0ZCB7XG4gICAgcGFkZGluZy10b3A6IDEuNWVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAuMWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cblxuICB0aCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBwYWRkaW5nLWJvdHRvbTogLjVlbTtcbiAgICBmb250LXNpemU6IC44ZW07XG4gICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxuICB0aGVhZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRiZWlnZTtcbiAgfVxuXG4gIC5jb2xfMCB7XG4gICAgYmFja2dyb3VuZDogJGJlaWdlO1xuICB9XG5cbiAgLnRoZWFkLS1lbmQgLmNvbF8wIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHdoaXRlO1xuICB9XG59XG5cbi50YWJsZS0tc2VydmljZV9sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogJGRhcms7XG4gIG1hcmdpbi1ib3R0b206IC4zZW07XG59XG5cblxuLnRhYmxlLS1zY29yZXMge1xuICBsaW5lLWhlaWdodDogMS40ZW07XG4gIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gIEBpbmNsdWRlIHRhYmxlc3BhbigyNTBweCk7XG4gIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgQGluY2x1ZGUgdGFibGVzcGFuKDMwMHB4KTtcbiAgfVxuXG59XG5cbi50YWJsZS0tc3Bhbl8zLCAudGFibGUtLXNwYW5fNCB7XG4gIEBpbmNsdWRlIHRhYmxlc3BhbigzNTBweCk7XG4gIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgQGluY2x1ZGUgdGFibGVzcGFuKDQwMHB4KTtcbiAgfVxufVxuXG4udGFibGUtLXNwYW5fMSwgLnRhYmxlLS1zcGFuXzIge1xuICBAaW5jbHVkZSB0YWJsZXNwYW4oNTAwcHgpO1xufVxuXG4udGFibGUtLWZvb3RlciB7XG4gIHRkOmZpcnN0LWNoaWxkIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB9XG59XG4iLCIuZHJvcGRvd24tLXRyaWdnZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIG5vc2VsZWN0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5kcm9wZG93bi0tdHJpZ2dlcl9tb2JpbGUge1xuICBAZXh0ZW5kIC5kcm9wZG93bi0tdHJpZ2dlcjtcblxuICAuY29sbGVjdGljb24ge1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICB9XG4gIC5jb2xsZWN0aWNvbi1zbS10cmlhbmdsZS11cCB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgLmNvbGxlY3RpY29uLXNtLXRyaWFuZ2xlLWRvd24geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuICAmLmV4cGFuZGVkIHtcbiAgICAuY29sbGVjdGljb24tc20tdHJpYW5nbGUtdXAgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cbiAgICAuY29sbGVjdGljb24tc20tdHJpYW5nbGUtZG93biB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgfVxufVxuXG4uZHJvcGRvd24ge1xuICB3aWR0aDogMjAwcHg7XG4gIGJhY2tncm91bmQ6ICRkcm9wZG93bi1iZztcbiAgei1pbmRleDogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kcm9wZG93bi0tbW9iaWxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICRkcm9wZG93bi1iZztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW4tdG9wOiAuNWVtO1xuXG4gIGEsXG4gIGE6bGluayxcbiAgYTpob3ZlcixcbiAgYTphY3RpdmUsXG4gIGE6dmlzaXRlZCB7XG4gICAgY29sb3I6ICRiYXNlLWNvbG9yO1xuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gIH1cbn1cblxuLmRyb3Bkb3duLS1pdGVtIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIHBhZGRpbmc6IDFlbSAxLjI1ZW07XG4gIHRleHQtc2hhZG93OiAjRkZGO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIGEge1xuICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuLmRyb3Bkb3duLS1jYXRlZ29yeSB7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZmZmO1xuICB9XG4gICY6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gIH1cbn1cblxuLmRyb3Bkb3duLS1jYXRlZ29yeV9jaGlsZCB7XG4gIG1hcmdpbi1sZWZ0OiAuNzVlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZHJvcGRvd24tLXJldmVyc2Uge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgd2lkdGg6IDE4MHB4O1xuXG4gIC5kcm9wZG93bi0tY2F0ZWdvcnlfY2hpbGQge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogLjc1ZW07XG4gIH1cbn1cbiIsIiRiYXItaGVpZ2h0OiAxLjVlbTtcbiR0aXRsZS13aWR0aDogMTUlO1xuJHNjb3JlLXdpZHRoOiA4JTtcbiRiYXItd2lkdGg6IDEwMCUgLSAkdGl0bGUtd2lkdGggLSAkc2NvcmUtd2lkdGg7XG4kdGl0bGUtd2lkdGgtc206IDI1JTtcbiRzY29yZS13aWR0aC1zbTogMTUlO1xuJGJhci13aWR0aC1zbTogMTAwJSAtICR0aXRsZS13aWR0aC1zbSAtICRzY29yZS13aWR0aC1zbTtcblxuI2luZGV4LS12aXpfY29udGFpbmVyIHtcbiAgQGV4dGVuZCAuY29udGFpbjtcbn1cblxuI2NhdGVnb3J5LS1pbnRlcm5ldCxcbiNjYXRlZ29yeS0tdGVsY28ge1xuICBAaW5jbHVkZSBub3NlbGVjdDtcbn1cblxuLnZpcy0tcm93IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogLjI1ZW07XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICBsaW5lLWhlaWdodDogMS40ZW07XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLnZpcy0tcm93X3RpdGxlIHtcbiAgd2lkdGg6ICR0aXRsZS13aWR0aC1zbTtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgd2lkdGg6ICR0aXRsZS13aWR0aDtcbiAgfVxuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4udmlzLS1jYXRlZ29yeV9zY29yZSB7XG4gIHdpZHRoOiAkc2NvcmUtd2lkdGgtc207XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIHdpZHRoOiAkc2NvcmUtd2lkdGg7XG4gIH1cbiAgZm9udC1mYW1pbHk6ICRzaW1wbG9uO1xuICBjb2xvcjogJGJsYWNrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi52aXMtLXR5cGUge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogJGdyYXk7XG59XG5cbi52aXMtLWhlYWRlciB7XG4gIGJvcmRlci1ib3R0b206IC4xZW0gc29saWQgJGxpZ2h0O1xuICBmb250LXNpemU6IC43NWVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cblxuI2NhdGVnb3J5LS1pbnRlcm5ldCAudmlzLS1oZWFkZXIge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuXG4udmlzLS1oZWFkZXJfaXRlbSB7XG4gIGxpbmUtaGVpZ2h0OiAxZW07XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICRibGFjaztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1mYW1pbHk6ICRzaW1wbG9uO1xuICBwYWRkaW5nLXRvcDogLjVlbTtcbiAgcGFkZGluZy1ib3R0b206IC41ZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgPiBhIHtcbiAgICBjb2xvcjogJGJsYWNrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAuMnMgZWFzZS1vdXQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgICB9XG4gIH1cbn1cblxuLnNvcnQgPiAuY29sbGVjdGljb24geyBtYXJnaW4tbGVmdDogLjI1ZW07IH1cbi5zb3J0LWFzYyA+IC5jb2xsZWN0aWNvbjpiZWZvcmUgeyBjb250ZW50OiBcIlxcRUE3M1wiOyB9XG4uc29ydC1kZXNjID4gLmNvbGxlY3RpY29uOmJlZm9yZSB7IGNvbnRlbnQ6IFwiXFxFQTc0XCI7IH1cbi5zb3J0LW5vbmUgPiAuY29sbGVjdGljb246YmVmb3JlIHsgY29udGVudDogXCJcXEVBNzVcIjsgfVxuLnNvcnQtc29ydCA+IC5jb2xsZWN0aWNvbjpiZWZvcmUgeyBjb250ZW50OiBcIlxcRUE3NlwiOyB9XG5cbi52aXMtLWhlYWRlcl9zY29yZSB7XG4gIHdpZHRoOiAkc2NvcmUtd2lkdGgtc207XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIHdpZHRoOiAkc2NvcmUtd2lkdGg7XG4gIH1cbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udmlzLS1yb3dfYmFycyB7XG4gIHdpZHRoOiAkYmFyLXdpZHRoLXNtO1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICB3aWR0aDogJGJhci13aWR0aDtcbiAgfVxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi52aXMtLXJvd19iYXIge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICB3aWR0aDogMjIlO1xuICB9XG59XG5cbi5iYXItLWNvdW50XzEsXG4uYmFyLS1jb3VudF8yLFxuLmJhci0tY291bnRfMyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi52aXMtLWhvcml6X2Jhcl9jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJGJhci1oZWlnaHQ7XG4gIGJhY2tncm91bmQ6ICRiZWlnZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuMnMgZWFzZS1pblxufVxuXG4udmlzLS1ob3Jpel9iYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgaGVpZ2h0OiAkYmFyLWhlaWdodDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6IGJsYWNrO1xufVxuXG4udmlzLS1iYXJfdG90YWwge1xuICBiYWNrZ3JvdW5kOiAkY2F0LXRvdGFsO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4ycyBlYXNlLWluO1xufVxuLnZpcy0tYmFyX2NvbW1pdG1lbnQge1xuICBiYWNrZ3JvdW5kOiAkY2F0LWNvbW1pdG1lbnQ7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjJzIGVhc2UtaW5cbn1cbi52aXMtLWJhcl9mcmVlZG9tIHtcbiAgYmFja2dyb3VuZDogJGNhdC1mcmVlZG9tO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4ycyBlYXNlLWluXG59XG4udmlzLS1iYXJfcHJpdmFjeSB7XG4gIGJhY2tncm91bmQ6ICRjYXQtcHJpdmFjeTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuMnMgZWFzZS1pblxufVxuXG4udmlzLS1ob3Jpel9iYXJfY29udGFpbmVyOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogZGFya2VuKCRiZWlnZSwgMyUpO1xuICAudmlzLS1iYXJfdG90YWwgeyBiYWNrZ3JvdW5kOiBkYXJrZW4oJGNhdC10b3RhbCwgMjAlKTsgfVxuICAudmlzLS1iYXJfY29tbWl0bWVudCB7IGJhY2tncm91bmQ6IGRhcmtlbigkY2F0LWNvbW1pdG1lbnQsIDIwJSk7IH1cbiAgLnZpcy0tYmFyX2ZyZWVkb20geyBiYWNrZ3JvdW5kOiBkYXJrZW4oJGNhdC1mcmVlZG9tLCAyMCUpOyB9XG4gIC52aXMtLWJhcl9wcml2YWN5IHsgYmFja2dyb3VuZDogZGFya2VuKCRjYXQtcHJpdmFjeSwgMjAlKTsgfVxufVxuIiwiJGxhYmVsLXBhZGRpbmc6IC41ZW0gLjU3MjVlbSAuNGVtO1xuXG5cbi5jb21wLS10aXRsZSB7XG4gIG1hcmdpbi10b3A6IC40ZW07XG4gIG1hcmdpbi1ib3R0b206IC4zMjVlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6ICRibGFjaztcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAuc2NvcmUtLXRpZXIge1xuICAgIGZvbnQtc2l6ZTogLjhlbTtcbiAgICBtYXJnaW4tbGVmdDogLjVlbTtcbiAgICBwYWRkaW5nOiAuMTVlbSAuNGVtIC4xZW07XG5cbiAgfVxufVxuXG4uY29tcC0tY29tcGFueV9saW5rIHtcbiAgLy8gQGV4dGVuZCAudmlzLS1yb3dfaXRlbTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY29tcC0tdHlwZSB7XG4gIG1hcmdpbi1sZWZ0OiAxZW07XG4gIHBhZGRpbmc6ICRsYWJlbC1wYWRkaW5nO1xuICBiYWNrZ3JvdW5kOiAkYmVpZ2U7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5jb21wLS1zdWJfd2Vic2l0ZSB7XG4gIGNvbG9yOiAkYmFzZS1jb2xvcjtcbn1cblxuLmNvbXAtLWFib3V0IHtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDUpO1xuICB9XG59XG5cbi5hYm91dC0tc3Vic2VjdGlvbiB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7XG4gICAgbWFyZ2luLXRvcDogMmVtO1xuICB9XG5cbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGluaXRpYWw7XG5cbiAgICBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogMWVtO1xuICAgIH1cbiAgfVxufVxuXG4uY29tcC0tc3RhdCB7XG4gIG1hcmdpbi10b3A6IDEuNWVtO1xuICBsaW5lLWhlaWdodDogMWVtO1xufVxuXG4uc3RhdC0ta2V5IHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAuNzVlbTtcbiAgY29sb3I6IGxpZ2h0ZW4oJGRhcmssIDUlKTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jb21wLS1kb3RfY2hhcnQge1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNyk7XG4gIH1cbn1cblxuLmNvbXAtLWFuYWx5c2lzIHtcblxuICBoMyB7XG4gICAgcGFkZGluZy10b3A6IC41ZW07XG4gICAgcGFkZGluZy1ib3R0b206IC4zZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRiZWlnZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjJzIGVhc2Utb3V0O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGRhcms7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbm9zZWxlY3Q7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICdTaG93IOKWvCc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMWVtO1xuICAgIH1cblxuICAgICYuZXhwYW5kZWQgIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZGFyaztcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnSGlkZSDilrInO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHAge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi5zdXJ2ZXktcm93IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogMWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xuXG4gICY6Zmlyc3QtY2hpbGQge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG59XG5cbi5zdXJ2ZXktLXF1ZXN0aW9uX2hlZCB7XG4gIG1hcmdpbi10b3A6IDEuMjVlbTtcbn1cblxuLnN1cnZleS0tc2NvcmUge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4uc3VydmV5LS1pbmxpbmUge1xuICBtYXJnaW4tdG9wOiAuNWVtO1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBtYXJnaW4tbGVmdDogMS41ZW07XG4gIH1cbn1cblxuLnN1cnZleS0taW5saW5lX25hbWUge1xuICBmb250LXNpemU6IC45ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5zdXJ2ZXktLWl0ZW1fdGl0bGUge1xuICBtYXJnaW4tdG9wOiAuNWVtO1xuICBtYXJnaW4tYm90dG9tOiAuM2VtO1xufVxuXG4uc2NvcmUtLXRpZXIge1xuICBwYWRkaW5nOiAuNWVtIC43NWVtIC40ZW07XG59XG5cbi5zY29yZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IC41ZW07XG4gIC5zY29yZS0tdGllciB7XG4gICAgbWFyZ2luLWxlZnQ6IC43ZW07XG4gICAgcGFkZGluZzogLjE1ZW0gLjRlbSAuMWVtO1xuICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgfVxufVxuXG5cbi5zY29yZS0tdGllciB7XG4gIG1pbi13aWR0aDogNTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpbmNsdWRlIG1lZGlhKGxhcmdlLXVwKSB7XG4gICAgbWluLXdpZHRoOiA1MnB4O1xuICB9XG59XG5cbi5zY29yZS0tdGllcl8zIHtcbiAgYmFja2dyb3VuZDogJHN1Y2Nlc3MtY29sb3I7XG59XG4uc2NvcmUtLXRpZXJfMiB7XG4gIGJhY2tncm91bmQ6ICRncmF5O1xufVxuLnNjb3JlLS10aWVyXzEge1xuICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiAgY29sb3I6ICR3aGl0ZTtcbn1cbi5zY29yZS0tdGllcl8wIHtcbiAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4gIGNvbG9yOiAkd2hpdGU7XG59XG4uc2NvcmVfX3RpZXJfbmEge1xuICBiYWNrZ3JvdW5kOiAkZGFyaztcbn1cblxuLnNjb3JlLS10aWVyX3Qge1xuICBiYWNrZ3JvdW5kOiAkY2F0LXRvdGFsO1xuICBjb2xvcjogJHdoaXRlO1xufVxuXG4uc2NvcmUtLXRpZXJfYyB7XG4gIGJhY2tncm91bmQ6ICRjYXQtY29tbWl0bWVudDtcbn1cblxuLnNjb3JlLS10aWVyX3Age1xuICBiYWNrZ3JvdW5kOiAkY2F0LXByaXZhY3k7XG59XG5cbi5zY29yZS0tdGllcl9mIHtcbiAgYmFja2dyb3VuZDogJGNhdC1mcmVlZG9tO1xufVxuXG4ubGV2ZWwge1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBtYXJnaW4tbGVmdDogMWVtO1xuICB9XG59XG5cbi5sYWJlbC0taW5zdWZmaWNpZW50IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwYWRkaW5nLXRvcDogMWVtO1xuICBwYWRkaW5nLWJvdHRvbTogMWVtO1xufVxuIiwiLmluZGljYXRvci0tc3ViX3RleHQge1xuICBsaW5lLWhlaWdodDogMS44ZW07XG59XG5cbi5pbmRpY2F0b3ItLWNob2ljZXMsXG4uaW5kaWNhdG9yLS1zdWJfY2hvaWNlcyB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgbGlzdC1zdHlsZTogaW5pdGlhbDtcblxuICBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICBAaW5jbHVkZSBtZWRpYShsYXJnZS11cCkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDJlbTtcbiAgICB9XG4gIH1cbn1cbiIsIi5jaXJjbGUtLWNoYXJ0c19jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgQGluY2x1ZGUgbWVkaWEgKG1lZGl1bS11cCkge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxufVxuXG4uY2lyY2xlLS1jaGFydCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgQGluY2x1ZGUgbWVkaWEgKG1lZGl1bS11cCkge1xuICAgIHdpZHRoOiAzMyU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG4uY2lyY2xlLS1sYWJlbF92YWwsXG4uY2lyY2xlLS1sYWJlbF9uYW1lIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICBAaW5jbHVkZSBtZWRpYShsYXJnZS11cCkge1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gIH1cbn1cblxuLmNpcmNsZS0tbGFiZWxfbmFtZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmlsbDogJGJhc2UtY29sb3I7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG5cbi5jaXJjbGUtLWFyY19yZW1haW5kZXIgeyBmaWxsOiAkYmVpZ2U7IH1cbi5jaXJjbGUtLWFyY19jb21taXRtZW50IHsgZmlsbDogJGNhdC1jb21taXRtZW50OyB9XG4uY2lyY2xlLS1hcmNfZnJlZWRvbSB7IGZpbGw6ICRjYXQtZnJlZWRvbTsgfVxuLmNpcmNsZS0tYXJjX3ByaXZhY3kgeyBmaWxsOiAkY2F0LXByaXZhY3k7IH1cbiIsIiRkYy1oZWlnaHQ6IDVlbTtcbiRkYy1iYXNlbGluZS10b3A6ICRkYy1oZWlnaHQgLyAyIC0gLjA1ZW07XG5cbiRkYy1kb3QtaGVpZ2h0OiAuOWVtO1xuJGRjLWRvdC10b3A6ICRkYy1oZWlnaHQgLyAyIC0gJGRjLWRvdC1oZWlnaHQgLyAyO1xuXG4kZGMtYWN0aXZlLWRvdC1oZWlnaHQ6IDEuMmVtO1xuJGRjLWFjdGl2ZS1kb3QtdG9wOiAkZGMtaGVpZ2h0IC8gMiAtICRkYy1hY3RpdmUtZG90LWhlaWdodCAvIDI7XG5cbkBtaXhpbiBkb3QtY29sb3IoJGNvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUoJGNvbG9yLCAxNSUpO1xuICB9XG59XG5cbi5kb3RjaGFydCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIG1hcmdpbjogMCAwIDNlbTtcbiAgaGVpZ2h0OiAkZGMtaGVpZ2h0O1xuICBAaW5jbHVkZSBtZWRpYShtZWRpdW0tdXApIHtcbiAgICBtYXJnaW46IDAgMWVtIDNlbTtcbiAgfVxufVxuXG4uZG90Y2hhcnQtLWxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICRkYy1iYXNlbGluZS10b3AgKyAuNWVtO1xuICBmb250LXNpemU6IDFlbTtcbiAgY29sb3I6ICRkYXJrO1xufVxuXG4uZG90Y2hhcnQtLWxhYmVsX2xlZnQge1xuICBsZWZ0OiAwO1xufVxuXG4uZG90Y2hhcnQtLWxhYmVsX3JpZ2h0IHtcbiAgcmlnaHQ6IDA7XG59XG5cbi5kb3RjaGFydC0tbGFiZWxfaGlnaGxpZ2h0IHtcbiAgdG9wOiAkZGMtYmFzZWxpbmUtdG9wIC0gJGRjLWFjdGl2ZS1kb3QtaGVpZ2h0ICogMjtcbiAgbWFyZ2luLWxlZnQ6IC0kZGMtYWN0aXZlLWRvdC1oZWlnaHQvMiArIC4xZW07XG59XG5cbi5kb3RjaGFydC0tYmFzZWxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDBweDtcbiAgbGVmdDogMDtcbiAgdG9wOiAkZGMtYmFzZWxpbmUtdG9wO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXk7XG59XG5cbi5kb3Qge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6ICRkYy1kb3QtaGVpZ2h0O1xuICBoZWlnaHQ6ICRkYy1kb3QtaGVpZ2h0O1xuICB0b3A6ICRkYy1kb3QtdG9wO1xuICBtYXJnaW4tbGVmdDogLSRkYy1kb3QtaGVpZ2h0IC8gMjtcblxuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuNHMgZWFzZS1vdXQsIGJvcmRlci1jb2xvciAuNHMgZWFzZS1vdXQ7XG4gIEBpbmNsdWRlIGRvdC1jb2xvcigkZGFyayk7XG4gIGJvcmRlci1jb2xvcjogJGxpZ2h0O1xufVxuXG5cbi5kb3RjaGFydC0tdG90YWwgLmhpZ2hsaWdodCB7IEBpbmNsdWRlIGRvdC1jb2xvcigkY2F0LXRvdGFsKTsgfVxuLmRvdGNoYXJ0LS1wcml2YWN5IC5oaWdobGlnaHQgeyBAaW5jbHVkZSBkb3QtY29sb3IoJGNhdC1wcml2YWN5KTsgfVxuLmRvdGNoYXJ0LS1jb21taXRtZW50IC5oaWdobGlnaHQgeyBAaW5jbHVkZSBkb3QtY29sb3IoJGNhdC1jb21taXRtZW50KTsgfVxuLmRvdGNoYXJ0LS1mcmVlZG9tIC5oaWdobGlnaHQgeyBAaW5jbHVkZSBkb3QtY29sb3IoJGNhdC1mcmVlZG9tKTsgfVxuLmRvdGNoYXJ0IC5oaWdobGlnaHQgeyBib3JkZXItY29sb3I6ICRsaWdodDsgfVxuXG4uZG90LmhpZ2hsaWdodCB7XG4gIHdpZHRoOiAkZGMtYWN0aXZlLWRvdC1oZWlnaHQ7XG4gIGhlaWdodDogJGRjLWFjdGl2ZS1kb3QtaGVpZ2h0O1xuICB0b3A6ICRkYy1hY3RpdmUtZG90LXRvcDtcbiAgbWFyZ2luLWxlZnQ6IC0kZGMtYWN0aXZlLWRvdC1oZWlnaHQgLyAyO1xufVxuXG4uZG90Y2hhcnQtLXRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogLjhlbSAxZW0gLjZlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICBjb2xvcjogJHdoaXRlO1xuICBib3R0b206ICRkYy1kb3QtdG9wICsgMmVtO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBib3R0b20gLjJzIGVhc2Utb3V0LCBvcGFjaXR5IC4ycyBlYXNlLW91dDtcblxuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBib3R0b206ICRkYy1kb3QtdG9wICsgMi41ZW07XG4gIH1cbn1cbiIsIi5iYXItLWF4aXNfeSBwYXRoLFxuLmJhci0tYXhpc195IGxpbmUsXG4uYmFyLS1heGlzX3ggcGF0aCxcbi5iYXItLWF4aXNfeCBsaW5lIHtcbiAgZmlsbDogbm9uZTtcbiAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzO1xuICBzdHJva2U6ICRncmF5O1xufVxuXG4uYmFyLS1kZWZhdWx0IHsgZmlsbDogJGNhdC10b3RhbDsgfVxuLmJhci0tY29tbWl0bWVudCB7IGZpbGw6ICRjYXQtY29tbWl0bWVudDsgfVxuLmJhci0tZnJlZWRvbSB7IGZpbGw6ICRjYXQtZnJlZWRvbTsgfVxuLmJhci0tcHJpdmFjeSB7IGZpbGw6ICRjYXQtcHJpdmFjeTsgfVxuXG4uYmFyLS16ZXJvIHtcbiAgZmlsbDogJHByaW1hcnktY29sb3I7XG59XG5cbi5iYXItLXRpcCB7XG4gIEBpbmNsdWRlIHRvb2x0aXA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2Utb3V0O1xufVxuXG4uYmFyLS10aXA6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZvbnQtc2l6ZTogMWVtO1xuICB3aWR0aDogMTAwJTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiAkYmxhY2s7XG4gIGNvbnRlbnQ6IFwiXFwyNUJDXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYmFyLS10aXAubjphZnRlciB7XG4gIG1hcmdpbjogLTFweCAwIDAgMDtcbiAgdG9wOiAxMDAlO1xuICBsZWZ0OiAwO1xufVxuXG4uYmFyLS1heGlzX3kge1xuICBmb250LXNpemU6IC44ZW07XG4gIGZpbGw6ICRibGFjaztcbn1cblxuLmJhci0tYXhpc194IHRleHQge1xuICBmb250LXNpemU6IC44ZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmlsbDogJGJhc2UtY29sb3I7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG4iLCIvLyBQUklOVCBTVFlMRVNcblxuLnNtYWxsLW9ubHkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLXVwKSB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cblxuLm5vdC1zbWFsbCB7XG4gIEBpbmNsdWRlIG1lZGlhKHNtYWxsKSB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cblxuLm1lZGl1bS1vbmx5IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgQGluY2x1ZGUgbWVkaWEobWVkaXVtLW9ubHkpIHsgZGlzcGxheTogYmxvY2s7IH1cbn1cblxuLm1lZGl1bS11cCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIG1lZGlhKG1lZGl1bS11cCkgeyBkaXNwbGF5OiBibG9jazsgfVxufVxuXG4ubWVkaXVtLWRvd24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgQGluY2x1ZGUgbWVkaWEobGFyZ2UtdXApIHsgZGlzcGxheTogbm9uZTsgfVxufVxuXG4ubGFyZ2UtdXAge1xuICBkaXNwbGF5OiBub25lO1xuICBAaW5jbHVkZSBtZWRpYShsYXJnZS11cCkgeyBkaXNwbGF5OiBibG9jazsgfVxufVxuXG5AcGFnZSB7XG4gIG1hcmdpbjogMWNtIDEuNWNtO1xufVxuXG5AbWVkaWEgcHJpbnQge1xuICAqIHtcbiAgICBjb2xvcjogJGJhc2UtY29sb3I7XG4gIH1cbiAgYSwgYTp2aXNpdGVkIHtcbiAgICBjb2xvcjogJGJhc2UtY29sb3I7XG4gIH1cbiAgLm5vLXByaW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5wYWdlLWJvZHkge1xuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xuICB9XG4gIC5tb2RhbC5kZXN0cm95ZWQge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3BhY2l0eTogMTtcbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICB3aWR0aDogOTAlO1xuICAgICAgbWFyZ2luOiAycmVtIDAgMCAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0F5RkdFLEFBQUEsSUFBSSxDQUFDO0VBQ0gsVUFBVSxFQUFFLFVBQVUsR0FDdkI7O0FBRUQsQUFDRSxDQURELEVBQUQsQ0FBQyxBQUVFLE9BQU8sRUFGVixDQUFDLEFBR0UsUUFBUSxDQUFDO0VBQ1IsVUFBVSxFQUFFLE9BQU8sR0FDcEI7O0FhWkwsNERBQTREO0FBRTVEOzs7O0dBSUc7QWJIRCxBQUFBLElBQUksQ2FLRDtFQUNILFdBQVcsRUFBRSxVQUFVO0VBQUUsT0FBTztFQUNoQyxvQkFBb0IsRUFBRSxJQUFJO0VBQUUsT0FBTztFQUNuQyx3QkFBd0IsRUFBRSxJQUFJO0VBQUUsT0FBTyxFQUN4Qzs7QUFFRDs7R0FFRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUMsR0FDVjs7QUFFRDtnRkFDZ0Y7QUFFaEY7Ozs7R0FJRztBQUVILEFBQUEsT0FBTztBQUNQLEtBQUs7QUFDTCxPQUFPO0FBQ1AsVUFBVTtBQUNWLE1BQU07QUFDTixNQUFNO0FBQ04sTUFBTTtBQUNOLE1BQU07QUFDTixJQUFJO0FBQ0osR0FBRztBQUNILE9BQU87QUFDUCxPQUFPLENBQUM7RUFDTixPQUFPLEVBQUUsS0FBSyxHQUNmOztBQUVEOzs7R0FHRztBQUVILEFBQUEsS0FBSztBQUNMLE1BQU07QUFDTixRQUFRO0FBQ1IsS0FBSyxDQUFDO0VBQ0osT0FBTyxFQUFFLFlBQVk7RUFBRSxPQUFPO0VB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 */
