/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

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

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

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

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

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

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

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */
a:active,
a:hover {
  outline: 0; }

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

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

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

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

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

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

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

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

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

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

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  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.
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
 * 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
\*------------------------------------*/
/**
 * As well as using normalize.css, it is often advantageous to remove all
 * margins from certain elements.
 */
body,
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
dl, dd, ol, ul,
form, fieldset, legend,
figure,
table, th, td, caption,
hr {
  margin: 0;
  padding: 0; }

/**
 * Give a help cursor to elements that give extra info on `:hover`.
 */
abbr[title],
dfn[title] {
  cursor: help; }

/**
 * Remove underlines from potentially troublesome elements.
 */
u,
ins {
  text-decoration: none; }

/**
 * Apply faux underlines to inserted text via `border-bottom`.
 */
ins {
  border-bottom: 1px solid; }

/*------------------------------------*    #BOX-SIZING
\*------------------------------------*/
/**
 * Set the global `box-sizing` state to `border-box`.
 *
 * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
 * paulirish.com/2012/box-sizing-border-box-ftw
 */
html {
  box-sizing: border-box; }

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

h1,
h2,
h3,
h4,
h5,
h6,
ul,
ol,
dl,
blockquote,
address,
hr,
table,
fieldset,
pre {
  margin-bottom: 0.75rem; }

figure,
p {
  margin-bottom: 1.5rem; }
  @media screen and (min-width: 960px) {
    figure,
    p {
      margin-bottom: 3rem; } }

html {
  min-height: 100%;
  overflow-y: scroll;
  font-family: "Fira Sans", Arial, sans-serif;
  font-size: 16px;
  font-weight: normal;
  line-height: 1.5;
  color: #21272d;
  background-color: #fff;
  -webkit-tap-highlight-color: transparent; }
  @media screen and (min-width: 960px) {
    html {
      font-size: 1.125rem; } }

body {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  min-height: 100vh;
  -webkit-flex-direction: column;
      -ms-flex-direction: column;
          flex-direction: column; }
  @media print {
    body * {
      display: none; }
    body::after {
      content: 'Please, do not waste paper by printing webpages.'; } }
  body.no-pointers-events {
    pointer-events: none; }

::-moz-selection {
  background: #8fc11e;
  color: #21272d;
  text-shadow: none; }

::selection {
  background: #8fc11e;
  color: #21272d;
  text-shadow: none; }

header cite::-moz-selection,
header h3::-moz-selection,
header span::-moz-selection,
header p::-moz-selection {
  background: rgba(33, 39, 45, 0.2);
  color: #fff; }

header cite::selection,
header h3::selection,
header span::selection,
header p::selection {
  background: rgba(33, 39, 45, 0.2);
  color: #fff; }

@font-face {
  font-family: "Fira Mono";
  font-weight: normal;
  font-style: normal;
  src: url("../fonts/firamono-regular.woff2") format("woff2"), url("../fonts/firamono-regular.woff") format("woff"); }

@font-face {
  font-family: "Fira Sans";
  font-weight: 100;
  font-style: normal;
  src: url("../fonts/firasans-thin.woff2") format("woff2"), url("../fonts/firasans-thin.woff") format("woff"); }

@font-face {
  font-family: "Fira Sans";
  font-weight: 300;
  font-style: normal;
  src: url("../fonts/firasans-light.woff2") format("woff2"), url("../fonts/firasans-light.woff") format("woff"); }

@font-face {
  font-family: "Fira Sans";
  font-weight: normal;
  font-style: normal;
  src: url("../fonts/firasans-book.woff2") format("woff2"), url("../fonts/firasans-book.woff") format("woff"); }

@font-face {
  font-family: "Fira Sans";
  font-weight: bold;
  font-style: normal;
  src: url("../fonts/firasans-medium.woff2") format("woff2"), url("../fonts/firasans-medium.woff") format("woff"); }

h1 {
  margin-bottom: 0;
  font-size: 2rem;
  font-weight: normal;
  letter-spacing: .05em; }
  @media screen and (min-width: 960px) {
    h1 {
      font-size: 3rem; } }

h2 {
  margin-bottom: 1.5rem;
  font-size: 1.125rem;
  letter-spacing: 0.05em;
  font-weight: 700;
  color: #8fc11e;
  text-transform: uppercase; }
  @media screen and (min-width: 480px) {
    h2 {
      font-size: 1.5rem; } }
  h1 + h2 {
    margin-bottom: 4.5rem; }

h3 {
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: 0.05em; }
  @media screen and (min-width: 960px) {
    h3 {
      font-size: 1.5rem; } }

h4 {
  font-size: 1.125rem; }

h5 {
  font-size: 1rem; }

h6 {
  font-size: 0.875rem; }

a {
  color: #8fc11e;
  text-decoration: underline; }
  a:hover, a:active, a:focus {
    text-decoration: none; }
  h1 > a,
  h2 > a,
  h3 > a,
  h4 > a,
  h5 > a,
  h6 > a {
    text-decoration: none; }
    h1 > a:hover, h1 > a:active, h1 > a:focus,
    h2 > a:hover,
    h2 > a:active,
    h2 > a:focus,
    h3 > a:hover,
    h3 > a:active,
    h3 > a:focus,
    h4 > a:hover,
    h4 > a:active,
    h4 > a:focus,
    h5 > a:hover,
    h5 > a:active,
    h5 > a:focus,
    h6 > a:hover,
    h6 > a:active,
    h6 > a:focus {
      text-decoration: underline;
      color: #8fc11e; }
    h1 > a::after,
    h2 > a::after,
    h3 > a::after,
    h4 > a::after,
    h5 > a::after,
    h6 > a::after {
      font-size: 80%;
      color: #8fc11e;
      content: '\0020\221e'; }

nav ul,
nav ol,
fieldset ul,
fieldset ol {
  list-style: none; }

.content ul {
  padding-left: 1.5rem;
  list-style: square; }

::-webkit-input-placeholder {
  color: #99a7b4; }

::-moz-placeholder {
  color: #99a7b4; }

:-ms-input-placeholder {
  color: #99a7b4; }

::placeholder {
  color: #99a7b4; }

[unselectable] {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none; }

[type=text],
[type=tel],
[type=email],
[type=search],
[type=number],
[type=password],
select,
textarea {
  position: relative;
  top: 0;
  left: 0;
  margin-bottom: 0.6rem;
  width: 100%;
  border-bottom: 1px solid #21272d;
  border-top: 0;
  border-left: 0;
  border-right: 0;
  border-radius: 0;
  -moz-appearance: none;
       appearance: none;
  color: #21272d;
  outline: 0;
  -webkit-appearance: none;
  z-index: 10;
  background: none; }
  [type=text]:hover, [type=text]:active, [type=text]:focus,
  [type=tel]:hover,
  [type=tel]:active,
  [type=tel]:focus,
  [type=email]:hover,
  [type=email]:active,
  [type=email]:focus,
  [type=search]:hover,
  [type=search]:active,
  [type=search]:focus,
  [type=number]:hover,
  [type=number]:active,
  [type=number]:focus,
  [type=password]:hover,
  [type=password]:active,
  [type=password]:focus,
  select:hover,
  select:active,
  select:focus,
  textarea:hover,
  textarea:active,
  textarea:focus {
    border-color: #8fc11e; }

label {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  display: block;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, top 0.2s, bottom 0.2s, right 0.2s, left 0.2s;
  color: #99a7b4;
  width: 100%; }
  .focus label,
  .filled label {
    font-size: 70%;
    z-index: 2;
    top: -1.5rem; }
  .filled label {
    color: #21272d;
    opacity: .8; }
  .focus label {
    color: #8fc11e; }

fieldset {
  margin: 0;
  border: 0; }

textarea {
  display: block;
  resize: vertical;
  height: 28px;
  transition: height 0.2s; }
  .filled textarea,
  .focus textarea {
    height: 190px; }

.focus select,
.filled select {
  color: #21272d; }

.form {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex-wrap: wrap;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
  -webkit-justify-content: space-between;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.form-item {
  position: relative;
  top: auto;
  left: auto;
  width: 100%; }
  .form-item:not(.form-item__feedback_set) {
    margin-top: 2.25rem; }
  @media screen and (min-width: 960px) {
    form > .form-item:not(.form-item__submit-feedback):not(.form-item__feedback_website) {
      width: 48%; } }
  .form-item__feedback_website input,
  .form-item__feedback_website label {
    display: none; }
  .form-item__feedback_website .field--error--message {
    position: relative;
    top: auto;
    left: auto;
    font-size: 100%; }
  .form-item__submit-feedback {
    width: 100%;
    text-align: center; }
  .form-item__feedback_subject:after {
    position: absolute;
    top: -0.3rem;
    right: 0.3rem;
    content: '^';
    color: #8fc11e;
    -webkit-transform: rotate(180deg);
            transform: rotate(180deg); }

.field--error--message {
  position: absolute;
  top: 1.8rem;
  color: #f0391f;
  font-size: 70%; }
  .focus:not(.form-item__feedback_website) .field--error--message,
  .filled:not(.form-item__feedback_website) .field--error--message {
    display: none; }

audio,
canvas,
img,
video {
  max-width: 100%;
  max-height: none;
  width: auto;
  height: auto; }

audio,
canvas,
iframe,
img,
picture,
svg,
video {
  vertical-align: middle; }

table {
  width: 100%; }

td {
  vertical-align: top; }

th {
  text-align: left; }

.feedback__status {
  padding-top: 4.5rem;
  padding-bottom: 7.5rem;
  text-align: center; }
  .feedback__status svg {
    stroke: #21272d;
    fill: #fff; }
    .feedback__status svg:hover .feedback__status--animate, .feedback__status svg:active .feedback__status--animate, .feedback__status svg:focus .feedback__status--animate {
      -webkit-animation: pulse .7s linear .1s normal infinite forwards;
              animation: pulse .7s linear .1s normal infinite forwards; }
  .feedback__status--rack {
    stroke: #99a7b4; }
  .feedback__status--action {
    stroke: #99a7b4; }
  .feedback__status--error .feedback__status--action {
    stroke: #f0391f;
    fill: #f0391f; }
  .feedback__status--error .feedback__status--animate {
    -webkit-animation: error .7s linear .1s alternate 1 forwards;
            animation: error .7s linear .1s alternate 1 forwards; }
  .feedback__status--success .feedback__status--action {
    stroke: #8fc11e;
    fill: #8fc11e; }
  .feedback__status--success .feedback__status--animate {
    -webkit-animation: success .7s linear .1s alternate 1 forwards;
            animation: success .7s linear .1s alternate 1 forwards; }

@-webkit-keyframes pulse {
  0%,
  50%,
  100% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  20% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); }
  80% {
    d: path("M104 80.4l38.7-18 34-15.8L190 75.2l-20.3 9.5L157 57.3"); } }

@keyframes pulse {
  0%,
  50%,
  100% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  20% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); }
  80% {
    d: path("M104 80.4l38.7-18 34-15.8L190 75.2l-20.3 9.5L157 57.3"); } }

@-webkit-keyframes success {
  0% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); }
  5% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  25% {
    d: path("M104 80.4l38.7-18 34-15.8L190 75.2l-20.3 9.5L157 57.3"); }
  50% {
    d: path("M104 81.3l27.4-32.7 24-28.6 24.2 20.3-14.3 17L142.3 38"); }
  75% {
    d: path("M104 81.4l11-41.2 9.7-36 30.6 8-5.8 21.6-29-7.8"); }
  100% {
    d: path("M104 80.5l.8-42.6.6-37.5 31.5.6-.4 22.4-30-.5"); } }

@keyframes success {
  0% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); }
  5% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  25% {
    d: path("M104 80.4l38.7-18 34-15.8L190 75.2l-20.3 9.5L157 57.3"); }
  50% {
    d: path("M104 81.3l27.4-32.7 24-28.6 24.2 20.3-14.3 17L142.3 38"); }
  75% {
    d: path("M104 81.4l11-41.2 9.7-36 30.6 8-5.8 21.6-29-7.8"); }
  100% {
    d: path("M104 80.5l.8-42.6.6-37.5 31.5.6-.4 22.4-30-.5"); } }

@-webkit-keyframes error {
  0% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  100% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); } }

@keyframes error {
  0% {
    d: path("M104 80.7l42.7-.7 37.3-.7.6 31.6-22.4.3-.6-30.2"); }
  100% {
    d: path("M104 79.7l38.6 18 34 15.8-13.5 28.7-20.2-9.5 12.7-27.3"); } }

@-webkit-keyframes rotation {
  from {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg); }
  to {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg); } }

@keyframes rotation {
  from {
    -webkit-transform: rotate(0deg);
            transform: rotate(0deg); }
  to {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg); } }

@-webkit-keyframes animation-1 {
  0% {
    -webkit-transform: matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -500, 0, 1);
            transform: matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -500, 0, 1); }
  2.38095% {
    -webkit-transform: matrix3d(0.51288, 0, 0, 0, 0, 0.51288, 0, 0, 0, 0, 1, 0, 0, -338.45863, 0, 1);
            transform: matrix3d(0.51288, 0, 0, 0, 0, 0.51288, 0, 0, 0, 0, 1, 0, 0, -338.45863, 0, 1); }
  4.76191% {
    -webkit-transform: matrix3d(0.7853, 0, 0, 0, 0, 0.7853, 0, 0, 0, 0, 1, 0, 0, -207.30949, 0, 1);
            transform: matrix3d(0.7853, 0, 0, 0, 0, 0.7853, 0, 0, 0, 0, 1, 0, 0, -207.30949, 0, 1); }
  7.14286% {
    -webkit-transform: matrix3d(0.91741, 0, 0, 0, 0, 0.91741, 0, 0, 0, 0, 1, 0, 0, -110.81914, 0, 1);
            transform: matrix3d(0.91741, 0, 0, 0, 0, 0.91741, 0, 0, 0, 0, 1, 0, 0, -110.81914, 0, 1); }
  9.52381% {
    -webkit-transform: matrix3d(0.97533, 0, 0, 0, 0, 0.97533, 0, 0, 0, 0, 1, 0, 0, -45.99977, 0, 1);
            transform: matrix3d(0.97533, 0, 0, 0, 0, 0.97533, 0, 0, 0, 0, 1, 0, 0, -45.99977, 0, 1); }
  11.9048% {
    -webkit-transform: matrix3d(0.99743, 0, 0, 0, 0, 0.99743, 0, 0, 0, 0, 1, 0, 0, -6.66537, 0, 1);
            transform: matrix3d(0.99743, 0, 0, 0, 0, 0.99743, 0, 0, 0, 0, 1, 0, 0, -6.66537, 0, 1); }
  14.2857% {
    -webkit-transform: matrix3d(1.0039, 0, 0, 0, 0, 1.0039, 0, 0, 0, 0, 1, 0, 0, 14.05956, 0, 1);
            transform: matrix3d(1.0039, 0, 0, 0, 0, 1.0039, 0, 0, 0, 0, 1, 0, 0, 14.05956, 0, 1); }
  16.6667% {
    -webkit-transform: matrix3d(1.00447, 0, 0, 0, 0, 1.00447, 0, 0, 0, 0, 1, 0, 0, 22.3791, 0, 1);
            transform: matrix3d(1.00447, 0, 0, 0, 0, 1.00447, 0, 0, 0, 0, 1, 0, 0, 22.3791, 0, 1); }
  19.0476% {
    -webkit-transform: matrix3d(1.00334, 0, 0, 0, 0, 1.00334, 0, 0, 0, 0, 1, 0, 0, 23.2423, 0, 1);
            transform: matrix3d(1.00334, 0, 0, 0, 0, 1.00334, 0, 0, 0, 0, 1, 0, 0, 23.2423, 0, 1); }
  21.4286% {
    -webkit-transform: matrix3d(1.00209, 0, 0, 0, 0, 1.00209, 0, 0, 0, 0, 1, 0, 0, 20.23606, 0, 1);
            transform: matrix3d(1.00209, 0, 0, 0, 0, 1.00209, 0, 0, 0, 0, 1, 0, 0, 20.23606, 0, 1); }
  23.8095% {
    -webkit-transform: matrix3d(1.00117, 0, 0, 0, 0, 1.00117, 0, 0, 0, 0, 1, 0, 0, 15.73295, 0, 1);
            transform: matrix3d(1.00117, 0, 0, 0, 0, 1.00117, 0, 0, 0, 0, 1, 0, 0, 15.73295, 0, 1); }
  26.1905% {
    -webkit-transform: matrix3d(1.0006, 0, 0, 0, 0, 1.0006, 0, 0, 0, 0, 1, 0, 0, 11.14505, 0, 1);
            transform: matrix3d(1.0006, 0, 0, 0, 0, 1.0006, 0, 0, 0, 0, 1, 0, 0, 11.14505, 0, 1); }
  28.5714% {
    -webkit-transform: matrix3d(1.00028, 0, 0, 0, 0, 1.00028, 0, 0, 0, 0, 1, 0, 0, 7.19352, 0, 1);
            transform: matrix3d(1.00028, 0, 0, 0, 0, 1.00028, 0, 0, 0, 0, 1, 0, 0, 7.19352, 0, 1); }
  30.9524% {
    -webkit-transform: matrix3d(1.00012, 0, 0, 0, 0, 1.00012, 0, 0, 0, 0, 1, 0, 0, 4.14609, 0, 1);
            transform: matrix3d(1.00012, 0, 0, 0, 0, 1.00012, 0, 0, 0, 0, 1, 0, 0, 4.14609, 0, 1); }
  33.3333% {
    -webkit-transform: matrix3d(1.00004, 0, 0, 0, 0, 1.00004, 0, 0, 0, 0, 1, 0, 0, 2.0033, 0, 1);
            transform: matrix3d(1.00004, 0, 0, 0, 0, 1.00004, 0, 0, 0, 0, 1, 0, 0, 2.0033, 0, 1); }
  35.7143% {
    -webkit-transform: matrix3d(1.00001, 0, 0, 0, 0, 1.00001, 0, 0, 0, 0, 1, 0, 0, 0.63156, 0, 1);
            transform: matrix3d(1.00001, 0, 0, 0, 0, 1.00001, 0, 0, 0, 0, 1, 0, 0, 0.63156, 0, 1); }
  38.0952% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.15025, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.15025, 0, 1); }
  40.4762% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.52034, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.52034, 0, 1); }
  42.8571% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.62906, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.62906, 0, 1); }
  45.2381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.59053, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.59053, 0, 1); }
  47.619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.4838, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.4838, 0, 1); }
  50% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.35866, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.35866, 0, 1); }
  52.381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.24278, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.24278, 0, 1); }
  54.7619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.14871, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.14871, 0, 1); }
  57.1429% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.07949, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.07949, 0, 1); }
  59.5238% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.033, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.033, 0, 1); }
  61.9048% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00478, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00478, 0, 1); }
  64.2857% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01009, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01009, 0, 1); }
  66.6667% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01605, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01605, 0, 1); }
  69.0476% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01667, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01667, 0, 1); }
  71.4286% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01452, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01452, 0, 1); }
  73.8095% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01129, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01129, 0, 1); }
  76.1905% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00799, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00799, 0, 1); }
  78.5714% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00516, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00516, 0, 1); }
  80.9524% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00297, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00297, 0, 1); }
  83.3333% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00144, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00144, 0, 1); }
  85.7143% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00045, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00045, 0, 1); }
  88.0952% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00011, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00011, 0, 1); }
  90.4762% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00037, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00037, 0, 1); }
  92.8571% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00045, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00045, 0, 1); }
  95.2381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00042, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00042, 0, 1); }
  97.619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00035, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00035, 0, 1); }
  100% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } }

@keyframes animation-1 {
  0% {
    -webkit-transform: matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -500, 0, 1);
            transform: matrix3d(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -500, 0, 1); }
  2.38095% {
    -webkit-transform: matrix3d(0.51288, 0, 0, 0, 0, 0.51288, 0, 0, 0, 0, 1, 0, 0, -338.45863, 0, 1);
            transform: matrix3d(0.51288, 0, 0, 0, 0, 0.51288, 0, 0, 0, 0, 1, 0, 0, -338.45863, 0, 1); }
  4.76191% {
    -webkit-transform: matrix3d(0.7853, 0, 0, 0, 0, 0.7853, 0, 0, 0, 0, 1, 0, 0, -207.30949, 0, 1);
            transform: matrix3d(0.7853, 0, 0, 0, 0, 0.7853, 0, 0, 0, 0, 1, 0, 0, -207.30949, 0, 1); }
  7.14286% {
    -webkit-transform: matrix3d(0.91741, 0, 0, 0, 0, 0.91741, 0, 0, 0, 0, 1, 0, 0, -110.81914, 0, 1);
            transform: matrix3d(0.91741, 0, 0, 0, 0, 0.91741, 0, 0, 0, 0, 1, 0, 0, -110.81914, 0, 1); }
  9.52381% {
    -webkit-transform: matrix3d(0.97533, 0, 0, 0, 0, 0.97533, 0, 0, 0, 0, 1, 0, 0, -45.99977, 0, 1);
            transform: matrix3d(0.97533, 0, 0, 0, 0, 0.97533, 0, 0, 0, 0, 1, 0, 0, -45.99977, 0, 1); }
  11.9048% {
    -webkit-transform: matrix3d(0.99743, 0, 0, 0, 0, 0.99743, 0, 0, 0, 0, 1, 0, 0, -6.66537, 0, 1);
            transform: matrix3d(0.99743, 0, 0, 0, 0, 0.99743, 0, 0, 0, 0, 1, 0, 0, -6.66537, 0, 1); }
  14.2857% {
    -webkit-transform: matrix3d(1.0039, 0, 0, 0, 0, 1.0039, 0, 0, 0, 0, 1, 0, 0, 14.05956, 0, 1);
            transform: matrix3d(1.0039, 0, 0, 0, 0, 1.0039, 0, 0, 0, 0, 1, 0, 0, 14.05956, 0, 1); }
  16.6667% {
    -webkit-transform: matrix3d(1.00447, 0, 0, 0, 0, 1.00447, 0, 0, 0, 0, 1, 0, 0, 22.3791, 0, 1);
            transform: matrix3d(1.00447, 0, 0, 0, 0, 1.00447, 0, 0, 0, 0, 1, 0, 0, 22.3791, 0, 1); }
  19.0476% {
    -webkit-transform: matrix3d(1.00334, 0, 0, 0, 0, 1.00334, 0, 0, 0, 0, 1, 0, 0, 23.2423, 0, 1);
            transform: matrix3d(1.00334, 0, 0, 0, 0, 1.00334, 0, 0, 0, 0, 1, 0, 0, 23.2423, 0, 1); }
  21.4286% {
    -webkit-transform: matrix3d(1.00209, 0, 0, 0, 0, 1.00209, 0, 0, 0, 0, 1, 0, 0, 20.23606, 0, 1);
            transform: matrix3d(1.00209, 0, 0, 0, 0, 1.00209, 0, 0, 0, 0, 1, 0, 0, 20.23606, 0, 1); }
  23.8095% {
    -webkit-transform: matrix3d(1.00117, 0, 0, 0, 0, 1.00117, 0, 0, 0, 0, 1, 0, 0, 15.73295, 0, 1);
            transform: matrix3d(1.00117, 0, 0, 0, 0, 1.00117, 0, 0, 0, 0, 1, 0, 0, 15.73295, 0, 1); }
  26.1905% {
    -webkit-transform: matrix3d(1.0006, 0, 0, 0, 0, 1.0006, 0, 0, 0, 0, 1, 0, 0, 11.14505, 0, 1);
            transform: matrix3d(1.0006, 0, 0, 0, 0, 1.0006, 0, 0, 0, 0, 1, 0, 0, 11.14505, 0, 1); }
  28.5714% {
    -webkit-transform: matrix3d(1.00028, 0, 0, 0, 0, 1.00028, 0, 0, 0, 0, 1, 0, 0, 7.19352, 0, 1);
            transform: matrix3d(1.00028, 0, 0, 0, 0, 1.00028, 0, 0, 0, 0, 1, 0, 0, 7.19352, 0, 1); }
  30.9524% {
    -webkit-transform: matrix3d(1.00012, 0, 0, 0, 0, 1.00012, 0, 0, 0, 0, 1, 0, 0, 4.14609, 0, 1);
            transform: matrix3d(1.00012, 0, 0, 0, 0, 1.00012, 0, 0, 0, 0, 1, 0, 0, 4.14609, 0, 1); }
  33.3333% {
    -webkit-transform: matrix3d(1.00004, 0, 0, 0, 0, 1.00004, 0, 0, 0, 0, 1, 0, 0, 2.0033, 0, 1);
            transform: matrix3d(1.00004, 0, 0, 0, 0, 1.00004, 0, 0, 0, 0, 1, 0, 0, 2.0033, 0, 1); }
  35.7143% {
    -webkit-transform: matrix3d(1.00001, 0, 0, 0, 0, 1.00001, 0, 0, 0, 0, 1, 0, 0, 0.63156, 0, 1);
            transform: matrix3d(1.00001, 0, 0, 0, 0, 1.00001, 0, 0, 0, 0, 1, 0, 0, 0.63156, 0, 1); }
  38.0952% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.15025, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.15025, 0, 1); }
  40.4762% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.52034, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.52034, 0, 1); }
  42.8571% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.62906, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.62906, 0, 1); }
  45.2381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.59053, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.59053, 0, 1); }
  47.619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.4838, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.4838, 0, 1); }
  50% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.35866, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.35866, 0, 1); }
  52.381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.24278, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.24278, 0, 1); }
  54.7619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.14871, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.14871, 0, 1); }
  57.1429% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.07949, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.07949, 0, 1); }
  59.5238% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.033, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.033, 0, 1); }
  61.9048% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00478, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00478, 0, 1); }
  64.2857% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01009, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01009, 0, 1); }
  66.6667% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01605, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01605, 0, 1); }
  69.0476% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01667, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01667, 0, 1); }
  71.4286% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01452, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01452, 0, 1); }
  73.8095% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01129, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.01129, 0, 1); }
  76.1905% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00799, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00799, 0, 1); }
  78.5714% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00516, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00516, 0, 1); }
  80.9524% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00297, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00297, 0, 1); }
  83.3333% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00144, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00144, 0, 1); }
  85.7143% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00045, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.00045, 0, 1); }
  88.0952% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00011, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00011, 0, 1); }
  90.4762% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00037, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00037, 0, 1); }
  92.8571% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00045, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00045, 0, 1); }
  95.2381% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00042, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00042, 0, 1); }
  97.619% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00035, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.00035, 0, 1); }
  100% {
    -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
            transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } }

.animate,
.button--toggle-nav {
  transition: all .4s; }

.box {
  position: relative;
  display: block;
  overflow: hidden; }
  .box::before {
    display: block;
    content: '';
    padding-top: 100%; }

.box__content {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0; }

.box--2-1::before {
  padding-top: 50%; }

.box--1-2::before {
  padding-top: 200%; }

.box--4-3::before {
  padding-top: 75%; }

.box--16-9::before {
  padding-top: 56.25%; }

.button, .feedback-success {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-bottom: 0;
  padding-top: 0;
  position: relative;
  top: auto;
  left: auto;
  display: inline-block;
  line-height: 3rem;
  font-weight: 700;
  transition: color 0.3s;
  background: #fff;
  color: #21272d;
  border: 2px solid #21272d;
  outline: 0;
  text-transform: uppercase;
  text-decoration: none;
  text-align: center;
  letter-spacing: 0.2em;
  min-width: 15rem;
  max-width: 24rem;
  height: 3rem; }

.button {
  cursor: pointer; }
  .button:before, .button:after {
    content: '';
    border-style: solid;
    position: absolute;
    z-index: 5;
    box-sizing: content-box;
    transition: width .3s, height .3s;
    border-color: #8fc11e; }
  .button:before {
    width: 0;
    height: 100%;
    border-width: 2px 0;
    top: -2px;
    left: 0;
    transition-delay: 0.05s; }
  .button:after {
    width: 100%;
    height: 0;
    border-width: 0 2px;
    top: 0;
    left: -2px; }
  .button:hover {
    color: #8fc11e; }
    .button:hover:before {
      width: 100%; }
    .button:hover:after {
      height: 100%; }
  .button--toggle-nav {
    position: fixed;
    top: 12px;
    right: 10px;
    z-index: 5000; }
    @media screen and (min-width: 960px) {
      .button--toggle-nav {
        display: none; } }
    .button--toggle-nav--active {
      -webkit-transform: rotate(45deg);
              transform: rotate(45deg); }

.feedback-success {
  display: block;
  margin-left: auto;
  margin-right: auto;
  background: #8fc11e;
  border-color: #8fc11e;
  color: #fff;
  display: block; }

@media screen and (min-width: 960px) {
  .grid {
    margin-bottom: 1.5rem;
    margin-left: -3rem; }
    .footer__inner .grid {
      margin-bottom: 0; } }

@media screen and (min-width: 1400px) {
  .grid {
    margin-bottom: 3rem;
    margin-left: -4.5rem; }
    .footer__inner .grid {
      margin-bottom: 0; } }

@media screen and (min-width: 960px) {
  .grid__column {
    padding-left: 3rem;
    float: left;
    min-height: 1px; } }

@media screen and (min-width: 1400px) {
  .grid__column {
    padding-left: 4.5rem; } }

@media screen and (min-width: 960px) {
  .grid--2 > .grid__column {
    width: 50%; } }

@media screen and (min-width: 960px) {
  .grid--3 > .grid__column {
    width: 33.3333%; } }

@media screen and (min-width: 960px) {
  .grid--4 > .grid__column {
    width: 25%; } }

@media screen and (min-width: 960px) {
  .grid--5 > .grid__column {
    width: 20%; } }

@media screen and (min-width: 960px) {
  .grid--6 > .grid__column {
    width: 16.6666%; } }

.icon {
  position: relative;
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: middle;
  fill: currentColor; }
  .icon--kfiapps {
    margin-bottom: 1.5rem;
    margin-right: 1.5rem;
    display: inline-block; }
    @media screen and (min-width: 960px) {
      .icon--kfiapps {
        margin-right: 0; } }
    .icon--kfiapps img {
      width: 155px;
      height: 45px; }
      @media screen and (min-width: 960px) {
        .icon--kfiapps img {
          width: 260px;
          height: 75px; } }
  .icon--social_github, .icon--social_mail, .icon--social_twitter, .icon--social_website {
    width: 60px;
    height: 60px;
    fill: #fff;
    background: #8fc11e;
    border-radius: 30px; }
    @media screen and (min-width: 960px) {
      .icon--social_github, .icon--social_mail, .icon--social_twitter, .icon--social_website {
        width: 80px;
        height: 80px;
        border-radius: 40px; } }
    .icon--social_github:hover, .icon--social_github:active, .icon--social_github:focus, .icon--social_mail:hover, .icon--social_mail:active, .icon--social_mail:focus, .icon--social_twitter:hover, .icon--social_twitter:active, .icon--social_twitter:focus, .icon--social_website:hover, .icon--social_website:active, .icon--social_website:focus {
      background: #fff;
      fill: #21272d; }

.content {
  -webkit-flex: 1;
      -ms-flex: 1;
          flex: 1; }

footer {
  background: #21272d;
  color: #fff;
  text-align: center; }
  footer ul {
    margin-top: 3.75rem;
    margin-bottom: 2.25rem;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    -webkit-justify-content: center;
        -ms-flex-pack: center;
            justify-content: center;
    list-style: none; }
    @media screen and (min-width: 960px) {
      footer ul {
        margin-bottom: 5.25rem; } }
  footer li {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
    padding-bottom: 1.5rem; }
  footer h3 {
    font-weight: 700;
    text-transform: uppercase;
    color: #fff; }
  footer p {
    color: #fff; }

.copyright {
  font-size: 0.875rem;
  font-weight: 300;
  color: #cccccc; }

.wrapper {
  position: relative;
  top: auto;
  left: auto; }
  .wrapper__inner {
    margin-left: auto;
    margin-right: auto;
    padding-left: 3rem;
    padding-right: 3rem;
    max-width: 960px; }
    @media screen and (min-width: 1100px) {
      .wrapper__inner {
        width: 960px; } }
  .wrapper--right {
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-justify-content: flex-end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .wrapper--footer {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    padding-top: 2.25rem;
    padding-bottom: 3rem; }
    @media screen and (min-width: 960px) {
      .wrapper--footer {
        padding-top: 4.5rem; } }

/*------------------------------------*    #CLEARFIX
\*------------------------------------*/
/**
 * Micro clearfix, as per: css-101.org/articles/clearfix/latest-new-clearfix-so-far.php
 * Extend the clearfix class with Sass to avoid the `.clearfix` class appearing
 * over and over in your markup.
 */
.clearfix:after,
.grid:after {
  content: "";
  display: table;
  clear: both; }

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

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

.visuallyhidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0); }
  .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    clip: auto; }

.invisible {
  visibility: hidden; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9pbnVpdC1ub3JtYWxpemUvX2dlbmVyaWMubm9ybWFsaXplLnNjc3MiLCJmZWVkYmFjay5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvaW51aXQtcmVzZXQvX2dlbmVyaWMucmVzZXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pbnVpdC1ib3gtc2l6aW5nL19nZW5lcmljLmJveC1zaXppbmcuc2NzcyIsImJhc2UvX3JoeXRobS5zY3NzIiwidG9vbHMvX3NwYWNpbmcuc2NzcyIsInRvb2xzL19oZWxwZXJzLnNjc3MiLCJjb25maWcvZmVlZGJhY2svX2RlZmF1bHRzLnNjc3MiLCJ0b29scy9fbWVkaWFxdWVyeS5zY3NzIiwiYmFzZS9mZWVkYmFjay9fYmFzZS5zY3NzIiwiY29uZmlnL2ZlZWRiYWNrL19jb2xvcnMuc2NzcyIsInRvb2xzL19mb250cy5zY3NzIiwidG9vbHMvX3B4LXRvLXJlbS5zY3NzIiwiYmFzZS9fZm9udHMuc2NzcyIsImJhc2UvZmVlZGJhY2svX2hlYWRpbmdzLnNjc3MiLCJiYXNlL2ZlZWRiYWNrL19saW5rcy5zY3NzIiwidG9vbHMvX2F0dGVudGlvbi5zY3NzIiwiYmFzZS9fbGlzdHMuc2NzcyIsImJhc2UvZmVlZGJhY2svX2Zvcm1zLnNjc3MiLCJ0b29scy9fcG9zaXRpb24uc2NzcyIsImJhc2UvX21lZGlhLnNjc3MiLCJ0b29scy9fbWF4LnNjc3MiLCJiYXNlL190YWJsZXMuc2NzcyIsInZlbmRvci9fcG9zdGJveC5zY3NzIiwibW9kdWxlcy9fYW5pbWF0aW9ucy5zY3NzIiwibW9kdWxlcy9fYm94ZXMuc2NzcyIsInRvb2xzL19ib3guc2NzcyIsIm1vZHVsZXMvZmVlZGJhY2svX2J1dHRvbnMuc2NzcyIsInRvb2xzL196LWluZGV4LnNjc3MiLCJjb25maWcvX3otaW5kZXhlcy5zY3NzIiwidG9vbHMvX2NlbnRlci5zY3NzIiwibW9kdWxlcy9fZ3JpZHMuc2NzcyIsIm1vZHVsZXMvZmVlZGJhY2svX2ljb25zLnNjc3MiLCJtb2R1bGVzL2ZlZWRiYWNrL19jb250ZW50LnNjc3MiLCJtb2R1bGVzL2ZlZWRiYWNrL19mb290ZXIuc2NzcyIsIm1vZHVsZXMvZmVlZGJhY2svX3dyYXBwZXIuc2NzcyIsImNvbmZpZy9fYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9pbnVpdC1jbGVhcmZpeC9fdHJ1bXBzLmNsZWFyZml4LnNjc3MiLCJvdmVycmlkZXMvX3R5cG9ncmFwaHkuc2NzcyIsIm92ZXJyaWRlcy9faGlkZGVuLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBRTVFOzs7O0dBSUc7QUFFSDtFQUNFLHdCQUF3QjtFQUFFLE9BQU87RUFDakMsMkJBQTJCO0VBQUUsT0FBTztFQUNwQywrQkFBK0I7RUFBRSxPQUFPLEVBQ3pDOztBQUVEOztHQUVHO0FBRUg7RUFDRSxVQUFVLEVBQ1g7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOzs7OztHQUtHO0FBRUg7Ozs7Ozs7Ozs7Ozs7RUFhRSxlQUFlLEVBQ2hCOztBQUVEOzs7R0FHRztBQUVIOzs7O0VBSUUsc0JBQXNCO0VBQUUsT0FBTztFQUMvQix5QkFBeUI7RUFBRSxPQUFPLEVBQ25DOztBQUVEOzs7R0FHRztBQUVIO0VBQ0UsY0FBYztFQUNkLFVBQVUsRUFDWDs7QUFFRDs7O0dBR0c7QUNOSDs7RURVRSxjQUFjLEVBQ2Y7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSw4QkFBOEIsRUFDL0I7O0FBRUQ7OztHQUdHO0FBRUg7O0VBRUUsV0FBVyxFQUNaOztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsMEJBQTBCLEVBQzNCOztBQUVEOztHQUVHO0FBRUg7O0VBRUUsa0JBQWtCLEVBQ25COztBQUVEOztHQUVHO0FBRUg7RUFDRSxtQkFBbUIsRUFDcEI7O0FBRUQ7OztHQUdHO0FBRUg7RUFDRSxlQUFlO0VBQ2YsaUJBQWlCLEVBQ2xCOztBQUVEOztHQUVHO0FBRUg7RUFDRSxpQkFBaUI7RUFD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QUNFLHNCQUFjO0VBQWQscUJBQWM7RUFBZCxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLCtCQUF1QjtNQUF2QiwyQkFBdUI7VUFBdkIsdUJBQXVCLEVBZXhCO0VEckJHO0lDR0o7TUFPTSxjQUFjLEVBQ2Y7SUFSTDtNQVdNLDREQUE0RCxFQUM3RCxFQUFBO0VBWkw7SUFnQkkscUJBQXFCLEVBQ3RCOztBQUlIO0VBQ0Usb0JDbkNtQjtFRG9DbkIsZUNuQ2tCO0VEb0NsQixrQkFBa0IsRUFDbkI7O0FBSkQ7RUFDRSxvQkNuQ21CO0VEb0NuQixlQ25Da0I7RURvQ2xCLGtCQUFrQixFQUNuQjs7QUFFRDs7OztFQU1NLGtDQzdDYztFRDhDZCxZQ2hEWSxFRGlEYjs7QUFSTDs7OztFQU1NLGtDQzdDYztFRDhDZCxZQ2hEWSxFRGlEYjs7QUUvQ0g7RUFDRSx5QkVKMEI7RUZLMUIsb0JFTCtEO0VGTS9ELG1CRU51RTtFRk92RSxrSEFBdUUsRUFBQTs7QUFKekU7RUFDRSx5QkVIMEI7RUZJMUIsaUJFSnlEO0VGS3pELG1CRUxpRTtFRk1qRSw0R0FBdUUsRUFBQTs7QUFKekU7RUFDRSx5QkVGMEI7RUZHMUIsaUJFSDBEO0VGSTFELG1CRUprRTtFRktsRSw4R0FBdUUsRUFBQTs7QUFKekU7RUFDRSx5QkVEMEI7RUZFMUIsb0JFRjREO0VGRzVELG1CRUhvRTtFRklwRSw0R0FBdUUsRUFBQTs7QUFKekU7RUFDRSx5QkVBMEI7RUZDMUIsa0JFRDREO0VGRTVELG1CRUZvRTtFRkdwRSxnSEFBdUUsRUFBQTs7QUdUM0U7RVRnQ1EsaUJDdEJLO0VLUVgsZ0JDakJpQjtFRUVqQixvQkFBb0I7RUFDcEIsc0JBQXNCLEVBS3ZCO0VOa0RLO0lNM0ROO01Ia0JFLGdCQ2pCaUIsRUVRbEIsRUFBQTs7QUFFRDtFVHFCUSxzQkNsQmM7RUtJcEIsb0JDakJpQjtFRWFqQix1QlBSb0I7RU9TcEIsaUJBQWlCO0VBQ2pCLGVKWm1CO0VJYW5CLDBCQUEwQixFQVMzQjtFTmlDSztJTWhETjtNSE9FLGtCQ2pCaUIsRUV5QmxCLEVBQUE7RUFmRDtJ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RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxpRkFBbUI7WUFBbkIseUVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSw0RUFBbUI7WUFBbkIsb0VBQW1CLEVBQUEsRUFBQTs7QUExS3ZCO0VBQ0U7SUFDRSwrRUFBbUI7WUFBbkIsdUVBQW1CLEVBQUE7RUFHckI7SUFDRSxpR0FBbUI7WUFBbkIseUZBQW1CLEVBQUE7RUFHckI7SUFDRSwrRkFBbUI7WUFBbkIsdUZBQW1CLEVBQUE7RUFHckI7SUFDRSxpR0FBbUI7WUFBbkIseUZBQW1CLEVBQUE7RUFHckI7SUFDRSxnR0FBbUI7WUFBbkIsd0ZBQW1CLEVBQUE7RUFHckI7SUFDRSwrRkFBbUI7WUFBbkIsdUZBQW1CLEVBQUE7RUFHckI7SUFDRSw2RkFBbUI7WUFBbkIscUZBQW1CLEVBQUE7RUFHckI7SUFDRSw4RkFBbUI7WUFBbkIsc0ZBQW1CLEVBQUE7RUFHckI7SUFDRSw4RkFBbUI7WUFBbkIsc0ZBQW1CLEVBQUE7RUFHckI7SUFDRSwrRkFBbUI7WUFBbkIsdUZBQW1CLEVBQUE7RUFHckI7SUFDRSwrRkFBbUI7WUFBbkIsdUZBQW1CLEVBQUE7RUFHckI7SUFDRSw2RkFBbUI7WUFBbkIscUZBQW1CLEVBQUE7RUFHckI7SUFDRSw4RkFBbUI7WUFBbkIsc0ZBQW1CLEVBQUE7RUFHckI7SUFDRSw4RkFBbUI7WUFBbkIsc0ZBQW1CLEVBQUE7RUFHckI7SUFDRSw2RkFBbUI7WUFBbkIscUZBQW1CLEVBQUE7RUFHckI7SUFDRSw4RkFBbUI7WUFBbkIsc0ZBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxrRkFBbUI7WUFBbkIsMEVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIsMkVBQW1CLEVBQUE7RUFHckI7SUFDRSxtRkFBbUI7WUFBbkIs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QztBQUV4Qzs7OztHQUlHO0FBQ0g7O0VBSVEsWUFBWTtFQUNaLGVBQWU7RUFDZixZQUFZLEVBQ2Y7O0FDYkw7RUFFRSxpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLHdCQUF3QixFQUN6Qjs7QUNKRDtFQUVFLGNBQWM7RUFDZCxtQkFBbUIsRUFDcEI7O0FBR0Q7RUFFRSxtQkFBbUI7RUFDbkIsV0FBVztFQUNYLFlBQVk7RUFDWixhQUFhO0VBQ2IsV0FBVztFQUNYLFVBQVU7RUFDVixpQkFBaUI7RUFDakIsb0JBQVUsRUFhWDtFQXRCRDtJQWNNLGlCQUFpQjtJQUNqQixZQUFZO0lBQ1osYUFBYTtJQUNiLFVBQVU7SUFDVixrQkFBa0I7SUFDbEIsV0FBVyxFQUNaOztBQUtMO0VBRUUsbUJBQW1CLEVBQ3BCIiwiZmlsZSI6ImZlZWRiYWNrLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAqICAgIHdpdGhvdXQgZGlzYWJsaW5nIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlcjogMDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbmJ1dHRvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXG59XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLyoqXG4gKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4gKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICpcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICovXG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICovXG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2My4wLjMgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxuICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICovXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cbmJvZHkge1xuICBtYXJnaW46IDA7IH1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuW2hpZGRlbl0sXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIGZvY3VzZWQgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBhbHNvIGluIGFuXG4gKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4gKi9cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7IH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTsgfVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAqL1xuaW1nIHtcbiAgYm9yZGVyOiAwOyB9XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07IH1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbiAgbWFyZ2luOiAwO1xuICAvKiAzICovIH1cblxuLyoqXG4gKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDIgKi9cbiAgY3Vyc29yOiBwb2ludGVyO1xuICAvKiAzICovIH1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuXG4vKipcbiAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cbiAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG4gKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKi9cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIC8qIDEgKi9cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICNSRVNFVFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogQXMgd2VsbCBhcyB1c2luZyBub3JtYWxpemUuY3NzLCBpdCBpcyBvZnRlbiBhZHZhbnRhZ2VvdXMgdG8gcmVtb3ZlIGFsbFxuICogbWFyZ2lucyBmcm9tIGNlcnRhaW4gZWxlbWVudHMuXG4gKi9cbmJvZHksXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxucCwgYmxvY2txdW90ZSwgcHJlLFxuZGwsIGRkLCBvbCwgdWwsXG5mb3JtLCBmaWVsZHNldCwgbGVnZW5kLFxuZmlndXJlLFxudGFibGUsIHRoLCB0ZCwgY2FwdGlvbixcbmhyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuICogR2l2ZSBhIGhlbHAgY3Vyc29yIHRvIGVsZW1lbnRzIHRoYXQgZ2l2ZSBleHRyYSBpbmZvIG9uIGA6aG92ZXJgLlxuICovXG5hYmJyW3RpdGxlXSxcbmRmblt0aXRsZV0ge1xuICBjdXJzb3I6IGhlbHA7IH1cblxuLyoqXG4gKiBSZW1vdmUgdW5kZXJsaW5lcyBmcm9tIHBvdGVudGlhbGx5IHRyb3VibGVzb21lIGVsZW1lbnRzLlxuICovXG51LFxuaW5zIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbi8qKlxuICogQXBwbHkgZmF1eCB1bmRlcmxpbmVzIHRvIGluc2VydGVkIHRleHQgdmlhIGBib3JkZXItYm90dG9tYC5cbiAqL1xuaW5zIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOyB9XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAjQk9YLVNJWklOR1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU2V0IHRoZSBnbG9iYWwgYGJveC1zaXppbmdgIHN0YXRlIHRvIGBib3JkZXItYm94YC5cbiAqXG4gKiBjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2VcbiAqIHBhdWxpcmlzaC5jb20vMjAxMi9ib3gtc2l6aW5nLWJvcmRlci1ib3gtZnR3XG4gKi9cbmh0bWwge1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDtcbiAgLW1vei1ib3gtc2l6aW5nOiBpbmhlcml0O1xuICBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbnVsLFxub2wsXG5kbCxcbmJsb2NrcXVvdGUsXG5hZGRyZXNzLFxuaHIsXG50YWJsZSxcbmZpZWxkc2V0LFxucHJlIHtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfVxuXG5maWd1cmUsXG5wIHtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgZmlndXJlLFxuICAgIHAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsgfSB9XG5cbmh0bWwge1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIGZvbnQtZmFtaWx5OiBcIkZpcmEgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzIxMjcyZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIGh0bWwge1xuICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTsgfSB9XG5cbmJvZHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICBAbWVkaWEgcHJpbnQge1xuICAgIGJvZHkgKiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgYm9keTo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJ1BsZWFzZSwgZG8gbm90IHdhc3RlIHBhcGVyIGJ5IHByaW50aW5nIHdlYnBhZ2VzLic7IH0gfVxuICBib2R5Lm5vLXBvaW50ZXJzLWV2ZW50cyB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cblxuOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAjOGZjMTFlO1xuICBjb2xvcjogIzIxMjcyZDtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7IH1cblxuaGVhZGVyIGNpdGU6OnNlbGVjdGlvbixcbmhlYWRlciBoMzo6c2VsZWN0aW9uLFxuaGVhZGVyIHNwYW46OnNlbGVjdGlvbixcbmhlYWRlciBwOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDMzLCAzOSwgNDUsIDAuMik7XG4gIGNvbG9yOiAjZmZmOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJGaXJhIE1vbm9cIjtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZpcmFtb25vLXJlZ3VsYXIud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi4uL2ZvbnRzL2ZpcmFtb25vLXJlZ3VsYXIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJGaXJhIFNhbnNcIjtcbiAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZpcmFzYW5zLXRoaW4ud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi4uL2ZvbnRzL2ZpcmFzYW5zLXRoaW4ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJGaXJhIFNhbnNcIjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZpcmFzYW5zLWxpZ2h0LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIuLi9mb250cy9maXJhc2Fucy1saWdodC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkZpcmEgU2Fuc1wiO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIHNyYzogdXJsKFwiLi4vZm9udHMvZmlyYXNhbnMtYm9vay53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiLi4vZm9udHMvZmlyYXNhbnMtYm9vay53b2ZmXCIpIGZvcm1hdChcIndvZmZcIik7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkZpcmEgU2Fuc1wiO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL2ZpcmFzYW5zLW1lZGl1bS53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiLi4vZm9udHMvZmlyYXNhbnMtbWVkaXVtLndvZmZcIikgZm9ybWF0KFwid29mZlwiKTsgfVxuXG5oMSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGV0dGVyLXNwYWNpbmc6IC4wNWVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgaDEge1xuICAgICAgZm9udC1zaXplOiAzcmVtOyB9IH1cblxuaDIge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGNvbG9yOiAjOGZjMTFlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gICAgaDIge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07IH0gfVxuICBoMSArIGgyIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0LjVyZW07IH1cblxuaDMge1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgaDMge1xuICAgICAgZm9udC1zaXplOiAxLjVyZW07IH0gfVxuXG5oNCB7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07IH1cblxuaDUge1xuICBmb250LXNpemU6IDFyZW07IH1cblxuaDYge1xuICBmb250LXNpemU6IDAuODc1cmVtOyB9XG5cbmEge1xuICBjb2xvcjogIzhmYzExZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgYTpob3ZlciwgYTphY3RpdmUsIGE6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBoMSA+IGEsXG4gIGgyID4gYSxcbiAgaDMgPiBhLFxuICBoNCA+IGEsXG4gIGg1ID4gYSxcbiAgaDYgPiBhIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICBoMSA+IGE6aG92ZXIsIGgxID4gYTphY3RpdmUsIGgxID4gYTpmb2N1cyxcbiAgICBoMiA+IGE6aG92ZXIsXG4gICAgaDIgPiBhOmFjdGl2ZSxcbiAgICBoMiA+IGE6Zm9jdXMsXG4gICAgaDMgPiBhOmhvdmVyLFxuICAgIGgzID4gYTphY3RpdmUsXG4gICAgaDMgPiBhOmZvY3VzLFxuICAgIGg0ID4gYTpob3ZlcixcbiAgICBoNCA+IGE6YWN0aXZlLFxuICAgIGg0ID4gYTpmb2N1cyxcbiAgICBoNSA+IGE6aG92ZXIsXG4gICAgaDUgPiBhOmFjdGl2ZSxcbiAgICBoNSA+IGE6Zm9jdXMsXG4gICAgaDYgPiBhOmhvdmVyLFxuICAgIGg2ID4gYTphY3RpdmUsXG4gICAgaDYgPiBhOmZvY3VzIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgY29sb3I6ICM4ZmMxMWU7IH1cbiAgICBoMSA+IGE6OmFmdGVyLFxuICAgIGgyID4gYTo6YWZ0ZXIsXG4gICAgaDMgPiBhOjphZnRlcixcbiAgICBoNCA+IGE6OmFmdGVyLFxuICAgIGg1ID4gYTo6YWZ0ZXIsXG4gICAgaDYgPiBhOjphZnRlciB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICAgIGNvbG9yOiAjOGZjMTFlO1xuICAgICAgY29udGVudDogJ1xcMDAyMFxcMjIxZSc7IH1cblxubmF2IHVsLFxubmF2IG9sLFxuZmllbGRzZXQgdWwsXG5maWVsZHNldCBvbCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLmNvbnRlbnQgdWwge1xuICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgbGlzdC1zdHlsZTogc3F1YXJlOyB9XG5cbjo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogIzk5YTdiNDsgfVxuXG5bdW5zZWxlY3RhYmxlXSB7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG5cblt0eXBlPXRleHRdLFxuW3R5cGU9dGVsXSxcblt0eXBlPWVtYWlsXSxcblt0eXBlPXNlYXJjaF0sXG5bdHlwZT1udW1iZXJdLFxuW3R5cGU9cGFzc3dvcmRdLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyMTI3MmQ7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1sZWZ0OiAwO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGNvbG9yOiAjMjEyNzJkO1xuICBvdXRsaW5lOiAwO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHotaW5kZXg6IDEwO1xuICBiYWNrZ3JvdW5kOiBub25lOyB9XG4gIFt0eXBlPXRleHRdOmhvdmVyLCBbdHlwZT10ZXh0XTphY3RpdmUsIFt0eXBlPXRleHRdOmZvY3VzLFxuICBbdHlwZT10ZWxdOmhvdmVyLFxuICBbdHlwZT10ZWxdOmFjdGl2ZSxcbiAgW3R5cGU9dGVsXTpmb2N1cyxcbiAgW3R5cGU9ZW1haWxdOmhvdmVyLFxuICBbdHlwZT1lbWFpbF06YWN0aXZlLFxuICBbdHlwZT1lbWFpbF06Zm9jdXMsXG4gIFt0eXBlPXNlYXJjaF06aG92ZXIsXG4gIFt0eXBlPXNlYXJjaF06YWN0aXZlLFxuICBbdHlwZT1zZWFyY2hdOmZvY3VzLFxuICBbdHlwZT1udW1iZXJdOmhvdmVyLFxuICBbdHlwZT1udW1iZXJdOmFjdGl2ZSxcbiAgW3R5cGU9bnVtYmVyXTpmb2N1cyxcbiAgW3R5cGU9cGFzc3dvcmRdOmhvdmVyLFxuICBbdHlwZT1wYXNzd29yZF06YWN0aXZlLFxuICBbdHlwZT1wYXNzd29yZF06Zm9jdXMsXG4gIHNlbGVjdDpob3ZlcixcbiAgc2VsZWN0OmFjdGl2ZSxcbiAgc2VsZWN0OmZvY3VzLFxuICB0ZXh0YXJlYTpob3ZlcixcbiAgdGV4dGFyZWE6YWN0aXZlLFxuICB0ZXh0YXJlYTpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjOGZjMTFlOyB9XG5cbmxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzLCBjb2xvciAwLjJzLCB0b3AgMC4ycywgYm90dG9tIDAuMnMsIHJpZ2h0IDAuMnMsIGxlZnQgMC4ycztcbiAgY29sb3I6ICM5OWE3YjQ7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIC5mb2N1cyBsYWJlbCxcbiAgLmZpbGxlZCBsYWJlbCB7XG4gICAgZm9udC1zaXplOiA3MCU7XG4gICAgei1pbmRleDogMjtcbiAgICB0b3A6IC0xLjVyZW07IH1cbiAgLmZpbGxlZCBsYWJlbCB7XG4gICAgY29sb3I6ICMyMTI3MmQ7XG4gICAgb3BhY2l0eTogLjg7IH1cbiAgLmZvY3VzIGxhYmVsIHtcbiAgICBjb2xvcjogIzhmYzExZTsgfVxuXG5maWVsZHNldCB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbnRleHRhcmVhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIGhlaWdodDogMjhweDtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMnM7IH1cbiAgLmZpbGxlZCB0ZXh0YXJlYSxcbiAgLmZvY3VzIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IDE5MHB4OyB9XG5cbi5mb2N1cyBzZWxlY3QsXG4uZmlsbGVkIHNlbGVjdCB7XG4gIGNvbG9yOiAjMjEyNzJkOyB9XG5cbi5mb3JtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cblxuLmZvcm0taXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICB3aWR0aDogMTAwJTsgfVxuICAuZm9ybS1pdGVtOm5vdCguZm9ybS1pdGVtX19mZWVkYmFja19zZXQpIHtcbiAgICBtYXJnaW4tdG9wOiAyLjI1cmVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgZm9ybSA+IC5mb3JtLWl0ZW06bm90KC5mb3JtLWl0ZW1fX3N1Ym1pdC1mZWVkYmFjayk6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpIHtcbiAgICAgIHdpZHRoOiA0OCU7IH0gfVxuICAuZm9ybS1pdGVtX19mZWVkYmFja193ZWJzaXRlIGlucHV0LFxuICAuZm9ybS1pdGVtX19mZWVkYmFja193ZWJzaXRlIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUgLmZpZWxkLS1lcnJvci0tbWVzc2FnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMTAwJTsgfVxuICAuZm9ybS1pdGVtX19zdWJtaXQtZmVlZGJhY2sge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAuZm9ybS1pdGVtX19mZWVkYmFja19zdWJqZWN0OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMC4zcmVtO1xuICAgIHJpZ2h0OiAwLjNyZW07XG4gICAgY29udGVudDogJ14nO1xuICAgIGNvbG9yOiAjOGZjMTFlO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cblxuLmZpZWxkLS1lcnJvci0tbWVzc2FnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxLjhyZW07XG4gIGNvbG9yOiAjZjAzOTFmO1xuICBmb250LXNpemU6IDcwJTsgfVxuICAuZm9jdXM6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpIC5maWVsZC0tZXJyb3ItLW1lc3NhZ2UsXG4gIC5maWxsZWQ6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpIC5maWVsZC0tZXJyb3ItLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7IH1cblxuYXVkaW8sXG5jYW52YXMsXG5pbWcsXG52aWRlbyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogbm9uZTtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bzsgfVxuXG5hdWRpbyxcbmNhbnZhcyxcbmlmcmFtZSxcbmltZyxcbnBpY3R1cmUsXG5zdmcsXG52aWRlbyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxudGFibGUge1xuICB3aWR0aDogMTAwJTsgfVxuXG50ZCB7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cblxudGgge1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG5cbi5mZWVkYmFja19fc3RhdHVzIHtcbiAgcGFkZGluZy10b3A6IDQuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDcuNXJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIC5mZWVkYmFja19fc3RhdHVzIHN2ZyB7XG4gICAgc3Ryb2tlOiAjMjEyNzJkO1xuICAgIGZpbGw6ICNmZmY7IH1cbiAgICAuZmVlZGJhY2tfX3N0YXR1cyBzdmc6aG92ZXIgLmZlZWRiYWNrX19zdGF0dXMtLWFuaW1hdGUsIC5mZWVkYmFja19fc3RhdHVzIHN2ZzphY3RpdmUgLmZlZWRiYWNrX19zdGF0dXMtLWFuaW1hdGUsIC5mZWVkYmFja19fc3RhdHVzIHN2Zzpmb2N1cyAuZmVlZGJhY2tfX3N0YXR1cy0tYW5pbWF0ZSB7XG4gICAgICBhbmltYXRpb246IHB1bHNlIC43cyBsaW5lYXIgLjFzIG5vcm1hbCBpbmZpbml0ZSBmb3J3YXJkczsgfVxuICAuZmVlZGJhY2tfX3N0YXR1cy0tcmFjayB7XG4gICAgc3Ryb2tlOiAjOTlhN2I0OyB9XG4gIC5mZWVkYmFja19fc3RhdHVzLS1hY3Rpb24ge1xuICAgIHN0cm9rZTogIzk5YTdiNDsgfVxuICAuZmVlZGJhY2tfX3N0YXR1cy0tZXJyb3IgLmZlZWRiYWNrX19zdGF0dXMtLWFjdGlvbiB7XG4gICAgc3Ryb2tlOiAjZjAzOTFmO1xuICAgIGZpbGw6ICNmMDM5MWY7IH1cbiAgLmZlZWRiYWNrX19zdGF0dXMtLWVycm9yIC5mZWVkYmFja19fc3RhdHVzLS1hbmltYXRlIHtcbiAgICBhbmltYXRpb246IGVycm9yIC43cyBsaW5lYXIgLjFzIGFsdGVybmF0ZSAxIGZvcndhcmRzOyB9XG4gIC5mZWVkYmFja19fc3RhdHVzLS1zdWNjZXNzIC5mZWVkYmFja19fc3RhdHVzLS1hY3Rpb24ge1xuICAgIHN0cm9rZTogIzhmYzExZTtcbiAgICBmaWxsOiAjOGZjMTFlOyB9XG4gIC5mZWVkYmFja19fc3RhdHVzLS1zdWNjZXNzIC5mZWVkYmFja19fc3RhdHVzLS1hbmltYXRlIHtcbiAgICBhbmltYXRpb246IHN1Y2Nlc3MgLjdzIGxpbmVhciAuMXMgYWx0ZXJuYXRlIDEgZm9yd2FyZHM7IH1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLFxuICA1MCUsXG4gIDEwMCUge1xuICAgIGQ6IHBhdGgoXCJNMTA0IDgwLjdsNDIuNy0uNyAzNy4zLS43LjYgMzEuNi0yMi40LjMtLjYtMzAuMlwiKTsgfVxuICAyMCUge1xuICAgIGQ6IHBhdGgoXCJNMTA0IDc5LjdsMzguNiAxOCAzNCAxNS44LTEzLjUgMjguNy0yMC4yLTkuNSAxMi43LTI3LjNcIik7IH1cbiAgODAlIHtcbiAgICBkOiBwYXRoKFwiTTEwNCA4MC40bDM4LjctMTggMzQtMTUuOEwxOTAgNzUuMmwtMjAuMyA5LjVMMTU3IDU3LjNcIik7IH0gfVxuXG5Aa2V5ZnJhbWVzIHN1Y2Nlc3Mge1xuICAwJSB7XG4gICAgZDogcGF0aChcIk0xMDQgNzkuN2wzOC42IDE4IDM0IDE1LjgtMTMuNSAyOC43LTIwLjItOS41IDEyLjctMjcuM1wiKTsgfVxuICA1JSB7XG4gICAgZDogcGF0aChcIk0xMDQgODAuN2w0Mi43LS43IDM3LjMtLjcuNiAzMS42LTIyLjQuMy0uNi0zMC4yXCIpOyB9XG4gIDI1JSB7XG4gICAgZDogcGF0aChcIk0xMDQgODAuNGwzOC43LTE4IDM0LTE1LjhMMTkwIDc1LjJsLTIwLjMgOS41TDE1NyA1Ny4zXCIpOyB9XG4gIDUwJSB7XG4gICAgZDogcGF0aChcIk0xMDQgODEuM2wyNy40LTMyLjcgMjQtMjguNiAyNC4yIDIwLjMtMTQuMyAxN0wxNDIuMyAzOFwiKTsgfVxuICA3NSUge1xuICAgIGQ6IHBhdGgoXCJNMTA0IDgxLjRsMTEtNDEuMiA5LjctMzYgMzAuNiA4LTUuOCAyMS42LTI5LTcuOFwiKTsgfVxuICAxMDAlIHtcbiAgICBkOiBwYXRoKFwiTTEwNCA4MC41bC44LTQyLjYuNi0zNy41IDMxLjUuNi0uNCAyMi40LTMwLS41XCIpOyB9IH1cblxuQGtleWZyYW1lcyBlcnJvciB7XG4gIDAlIHtcbiAgICBkOiBwYXRoKFwiTTEwNCA4MC43bDQyLjctLjcgMzcuMy0uNy42IDMxLjYtMjIuNC4zLS42LTMwLjJcIik7IH1cbiAgMTAwJSB7XG4gICAgZDogcGF0aChcIk0xMDQgNzkuN2wzOC42IDE4IDM0IDE1LjgtMTMuNSAyOC43LTIwLjItOS41IDEyLjctMjcuM1wiKTsgfSB9XG5cbkBrZXlmcmFtZXMgcm90YXRpb24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XG5cbkBrZXlmcmFtZXMgYW5pbWF0aW9uLTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtNTAwLCAwLCAxKTsgfVxuICAyLjM4MDk1JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgwLjUxMjg4LCAwLCAwLCAwLCAwLCAwLjUxMjg4LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMzM4LjQ1ODYzLCAwLCAxKTsgfVxuICA0Ljc2MTkxJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgwLjc4NTMsIDAsIDAsIDAsIDAsIDAuNzg1MywgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTIwNy4zMDk0OSwgMCwgMSk7IH1cbiAgNy4xNDI4NiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMC45MTc0MSwgMCwgMCwgMCwgMCwgMC45MTc0MSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTExMC44MTkxNCwgMCwgMSk7IH1cbiAgOS41MjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMC45NzUzMywgMCwgMCwgMCwgMCwgMC45NzUzMywgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTQ1Ljk5OTc3LCAwLCAxKTsgfVxuICAxMS45MDQ4JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgwLjk5NzQzLCAwLCAwLCAwLCAwLCAwLjk5NzQzLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtNi42NjUzNywgMCwgMSk7IH1cbiAgMTQuMjg1NyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDM5LCAwLCAwLCAwLCAwLCAxLjAwMzksIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDE0LjA1OTU2LCAwLCAxKTsgfVxuICAxNi42NjY3JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwNDQ3LCAwLCAwLCAwLCAwLCAxLjAwNDQ3LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAyMi4zNzkxLCAwLCAxKTsgfVxuICAxOS4wNDc2JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwMzM0LCAwLCAwLCAwLCAwLCAxLjAwMzM0LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAyMy4yNDIzLCAwLCAxKTsgfVxuICAyMS40Mjg2JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwMjA5LCAwLCAwLCAwLCAwLCAxLjAwMjA5LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAyMC4yMzYwNiwgMCwgMSk7IH1cbiAgMjMuODA5NSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDExNywgMCwgMCwgMCwgMCwgMS4wMDExNywgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMTUuNzMyOTUsIDAsIDEpOyB9XG4gIDI2LjE5MDUlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEuMDAwNiwgMCwgMCwgMCwgMCwgMS4wMDA2LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAxMS4xNDUwNSwgMCwgMSk7IH1cbiAgMjguNTcxNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDAyOCwgMCwgMCwgMCwgMCwgMS4wMDAyOCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgNy4xOTM1MiwgMCwgMSk7IH1cbiAgMzAuOTUyNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDAxMiwgMCwgMCwgMCwgMCwgMS4wMDAxMiwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgNC4xNDYwOSwgMCwgMSk7IH1cbiAgMzMuMzMzMyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDAwNCwgMCwgMCwgMCwgMCwgMS4wMDAwNCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMi4wMDMzLCAwLCAxKTsgfVxuICAzNS43MTQzJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwMDAxLCAwLCAwLCAwLCAwLCAxLjAwMDAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLjYzMTU2LCAwLCAxKTsgfVxuICAzOC4wOTUyJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4xNTAyNSwgMCwgMSk7IH1cbiAgNDAuNDc2MiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuNTIwMzQsIDAsIDEpOyB9XG4gIDQyLjg1NzElIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjYyOTA2LCAwLCAxKTsgfVxuICA0NS4yMzgxJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC41OTA1MywgMCwgMSk7IH1cbiAgNDcuNjE5JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC40ODM4LCAwLCAxKTsgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMzU4NjYsIDAsIDEpOyB9XG4gIDUyLjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMjQyNzgsIDAsIDEpOyB9XG4gIDU0Ljc2MTklIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjE0ODcxLCAwLCAxKTsgfVxuICA1Ny4xNDI5JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4wNzk0OSwgMCwgMSk7IH1cbiAgNTkuNTIzOCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDMzLCAwLCAxKTsgfVxuICA2MS45MDQ4JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4wMDQ3OCwgMCwgMSk7IH1cbiAgNjQuMjg1NyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTAwOSwgMCwgMSk7IH1cbiAgNjYuNjY2NyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTYwNSwgMCwgMSk7IH1cbiAgNjkuMDQ3NiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTY2NywgMCwgMSk7IH1cbiAgNzEuNDI4NiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTQ1MiwgMCwgMSk7IH1cbiAgNzMuODA5NSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTEyOSwgMCwgMSk7IH1cbiAgNzYuMTkwNSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDc5OSwgMCwgMSk7IH1cbiAgNzguNTcxNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDUxNiwgMCwgMSk7IH1cbiAgODAuOTUyNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDI5NywgMCwgMSk7IH1cbiAgODMuMzMzMyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDE0NCwgMCwgMSk7IH1cbiAgODUuNzE0MyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDA0NSwgMCwgMSk7IH1cbiAgODguMDk1MiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwMTEsIDAsIDEpOyB9XG4gIDkwLjQ3NjIlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjAwMDM3LCAwLCAxKTsgfVxuICA5Mi44NTcxJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4wMDA0NSwgMCwgMSk7IH1cbiAgOTUuMjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwNDIsIDAsIDEpOyB9XG4gIDk3LjYxOSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwMzUsIDAsIDEpOyB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSk7IH0gfVxuXG4uYW5pbWF0ZSxcbi5idXR0b24tLXRvZ2dsZS1uYXYge1xuICB0cmFuc2l0aW9uOiBhbGwgLjRzOyB9XG5cbi5ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5ib3g6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogJyc7XG4gICAgcGFkZGluZy10b3A6IDEwMCU7IH1cblxuLmJveF9fY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwOyB9XG5cbi5ib3gtLTItMTo6YmVmb3JlIHtcbiAgcGFkZGluZy10b3A6IDUwJTsgfVxuXG4uYm94LS0xLTI6OmJlZm9yZSB7XG4gIHBhZGRpbmctdG9wOiAyMDAlOyB9XG5cbi5ib3gtLTQtMzo6YmVmb3JlIHtcbiAgcGFkZGluZy10b3A6IDc1JTsgfVxuXG4uYm94LS0xNi05OjpiZWZvcmUge1xuICBwYWRkaW5nLXRvcDogNTYuMjUlOyB9XG5cbi5idXR0b24sIC5mZWVkYmFjay1zdWNjZXNzIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmctdG9wOiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogYXV0bztcbiAgbGVmdDogYXV0bztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogM3JlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcztcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgY29sb3I6ICMyMTI3MmQ7XG4gIGJvcmRlcjogMnB4IHNvbGlkICMyMTI3MmQ7XG4gIG91dGxpbmU6IDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gIG1pbi13aWR0aDogMTVyZW07XG4gIG1heC13aWR0aDogMjRyZW07XG4gIGhlaWdodDogM3JlbTsgfVxuXG4uYnV0dG9uIHtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5idXR0b246YmVmb3JlLCAuYnV0dG9uOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiA1O1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIHRyYW5zaXRpb246IHdpZHRoIC4zcywgaGVpZ2h0IC4zcztcbiAgICBib3JkZXItY29sb3I6ICM4ZmMxMWU7IH1cbiAgLmJ1dHRvbjpiZWZvcmUge1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXItd2lkdGg6IDJweCAwO1xuICAgIHRvcDogLTJweDtcbiAgICBsZWZ0OiAwO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMDVzOyB9XG4gIC5idXR0b246YWZ0ZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItd2lkdGg6IDAgMnB4O1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMnB4OyB9XG4gIC5idXR0b246aG92ZXIge1xuICAgIGNvbG9yOiAjOGZjMTFlOyB9XG4gICAgLmJ1dHRvbjpob3ZlcjpiZWZvcmUge1xuICAgICAgd2lkdGg6IDEwMCU7IH1cbiAgICAuYnV0dG9uOmhvdmVyOmFmdGVyIHtcbiAgICAgIGhlaWdodDogMTAwJTsgfVxuICAuYnV0dG9uLS10b2dnbGUtbmF2IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAxMnB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIHotaW5kZXg6IDUwMDA7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgICAgLmJ1dHRvbi0tdG9nZ2xlLW5hdiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuICAgIC5idXR0b24tLXRvZ2dsZS1uYXYtLWFjdGl2ZSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cblxuLmZlZWRiYWNrLXN1Y2Nlc3Mge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgYmFja2dyb3VuZDogIzhmYzExZTtcbiAgYm9yZGVyLWNvbG9yOiAjOGZjMTFlO1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmdyaWQge1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTNyZW07IH1cbiAgICAuZm9vdGVyX19pbm5lciAuZ3JpZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQwMHB4KSB7XG4gIC5ncmlkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtOyB9XG4gICAgLmZvb3Rlcl9faW5uZXIgLmdyaWQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5ncmlkX19jb2x1bW4ge1xuICAgIHBhZGRpbmctbGVmdDogM3JlbTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtaW4taGVpZ2h0OiAxcHg7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDAwcHgpIHtcbiAgLmdyaWRfX2NvbHVtbiB7XG4gICAgcGFkZGluZy1sZWZ0OiA0LjVyZW07IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAuZ3JpZC0tMiA+IC5ncmlkX19jb2x1bW4ge1xuICAgIHdpZHRoOiA1MCU7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAuZ3JpZC0tMyA+IC5ncmlkX19jb2x1bW4ge1xuICAgIHdpZHRoOiAzMy4zMzMzJTsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5ncmlkLS00ID4gLmdyaWRfX2NvbHVtbiB7XG4gICAgd2lkdGg6IDI1JTsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5ncmlkLS01ID4gLmdyaWRfX2NvbHVtbiB7XG4gICAgd2lkdGg6IDIwJTsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5ncmlkLS02ID4gLmdyaWRfX2NvbHVtbiB7XG4gICAgd2lkdGg6IDE2LjY2NjYlOyB9IH1cblxuLmljb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDFlbTtcbiAgaGVpZ2h0OiAxZW07XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjsgfVxuICAuaWNvbi0ta2ZpYXBwcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgICAuaWNvbi0ta2ZpYXBwcyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfSB9XG4gICAgLmljb24tLWtmaWFwcHMgaW1nIHtcbiAgICAgIHdpZHRoOiAxNTVweDtcbiAgICAgIGhlaWdodDogNDVweDsgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICAgICAgLmljb24tLWtmaWFwcHMgaW1nIHtcbiAgICAgICAgICB3aWR0aDogMjYwcHg7XG4gICAgICAgICAgaGVpZ2h0OiA3NXB4OyB9IH1cbiAgLmljb24tLXNvY2lhbF9naXRodWIsIC5pY29uLS1zb2NpYWxfbWFpbCwgLmljb24tLXNvY2lhbF90d2l0dGVyLCAuaWNvbi0tc29jaWFsX3dlYnNpdGUge1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBmaWxsOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6ICM4ZmMxMWU7XG4gICAgYm9yZGVyLXJhZGl1czogMzBweDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgICAuaWNvbi0tc29jaWFsX2dpdGh1YiwgLmljb24tLXNvY2lhbF9tYWlsLCAuaWNvbi0tc29jaWFsX3R3aXR0ZXIsIC5pY29uLS1zb2NpYWxfd2Vic2l0ZSB7XG4gICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7IH0gfVxuICAgIC5pY29uLS1zb2NpYWxfZ2l0aHViOmhvdmVyLCAuaWNvbi0tc29jaWFsX2dpdGh1YjphY3RpdmUsIC5pY29uLS1zb2NpYWxfZ2l0aHViOmZvY3VzLCAuaWNvbi0tc29jaWFsX21haWw6aG92ZXIsIC5pY29uLS1zb2NpYWxfbWFpbDphY3RpdmUsIC5pY29uLS1zb2NpYWxfbWFpbDpmb2N1cywgLmljb24tLXNvY2lhbF90d2l0dGVyOmhvdmVyLCAuaWNvbi0tc29jaWFsX3R3aXR0ZXI6YWN0aXZlLCAuaWNvbi0tc29jaWFsX3R3aXR0ZXI6Zm9jdXMsIC5pY29uLS1zb2NpYWxfd2Vic2l0ZTpob3ZlciwgLmljb24tLXNvY2lhbF93ZWJzaXRlOmFjdGl2ZSwgLmljb24tLXNvY2lhbF93ZWJzaXRlOmZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICBmaWxsOiAjMjEyNzJkOyB9XG5cbi5jb250ZW50IHtcbiAgZmxleDogMTsgfVxuXG5mb290ZXIge1xuICBiYWNrZ3JvdW5kOiAjMjEyNzJkO1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gIGZvb3RlciB1bCB7XG4gICAgbWFyZ2luLXRvcDogMy43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgICAgZm9vdGVyIHVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNS4yNXJlbTsgfSB9XG4gIGZvb3RlciBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTsgfVxuICBmb290ZXIgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBjb2xvcjogI2ZmZjsgfVxuICBmb290ZXIgcCB7XG4gICAgY29sb3I6ICNmZmY7IH1cblxuLmNvcHlyaWdodCB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGNvbG9yOiAjY2NjY2NjOyB9XG5cbi53cmFwcGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IGF1dG87XG4gIGxlZnQ6IGF1dG87IH1cbiAgLndyYXBwZXJfX2lubmVyIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgbWF4LXdpZHRoOiA5NjBweDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDExMDBweCkge1xuICAgICAgLndyYXBwZXJfX2lubmVyIHtcbiAgICAgICAgd2lkdGg6IDk2MHB4OyB9IH1cbiAgLndyYXBwZXItLXJpZ2h0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cbiAgLndyYXBwZXItLWZvb3RlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctdG9wOiAyLjI1cmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAzcmVtOyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICAgIC53cmFwcGVyLS1mb290ZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogNC41cmVtOyB9IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICNDTEVBUkZJWFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogTWljcm8gY2xlYXJmaXgsIGFzIHBlcjogY3NzLTEwMS5vcmcvYXJ0aWNsZXMvY2xlYXJmaXgvbGF0ZXN0LW5ldy1jbGVhcmZpeC1zby1mYXIucGhwXG4gKiBFeHRlbmQgdGhlIGNsZWFyZml4IGNsYXNzIHdpdGggU2FzcyB0byBhdm9pZCB0aGUgYC5jbGVhcmZpeGAgY2xhc3MgYXBwZWFyaW5nXG4gKiBvdmVyIGFuZCBvdmVyIGluIHlvdXIgbWFya3VwLlxuICovXG4uY2xlYXJmaXg6YWZ0ZXIsXG4uZ3JpZDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDsgfVxuXG4udHJ1bmNhdGUtdGV4dCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB9XG5cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cblxuLnZpc3VhbGx5aGlkZGVuIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7IH1cbiAgLnZpc3VhbGx5aGlkZGVuLmZvY3VzYWJsZTphY3RpdmUsIC52aXN1YWxseWhpZGRlbi5mb2N1c2FibGU6Zm9jdXMge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBjbGlwOiBhdXRvOyB9XG5cbi5pbnZpc2libGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1JFU0VUXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEFzIHdlbGwgYXMgdXNpbmcgbm9ybWFsaXplLmNzcywgaXQgaXMgb2Z0ZW4gYWR2YW50YWdlb3VzIHRvIHJlbW92ZSBhbGxcbiAqIG1hcmdpbnMgZnJvbSBjZXJ0YWluIGVsZW1lbnRzLlxuICovXG5ib2R5LFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbnAsIGJsb2NrcXVvdGUsIHByZSxcbmRsLCBkZCwgb2wsIHVsLFxuZm9ybSwgZmllbGRzZXQsIGxlZ2VuZCxcbmZpZ3VyZSxcbnRhYmxlLCB0aCwgdGQsIGNhcHRpb24sXG5ociB7XG4gICAgbWFyZ2luOiAgMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5cblxuXG5cbi8qKlxuICogR2l2ZSBhIGhlbHAgY3Vyc29yIHRvIGVsZW1lbnRzIHRoYXQgZ2l2ZSBleHRyYSBpbmZvIG9uIGA6aG92ZXJgLlxuICovXG5hYmJyW3RpdGxlXSxcbmRmblt0aXRsZV0ge1xuICAgIGN1cnNvcjogaGVscDtcbn1cblxuXG5cblxuXG4vKipcbiAqIFJlbW92ZSB1bmRlcmxpbmVzIGZyb20gcG90ZW50aWFsbHkgdHJvdWJsZXNvbWUgZWxlbWVudHMuXG4gKi9cbnUsXG5pbnMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuXG5cblxuXG4vKipcbiAqIEFwcGx5IGZhdXggdW5kZXJsaW5lcyB0byBpbnNlcnRlZCB0ZXh0IHZpYSBgYm9yZGVyLWJvdHRvbWAuXG4gKi9cbmlucyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjQk9YLVNJWklOR1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBTZXQgdGhlIGdsb2JhbCBgYm94LXNpemluZ2Agc3RhdGUgdG8gYGJvcmRlci1ib3hgLlxuICpcbiAqIGNzcy10cmlja3MuY29tL2luaGVyaXRpbmctYm94LXNpemluZy1wcm9iYWJseS1zbGlnaHRseS1iZXR0ZXItYmVzdC1wcmFjdGljZVxuICogcGF1bGlyaXNoLmNvbS8yMDEyL2JveC1zaXppbmctYm9yZGVyLWJveC1mdHdcbiAqL1xuaHRtbCB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbioge1xuXG4gICAgJixcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgICAgICAgICAtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgICAgICAgfVxuXG59XG5cblxuXG5cblxuLy8gSWYgd2UgaGF2ZSBpbmNsdWRlZCB0aGlzIGZpbGUsIHNldCBhIHZhcmlhYmxlIHRvIHRlbGwgdGhlIHJlc3Qgb2YgdGhlXG4vLyBmcmFtZXdvcmsgdGhhdCBnbG9iYWwgYGJveC1zaXppbmc6IGJvcmRlci1ib3hgIGhhcyBiZWVuIHNldC5cbiRpbnVpdC1nbG9iYWwtYm9yZGVyLWJveDogdHJ1ZTtcbiIsIi8vIGRlZmF1bHQgdmVydGljYWwgcmh5dGhtIC8gbWFyZ2luLWJvdHRvbSBzcGFjaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbnVsLFxub2wsXG5kbCxcbmJsb2NrcXVvdGUsXG5hZGRyZXNzLFxuaHIsXG50YWJsZSxcbmZpZWxkc2V0LFxucHJlLFxuJXJoeXRobSB7XG4gIEBpbmNsdWRlIHNwYWNpbmcoYiAuNSk7XG59XG5cbmZpZ3VyZSxcbnAge1xuICBAaW5jbHVkZSBzcGFjaW5nO1xuXG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgIEBpbmNsdWRlIHNwYWNpbmcoYiAyKTtcbiAgfVxufVxuIiwiLy8gZWFzeSBtYXJnaW5zIGFuZCBwYWRkaW5ncyB3aXRoIGN1c3RvbSBtaXhpbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gY3JlYXRlcyBtYXJnaW5zLCBieSBkZWZhdWx0ICh3aXRob3V0IGFueSBwYXJhbWV0ZXJzKSBvbmx5IG1hcmdpbi1ib3R0b21cbi8vIHdpdGggJGJhc2UtdW5pdCAtLSBkZWZhdWx0IHJoeXRobSwgb3IgZm9yIGV2ZXJ5IHNpZGUvdmFsdWUtcGFpciB3aXRoXG4vLyB0aGVpciBzaG9ydCB2YXJpYW50czpcbi8vXG4vLyB1c2FnZSBleGFtcGxlczpcbi8vXG4vLyBAaW5jbHVkZSBzcGFjaW5nOyA9PT4gbWFyZ2luLWJvdHRvbTogJGJhc2UtdW5pdDtcbi8vIEBpbmNsdWRlIHNwYWNpbmcoMikgPT0+IHdhcm5pbmchLCB0aGlzIGlzIG5vdCBnb25uYSB3b3JrXG4vLyBAaW5jbHVkZSBzcGFjaW5nKGIgMikgPT0+IG1hcmdpbi1ib3R0b206ICRiYXNlLXVuaXQgKiAyO1xuLy8gQGluY2x1ZGUgc3BhY2luZyhhIDIpID09PiBtYXJnaW46ICRiYXNlLXVuaXQgKiAyO1xuLy8gQGluY2x1ZGUgc3BhY2luZyhhIDIsIGIgMSkgPT0+IG1hcmdpbjogJGJhc2UtdW5pdCAqIDI7IG1hcmdpbi1ib3R0b206ICRiYXNlLXVuaXQ7XG4vLyBAaW5jbHVkZSBzcGFjaW5nKHIgMSwgbCAxMiUpID09PiBtYXJnaW4tcmlnaHQ6IGJhc2UtdW5pdDsgbWFyZ2luLWxlZnQ6IDEyJTtcbi8vIEBpbmNsdWRlIHNwYWNpbmcociAwLCB0IGF1dG8pID09PiBtYXJnaW4tcmlnaHQ6IDA7ICRtYXJnaW4tdG9wOiBhdXRvO1xuQG1peGluIHNwYWNpbmcoJHNwYWNpbmctYXJncy4uLikge1xuXG4gIC8vIGRlZmF1bHQgY2FzZSBmb3Igc3BhY2luZyAtLSBtYXJnaW4gYm90dG9tXG4gIEBpZiBsZW5ndGgoJHNwYWNpbmctYXJncykgPT0gMCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJhc2UtdW5pdDtcblxuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkcG9zaXRpb24ta2V5LCAkcG9zaXRpb24tdmFsdWUgaW4gJHNwYWNpbmctYXJncyB7XG5cbiAgICAgIEBpZiBub3QgJHBvc2l0aW9uLXZhbHVlIHtcbiAgICAgICAgQHdhcm4gJ1lvdSBzaG91bGQgcHJvdmlkZSBhIGxpc3Qgb2Ygc2lkZS92YWx1ZSBwYWlycyBlLmcuIFwiYiAyXCIgZm9yIHRoaXMgbWl4aW4gdG8gd29yayc7XG5cbiAgICAgIH0gQGVsc2UgaWYgJHBvc2l0aW9uLWtleSA9PSAnYScge1xuICAgICAgICBtYXJnaW46IHBhcnNlLXVuaXQoJHBvc2l0aW9uLXZhbHVlKTtcblxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRzaWRlOiBwb3NpdGlvbi1tYXAoJHBvc2l0aW9uLWtleSk7XG4gICAgICAgICR2YWx1ZTogcGFyc2UtdW5pdCgkcG9zaXRpb24tdmFsdWUpO1xuXG4gICAgICAgIG1hcmdpbi0jeyRzaWRlfTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cblxuLy8gdGhpcyBpbm5lci1zcGFjaW5nIG1peGluIGZvciBwYWRkaW5nIGJlaGF2ZXMgc2xpZ2h0bHkgZGlmZmVyZW50XG4vLyB3aGVuIHByb3ZpZGVkIHdpdGggbm8gcGFyYW1ldGVyLCBwYWRkaW5nIGlzIGFwcGxpZWQgdG8gYWxsIGZvdXJcbi8vIHNpZGVzIG9mIHRoZSBlbGVtZW50LCB1c2luZyBwYWRkaW5nLXNob3J0aGFuZFxuQG1peGluIHNwYWNpbmctaW5uZXIoJHNwYWNpbmctYXJncy4uLikge1xuXG4gIC8vIGRlZmF1bHQgY2FzZSBmb3Igc3BhY2luZyAtLSBtYXJnaW4gYm90dG9tXG4gIEBpZiBsZW5ndGgoJHNwYWNpbmctYXJncykgPT0gMCB7XG4gICAgcGFkZGluZzogJGJhc2UtdW5pdDtcblxuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkcG9zaXRpb24ta2V5LCAkcG9zaXRpb24tdmFsdWUgaW4gJHNwYWNpbmctYXJncyB7XG5cbiAgICAgIEBpZiBub3QgJHBvc2l0aW9uLXZhbHVlIHtcbiAgICAgICAgQHdhcm4gJ1lvdSBzaG91bGQgcHJvdmlkZSBhIGxpc3Qgb2Ygc2lkZS92YWx1ZSBwYWlycyBlLmcuIFwiYiAyXCIgZm9yIHRoaXMgbWl4aW4gdG8gd29yayc7XG5cbiAgICAgIH0gQGVsc2UgaWYgJHBvc2l0aW9uLWtleSA9PSAnYScge1xuICAgICAgICBwYWRkaW5nOiBwYXJzZS11bml0KCRwb3NpdGlvbi12YWx1ZSk7XG5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc2lkZTogcG9zaXRpb24tbWFwKCRwb3NpdGlvbi1rZXkpO1xuICAgICAgICAkdmFsdWU6IHBhcnNlLXVuaXQoJHBvc2l0aW9uLXZhbHVlKTtcblxuICAgICAgICBwYWRkaW5nLSN7JHNpZGV9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiIsIi8vIGdlbmVyYWwgaGVscGVyIGZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyByZXR1cm5zIHRydWUgaWYgaXQgaXMganVzdCBhIG51bWJlciB3aXRob3V0IHVuaXRcbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXInIGFuZCB1bml0bGVzcygkdmFsdWUpO1xufVxuXG4vLyBpZiBhIHVuaXRsZXNzIG51bWJlciBpcyBnaXZlbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zICRiYXNlLXVuaXQgKiB2YWx1ZVxuLy8gKGV4Y2VwdCBmb3IgMCwgMCB3aWxsIGJlIHJldHVybmVkIGluc3RhbnRseSlcbi8vIGlmIGFueXRoaW5nIGVsc2UgaXMgZ2l2ZW4sIGl0IHdpbGwgcmV0dXJuIGl0cyB1bnFvdGVkIHZhbHVlO1xuQGZ1bmN0aW9uIHBhcnNlLXVuaXQoJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gMCB7XG4gICAgQHJldHVybiAwO1xuICB9XG5cbiAgQGlmIGlzLW51bWJlcigkdmFsdWUpIHtcbiAgICBAcmV0dXJuICRiYXNlLXVuaXQgKiAkdmFsdWU7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLyByZXR1cm5zIHRoZSBmdWxsIHZhbHVlIGZvciBhbnkgb2YgdGhlIHBvc2l0aW9uL3NpZGUgc2hvcnQtZm9ybXNcbkBmdW5jdGlvbiBwb3NpdGlvbi1tYXAoJHNob3J0KSB7XG4gICRzaG9ydC1tYXA6IChcbiAgICB0OiB0b3AsXG4gICAgcjogcmlnaHQsXG4gICAgYjogYm90dG9tLFxuICAgIGw6IGxlZnRcbiAgKTtcblxuICBAaWYgbWFwLWhhcy1rZXkoJHNob3J0LW1hcCwgJHNob3J0KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRzaG9ydC1tYXAsICRzaG9ydCk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdTaG9ydCBrZXkgI3skc2hvcnR9IG5vdCBhdmFpYWJsZS4nO1xuXG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8gYmFzZSB1bml0IGRlZmluaXRpb24gYW5kIGRlZmF1bHQgZm9udCBzdHlsZXMgYW5kIGZhbWlseVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBiYXNlIGZvbnQgc2V0dGluZ3MgYW5kIGZvbnQtc2l6ZVxuJGZvbnQtc2l6ZTogMTZweDsgLy8gZGVmYXVsdCBmb250LXNpemUgLS0gd2lsbCBiZSB1c2VkIGFzIDFyZW1cbiRmb250LXdlaWdodDogbm9ybWFsO1xuJGZvbnQtbGluZS1oZWlnaHQ6IDEuNTtcbiRmb250LWZhbWlseTogJ0ZpcmEgU2FucycsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtZmFtaWx5LWhlYWRpbmdzOiAnRmlyYSBTYW5zJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kbGV0dGVyLXNwYWNpbmc6IC4wNWVtO1xuXG4vLyBiYXNlIHVuaXQgLSBkZWZhdWx0IGZvbnQtc2l6ZSAqIGxpbmUtaGVpZ2h0IGluIHJlbSBhbmQgaGFsZi9kb3VibGVcbiRiYXNlLXVuaXQtaW4tcHg6ICRmb250LXNpemUgKiAkZm9udC1saW5lLWhlaWdodDtcbiRiYXNlLXVuaXQ6IDFyZW0gKiAkZm9udC1saW5lLWhlaWdodDtcbiRiYXNlLWhhbGY6ICRiYXNlLXVuaXQgLyAyO1xuJGJhc2UtdGhpcmQ6ICRiYXNlLXVuaXQgLyAzO1xuJGJhc2UtcXVhcnQ6ICRiYXNlLXVuaXQgLyA0O1xuJGJhc2UtZG91YmxlOiAkYmFzZS11bml0ICogMjtcbiRiYXNlLXRyaXBsZTogJGJhc2UtdW5pdCAqIDM7XG4kYmFzZS1xdWFkcnVwbGU6ICRiYXNlLXVuaXQgKiA0O1xuJGJhc2UtdnctbDogLjQ1O1xuXG4vLyBnbG9iYWxseSB1c2VkIHdpZHRocyAobWF4LWNvbnRhaW5lciBzaXplcyBlLmcuKVxuJHdpZHRoLXN0aDogMTAwMHB4O1xuJHdpZHRoLW5hdjogMjQwcHg7XG4kd2lkdGgtbG9nbzogMTMycHg7XG4kd2lkdGgtbG9nby1sYXJnZTogMTk1cHg7XG5cbi8vIGdsb2JhbGx5IHVzZWQgaGVpZ2h0cyAoaGVhZGVyLWhlaWdodCBlLmcuKVxuJGhlaWdodC1zdGg6IDEwMDBweDtcbiRoZWlnaHQtaGVhZGVyOiA1MHB4O1xuJGhlaWdodC1oZWFkZXItbGFyZ2U6IDcwcHg7XG4iLCIvLyBtaXhpbnMgYW5kIG90aGVyIGhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gYSBzbWFsbCBoZWxwZXIgZm9yIGVhc2llciBtZWRpYXF1ZXJpZXMgLSBqdXN0IGRlZmluZSB0aGVcbi8vIGJyZWFrcG9pbnRzIGluIHZhcmlhYmxlcy5zY3NzIGFuZCB5b3UgYXJlIHJlYWR5IHRvIGdvXG4vLyBieSBkZWZhdWx0IHdlIHVzZSB0aGUgbW9iaWxlLWZpcnN0IGlkZWEsIG5vIG1xID09IG1vYmlsZVxuLy8geW91IGNhbiBzZXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gdHJ1ZSBhbiBwcm92aWRlIGEgY3VzdG9tIG1lZGlhcXVlcnlcblxuQG1peGluIG1lZGlhcXVlcnkoJGNvbnRleHQsICRjdXN0b20tcXVlcnk6IGZhbHNlKSB7XG5cbiAgQGlmICRjb250ZXh0ID09IHJldGluYSB7XG4gICAgQG1lZGlhIHByaW50LCAobWluLWRldmljZS1waXhlbC1yYXRpbzogMS4yNSksIChtaW4tcmVzb2x1dGlvbjogMTIwZHBpKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgLy8gcHJpbnQgc3R5bGVzXG4gIH0gQGVsc2UgaWYgJGNvbnRleHQgPT0gcHJpbnQge1xuICAgIEBtZWRpYSBwcmludCB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgLy8gbGFuZHNjYXBlIGFuZCBwb3J0cmFpdCBtZWRpYXF1ZXJpZXNcbiAgfSBAZWxzZSBpZiAkY29udGV4dCA9PSBsYW5kc2NhcGUge1xuICAgIEBtZWRpYSBhbGwgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgfSBAZWxzZSBpZiAkY29udGV4dCA9PSBwb3J0cmFpdCB7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gIH0gQGVsc2UgaWYgJGNvbnRleHQgPT0gc2xpbSB7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIGFuZCAobWF4LWhlaWdodDogJGJyZWFrcG9pbnQtc2xpbSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gIH0gQGVsc2UgaWYgJGNvbnRleHQgPT0gaGlnaCB7XG4gICAgQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkgYW5kIChtYXgtaGVpZ2h0OiAkYnJlYWtwb2ludC1oaWdoKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgfSBAZWxzZSBpZiAkY29udGV4dCA9PSBzbWF4IHtcbiAgICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAje21hcC1nZXQoJGJyZWFrcG9pbnRzLCAkY29udGV4dCl9KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgLy8gY3VzdG9tIG1lZGlhcXVlcmllc1xuICB9IEBlbHNlIGlmICRjdXN0b20tcXVlcnkge1xuXG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGNvbnRleHQpIHtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7bWFwLWdldCgkYnJlYWtwb2ludHMsICRjb250ZXh0KX0ge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuICdUaGVyZSBpcyBubyB2YWx1ZSAjeyRjb250ZXh0fSBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyc7XG4gICAgfVxuXG4gIC8vIGRlZmF1bHQ6IG1vYmlsZS1maXJzdCBtZWRpYXF1ZXJpZXMgYXMgZGVmaW5lZCBpbiBicmVha3BvaW50c1xuICB9IEBlbHNlIHtcblxuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRjb250ZXh0KSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAje21hcC1nZXQoJGJyZWFrcG9pbnRzLCAkY29udGV4dCl9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gJ1RoZXJlIGlzIG5vIHZhbHVlICN7JGNvbnRleHR9IGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzJztcbiAgICB9XG4gIH1cblxufVxuIiwiLy8gYmFzZSBzdHlsZXMgZm9yIGh0bWwsIGJvZHkgYW5kIG90aGVyIGdsb2JhbCBlbGVtZW50c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5odG1sIHtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsOyAvLyBhbGwgd2l0aG91dCBvdmVybGF5aW5nIHNjcm9sbGJhcnNcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogJGZvbnQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJhY2tncm91bmQ7XG4gIC8vIHRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8vIGlvcyA4K1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSh0ZXh0KTtcbiAgfVxufVxuXG5ib2R5IHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQGluY2x1ZGUgbWVkaWFxdWVyeShwcmludCkge1xuICAgICoge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBjb250ZW50OiAnUGxlYXNlLCBkbyBub3Qgd2FzdGUgcGFwZXIgYnkgcHJpbnRpbmcgd2VicGFnZXMuJztcbiAgICB9XG4gIH1cblxuICAmLm5vLXBvaW50ZXJzLWV2ZW50cyB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbn1cblxuLy8gdGV4dCBzZWxlY3Rpb24gc3R5bGVzXG46OnNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6ICRjb2xvci1tYWluO1xuICBjb2xvcjogJGNvbG9yLWRlZmF1bHQ7XG4gIHRleHQtc2hhZG93OiBub25lO1xufVxuXG5oZWFkZXIge1xuICBjaXRlLFxuICBoMyxcbiAgc3BhbixcbiAgcCB7XG4gICAgJjo6c2VsZWN0aW9uIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGNvbG9yLWRlZmF1bHQsIDAuMik7XG4gICAgICBjb2xvcjogJGNvbG9yLWludmVydGVkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gY29sb3IgdmFyaWFibGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgcHJvamVjdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBub24tc2VtYW50aWMgY29sb3ItbmFtZXMgdG8gbWFrZSB5b3VyIGxpZmUgZWFzaWVyLiBhc3NpZ25cbi8vIHRoZW0sIGJ1dCBvbmx5IHVzZSB0aGVtIHRvIHJlYXNzaWduIHRoZW0gYmVsb3cuIE5FVkVSIHVzZVxuLy8gdGhlbSBkaXJlY3RseSBpbiBvdGhlciBzY3NzLWZpbGVzXG4kY29sb3Itd2hpdGU6ICNmZmY7XG4kY29sb3ItZ3JlZW46ICM4ZmMxMWU7XG4kY29sb3ItZGFyazogIzIxMjcyZDtcbiRjb2xvci1yZWQ6ICNmMDM5MWY7XG4kY29sb3ItZ3JleTogbGlnaHRlbigkY29sb3ItZGFyaywgNTAlKTtcbi8vIGV0Yy5cblxuXG4vLyBjb2xvcnMgeW91IHVzZSBpbiB5b3VyIHByb2plY3QgYW5kIG90aGVyIHNjc3MtZmlsZXNcbiRjb2xvci1kZWZhdWx0OiAkY29sb3ItZGFyaztcbiRjb2xvci1tYWluOiAkY29sb3ItZ3JlZW47XG4kY29sb3ItaW52ZXJ0ZWQ6ICRjb2xvci13aGl0ZTtcbiRjb2xvci1iYWNrZ3JvdW5kOiAkY29sb3Itd2hpdGU7XG4kY29sb3ItYm9yZGVyOiAkY29sb3ItZGFyaztcbiRjb2xvci1zZWNvbmQ6ICRjb2xvci1ncmV5O1xuJGNvbG9yLWVycm9yOiAkY29sb3ItcmVkO1xuIiwiLy8gQGZvbnQtZmFjZSBtaXhpbiB1c2luZyB3b2ZmICsgdHRmIGZpbGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGN1c3RvbSB3ZWJmb250cyBtaXhpbi4gSUU4IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgc28gd2UgY2FuIHRocm93XG4vLyBlb3Qgb3ZlciBib2FyZCwgYW5kIGp1c3QgdXNlIHdvZmYgYW5kIHR0ZiBmaWxlcy4gd2UgYXNzdW1lXG4vLyB0aGF0IHRoZSBmb250cy1kaXJlY3RvcnkgaXMgcmVsYXRpdmUgdG8gdGhlIGNvbXBpbGVkIGNzcyBkaXJlY3RvcnlcblxuQG1peGluIGZvbnQtZmFjZSgkZmFtaWx5LCAkZmlsZSwgJHdlaWdodDogbm9ybWFsLCAkc3R5bGU6IG5vcm1hbCkge1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgc3JjOiB1cmwoJyN7JGZpbGV9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJyN7JGZpbGV9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgfVxufVxuXG5cbi8vIG1peGluIGZvciBnZXR0aW5nIHRoZSBjb3JyZWN0IGZvbnQtc2l6ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWl4aW4gZm9udC1zaXplKCRmb250c2l6ZSkge1xuICBmb250LXNpemU6IHB4LXRvLXJlbShtYXAtZ2V0KCRmb250LXNpemVzLCAkZm9udHNpemUpKTtcbn1cbiIsIi8vIGNvbnZlcnQgYSBwaXhlbC1iYXNlZCB1bml0IHRvIHJlbSB1c2luZyB0aGUgZ2xvYmFsIGZvbnRzaXplXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBmdW5jdGlvbiBweC10by1yZW0oJHB4dmFsdWUpIHtcbiAgQHJldHVybiAoJHB4dmFsdWUgLyAkZm9udC1zaXplKSAqIDFyZW07XG59XG4iLCIvLyBjdXN0b20gQGZvbnQtZmFjZSBpbmNsdWRlcyBhcmUgZGVmaW5lZCBoZXJlIC0gdXNlIG1peGluXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEBpbmNsdWRlIGZvbnQtZmFjZSgnRm9udCcsICcuLi9mb250cy9mb250JywgNzAwLCBub3JtYWwpO1xuXG5AaW5jbHVkZSBmb250LWZhY2UoJ0ZpcmEgTW9ubycsICcuLi9mb250cy9maXJhbW9uby1yZWd1bGFyJywgbm9ybWFsLCBub3JtYWwpO1xuQGluY2x1ZGUgZm9udC1mYWNlKCdGaXJhIFNhbnMnLCAnLi4vZm9udHMvZmlyYXNhbnMtdGhpbicsIDEwMCwgbm9ybWFsKTtcbkBpbmNsdWRlIGZvbnQtZmFjZSgnRmlyYSBTYW5zJywgJy4uL2ZvbnRzL2ZpcmFzYW5zLWxpZ2h0JywgMzAwLCBub3JtYWwpO1xuQGluY2x1ZGUgZm9udC1mYWNlKCdGaXJhIFNhbnMnLCAnLi4vZm9udHMvZmlyYXNhbnMtYm9vaycsIG5vcm1hbCwgbm9ybWFsKTtcbkBpbmNsdWRlIGZvbnQtZmFjZSgnRmlyYSBTYW5zJywgJy4uL2ZvbnRzL2ZpcmFzYW5zLW1lZGl1bScsIGJvbGQsIG5vcm1hbCk7XG4iLCIvLyBkZWZhdWx0IGhlYWRpbmdzIGgxIC0gaDZcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaDEge1xuICBAaW5jbHVkZSBzcGFjaW5nKGIgMCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoMik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxldHRlci1zcGFjaW5nOiAuMDVlbTtcblxuICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoaDEpO1xuICB9XG59XG5cbmgyIHtcbiAgQGluY2x1ZGUgc3BhY2luZyhiIDEpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaDQpO1xuICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogJGNvbG9yLW1haW47XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgQGluY2x1ZGUgbWVkaWFxdWVyeShzKSB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKGgzKTtcbiAgfVxuXG4gIGgxICsgJiB7XG4gICAgQGluY2x1ZGUgc3BhY2luZyhiIDMpO1xuICB9XG59XG5cbmgzIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGg0KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcblxuICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoaDMpO1xuICB9XG59XG5cbmg0IHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGg0KTtcbn1cblxuaDUge1xuICBAaW5jbHVkZSBmb250LXNpemUoaDUpO1xufVxuXG5oNiB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoNik7XG59XG4iLCIvLyBkZWZhdWx0IGxpbmsgc3R5bGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5hIHtcbiAgY29sb3I6ICRjb2xvci1tYWluO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblxuICBAaW5jbHVkZSBhdHRlbnRpb24ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIGxpbmtzIGluc2lkZSBvZiBoZWFkaW5ncyBhcmUgbm9ybWFsIGNvbG9yZWQsIG5vbi11bmRlcmxpbmVkXG4gIC8vIGJ1dCBnZXQgYSBzcGVjaWFsIHN5bWJvbCBhZnRlclxuICBoMSA+ICYsXG4gIGgyID4gJixcbiAgaDMgPiAmLFxuICBoNCA+ICYsXG4gIGg1ID4gJixcbiAgaDYgPiAmIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBhdHRlbnRpb24oKSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIGNvbG9yOiAkY29sb3ItbWFpbjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICAgIGNvbG9yOiAkY29sb3ItbWFpbjtcbiAgICAgIGNvbnRlbnQ6ICdcXDAwMjBcXDIyMWUnO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gYXR0ZW50aW9uIG1peGluIGZvciBob3Zlci0sIGZvY3VzLSBhbmQgYWN0aXZlLXN0YXRlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWl4aW4gYXR0ZW50aW9uIHtcbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBiYXNpYyBsaXN0cyBzdHlsaW5nIGFuZCByZXNldFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5uYXYsXG5maWVsZHNldCB7XG4gIHVsLFxuICBvbCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxufVxuXG4uY29udGVudCB1bCB7XG4gIEBpbmNsdWRlIHNwYWNpbmctaW5uZXIobCAxKTtcbiAgbGlzdC1zdHlsZTogc3F1YXJlO1xufVxuIiwiLy8gYmFzZSBzdHlsZXMgZm9yIGZvcm0gZWxlbWVudHMsIGZpZWxkc2V0cywgbGFiZWxzLCBpbnB1dHMgZXRjLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBwbGFjZWhvbGRlciBjb2xvciwgaWYgYnJvd3NlciBzdXBwb3J0cyBpdFxuOjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiBsaWdodGVuKCRjb2xvci1kZWZhdWx0LCA1MCUpO1xufVxuXG4vLyBkb250IGFsbG93IHVuc2VsZWN0YWJsZSBlbGVtZW50cyB0byBiZSBzZWxlY3RlZFxuW3Vuc2VsZWN0YWJsZV0ge1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLy8gZGVmYXVsdCBzdHlsZXMgZm9yIHRleHQtaW5wdXQgZm9ybXMgZmllbGRzXG5bdHlwZT10ZXh0XSxcblt0eXBlPXRlbF0sXG5bdHlwZT1lbWFpbF0sXG5bdHlwZT1zZWFyY2hdLFxuW3R5cGU9bnVtYmVyXSxcblt0eXBlPXBhc3N3b3JkXSxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgQGluY2x1ZGUgcmVsYXRpdmUodCAwLCBsIDApO1xuICBAaW5jbHVkZSBzcGFjaW5nKGIgLjQpO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1ib3JkZXI7XG4gIGJvcmRlci10b3A6IDA7XG4gIGJvcmRlci1sZWZ0OiAwO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGFwcGVhcmFuY2U6IG5vbmU7IC8vIG5vIHJvdW5kZWQgaW5wdXRzIGV0Yy5cbiAgY29sb3I6ICRjb2xvci1kZWZhdWx0O1xuICBvdXRsaW5lOiAwO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIHotaW5kZXg6IDEwO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuXG4gIEBpbmNsdWRlIGF0dGVudGlvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItbWFpbjtcbiAgfVxufVxuXG4vLyB0aGUgbGFiZWwgc2hvdWxkIGFsd2F5cyBiZSBvbiB0b3Agb2YgdGhlIGlucHV0XG5sYWJlbCB7XG4gIEBpbmNsdWRlIGFic29sdXRlKHQgMCwgYiAwLCBsIDApO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMsIGNvbG9yIDAuMnMsIHRvcCAwLjJzLCBib3R0b20gMC4ycywgcmlnaHQgMC4ycywgbGVmdCAwLjJzO1xuICBjb2xvcjogJGNvbG9yLXNlY29uZDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgLmZvY3VzICYsXG4gIC5maWxsZWQgJiB7XG4gICAgZm9udC1zaXplOiA3MCU7XG4gICAgei1pbmRleDogMjtcbiAgICB0b3A6IC0gJGJhc2UtdW5pdDtcbiAgfVxuXG4gIC5maWxsZWQgJiB7XG4gICAgY29sb3I6ICRjb2xvci1kZWZhdWx0O1xuICAgIG9wYWNpdHk6IC44O1xuICB9XG5cbiAgLmZvY3VzICYge1xuICAgIGNvbG9yOiAkY29sb3ItbWFpbjtcbiAgfVxufVxuXG4vLyBubyBib3JkZXIgYnkgZGVmYXVsdCBmb3IgdGhlIGZpZWxkc2V0XG5maWVsZHNldCB7XG4gIEBpbmNsdWRlIHNwYWNpbmcoYSAwKTtcbiAgYm9yZGVyOiAwO1xufVxuXG4vLyByZXNpemUgdGV4dGFyZWFcbnRleHRhcmVhIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIGhlaWdodDogMjhweDtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMnM7XG5cbiAgLmZpbGxlZCAmLFxuICAuZm9jdXMgJiB7XG4gICAgaGVpZ2h0OiAxOTBweDtcbiAgfVxufVxuXG5zZWxlY3Qge1xuICAuZm9jdXMgJixcbiAgLmZpbGxlZCAmIHtcbiAgICBjb2xvcjogJGNvbG9yLWRlZmF1bHQ7XG4gIH1cbn1cblxuLmZvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLy8gZm9ybSBpdGVtXG4uZm9ybS1pdGVtIHtcbiAgQGluY2x1ZGUgcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3NldCkge1xuICAgIEBpbmNsdWRlIHNwYWNpbmcodCAxLjUpO1xuICB9XG5cbiAgZm9ybSA+ICY6bm90KC5mb3JtLWl0ZW1fX3N1Ym1pdC1mZWVkYmFjayk6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpIHtcbiAgICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICAgIHdpZHRoOiA0OCU7XG4gICAgfVxuICB9XG5cbiAgJl9fZmVlZGJhY2tfd2Vic2l0ZSB7XG4gICAgaW5wdXQsXG4gICAgbGFiZWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuZmllbGQtLWVycm9yLS1tZXNzYWdlIHtcbiAgICAgIEBpbmNsdWRlIHJlbGF0aXZlO1xuICAgICAgZm9udC1zaXplOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gICZfX3N1Ym1pdC1mZWVkYmFjayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fZmVlZGJhY2tfc3ViamVjdCB7XG4gICAgJjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBhYnNvbHV0ZSh0IC0uMiwgciAuMik7XG4gICAgICBjb250ZW50OiAnXic7XG4gICAgICBjb2xvcjogJGNvbG9yLW1haW47XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBlcnJvciBtZXNzYWdlXG4uZmllbGQtLWVycm9yLS1tZXNzYWdlIHtcbiAgQGluY2x1ZGUgYWJzb2x1dGUodCAxLjIpO1xuICBjb2xvcjogJGNvbG9yLWVycm9yO1xuICBmb250LXNpemU6IDcwJTtcblxuICAuZm9jdXM6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpICYsXG4gIC5maWxsZWQ6bm90KC5mb3JtLWl0ZW1fX2ZlZWRiYWNrX3dlYnNpdGUpICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIGVhc3kgcG9zaXRpb25pbmcgd2l0aCBjdXN0b20gbWl4aW5zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIHRoYW5rcyB0byBodWdvIGdpcmF1ZGVsOiBodHRwOi8vaHVnb2dpcmF1ZGVsLmNvbS8yMDE0LzA1LzE5L25ldy1vZmZzZXRzLXNhc3MtbWl4aW4vXG5cbkBtaXhpbiBwb3NpdGlvbigkcG9zaXRpb24sICRwb3NpdGlvbi1hcmdzLi4uKSB7XG4gIC8vIGRlZmF1bHQgY2FzZSBmb3IgcG9zaXRpb25zOlxuICAvLyBmaXhlZCwgYWJzb2x1dGUgPT0+IHRvcDogMDsgbGVmdDogMDtcbiAgLy8gc3RhdGljLCByZWxhdGl2ZTogdG9wOiBhdXRvOyBsZWZ0OiBhdXRvO1xuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xuXG4gIEBpZiBsZW5ndGgoJHBvc2l0aW9uLWFyZ3MpID09IDAge1xuICAgIEBpZiAkcG9zaXRpb24gPT0gYWJzb2x1dGUgb3IgcG9zaXRpb24gPT0gZml4ZWQge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcblxuICAgIH0gQGVsc2Uge1xuICAgICAgdG9wOiBhdXRvO1xuICAgICAgbGVmdDogYXV0bztcbiAgICB9XG5cblxuICB9IEBlbHNlIHtcblxuICAgIEBlYWNoICRwb3NpdGlvbi1rZXksICRwb3NpdGlvbi12YWx1ZSBpbiAkcG9zaXRpb24tYXJncyB7XG5cbiAgICAgIEBpZiBub3QgJHBvc2l0aW9uLXZhbHVlIHtcbiAgICAgICAgQHdhcm4gJ1lvdSBzaG91bGQgcHJvdmlkZSBhIGxpc3Qgb2Ygc2lkZS92YWx1ZSBwYWlycyBlLmcuIFwiYiAyXCIgZm9yIHRoaXMgbWl4aW4gdG8gd29yayc7XG5cbiAgICAgIH0gQGVsc2UgaWYgJHBvc2l0aW9uLWtleSA9PSAnYScge1xuICAgICAgICAkdmFsdWU6IHBhcnNlLXVuaXQoJHBvc2l0aW9uLXZhbHVlKTtcblxuICAgICAgICB0b3A6ICR2YWx1ZTtcbiAgICAgICAgcmlnaHQ6ICR2YWx1ZTtcbiAgICAgICAgYm90dG9tOiAkdmFsdWU7XG4gICAgICAgIGxlZnQ6ICR2YWx1ZTtcblxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRzaWRlOiBwb3NpdGlvbi1tYXAoJHBvc2l0aW9uLWtleSk7XG4gICAgICAgICR2YWx1ZTogcGFyc2UtdW5pdCgkcG9zaXRpb24tdmFsdWUpO1xuXG4gICAgICAgICN7JHNpZGV9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhYnNvbHV0ZSgkYXJncy4uLikge1xuICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgJGFyZ3MuLi4pO1xufVxuXG5AbWl4aW4gZml4ZWQoJGFyZ3MuLi4pIHtcbiAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsICRhcmdzLi4uKTtcbn1cblxuQG1peGluIHJlbGF0aXZlKCRhcmdzLi4uKSB7XG4gIEBpbmNsdWRlIHBvc2l0aW9uKHJlbGF0aXZlLCAkYXJncy4uLik7XG59XG5cbkBtaXhpbiBzdGF0aWMoJGFyZ3MuLi4pIHtcbiAgQGluY2x1ZGUgcG9zaXRpb24oc3RhdGljLCAkYXJncy4uLik7XG59XG4iLCIvLyBiYXNpYyBlbGVtZW50IHN0eWxlcyBmb3IgdmlkZW8gLyBhdWRpbyBldGMuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmF1ZGlvLFxuY2FudmFzLFxuaW1nLFxudmlkZW8ge1xuICBAaW5jbHVkZSBtYXgod2lkdGgpO1xufVxuXG5hdWRpbyxcbmNhbnZhcyxcbmlmcmFtZSxcbmltZyxcbnBpY3R1cmUsXG5zdmcsXG52aWRlbyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4iLCIvLyBoZWxwZXJzIGZvciBkaW1lbnNpb25zIGFuZCBwb3NpdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1peGluIG1heCgkY29udGV4dCkge1xuICBAaWYgJGNvbnRleHQgPT0gd2lkdGgge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcblxuICB9IEBlbHNlIGlmICRjb250ZXh0ID09IGhlaWdodCB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuXG4gIH0gQGVsc2UgaWYgJGNvbnRleHQgPT0gdmlld3BvcnQge1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuXG4gIH0gQGVsc2UgaWYgJGNvbnRleHQgPT0gZnVsbCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdUaGVyZSBpcyBubyBtZXRob2QgI3skY29udGV4dH0gZm9yIG1heGltdW0gZGltZXNpb25zJztcbiAgfVxuXG59XG4iLCIvLyB0YWJsZXMgYW5kIGNlbGwvcm93IHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudGFibGUge1xuICB3aWR0aDogMTAwJTtcbn1cblxudGQge1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG50aCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG4iLCIvLyBwb3N0Ym94XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRwYXRoLW9yaWc6ICdNMTA0IDgwLjdsNDIuNy0uNyAzNy4zLS43LjYgMzEuNi0yMi40LjMtLjYtMzAuMic7XG4kcGF0aC1ob3ZlcjE6ICdNMTA0IDc5LjdsMzguNiAxOCAzNCAxNS44LTEzLjUgMjguNy0yMC4yLTkuNSAxMi43LTI3LjMnO1xuJHBhdGgtaG92ZXIyOiAnTTEwNCA4MC40bDM4LjctMTggMzQtMTUuOEwxOTAgNzUuMmwtMjAuMyA5LjVMMTU3IDU3LjMnO1xuJHBhdGgtaG92ZXIzOiAnTTEwNCA4MS4zbDI3LjQtMzIuNyAyNC0yOC42IDI0LjIgMjAuMy0xNC4zIDE3TDE0Mi4zIDM4JztcbiRwYXRoLWhvdmVyNDogJ00xMDQgODEuNGwxMS00MS4yIDkuNy0zNiAzMC42IDgtNS44IDIxLjYtMjktNy44JztcbiRwYXRoLXN1Y2Nlc3M6ICdNMTA0IDgwLjVsLjgtNDIuNi42LTM3LjUgMzEuNS42LS40IDIyLjQtMzAtLjUnO1xuXG4uZmVlZGJhY2tfX3N0YXR1cyB7XG4gIEBpbmNsdWRlIHNwYWNpbmctaW5uZXIodCAzLCBiIDUpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgc3ZnIHtcbiAgICBzdHJva2U6ICRjb2xvci1kZWZhdWx0O1xuICAgIGZpbGw6ICRjb2xvci1pbnZlcnRlZDtcblxuICAgIEBpbmNsdWRlIGF0dGVudGlvbiB7XG4gICAgICAuZmVlZGJhY2tfX3N0YXR1cy0tYW5pbWF0ZSB7XG4gICAgICAgIGFuaW1hdGlvbjogcHVsc2UgLjdzIGxpbmVhciAuMXMgbm9ybWFsIGluZmluaXRlIGZvcndhcmRzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYtLXJhY2sge1xuICAgIHN0cm9rZTogJGNvbG9yLXNlY29uZDtcbiAgfVxuXG4gICYtLWFjdGlvbiB7XG4gICAgc3Ryb2tlOiAkY29sb3Itc2Vjb25kO1xuICB9XG5cbiAgJi0tZXJyb3Ige1xuICAgIC5mZWVkYmFja19fc3RhdHVzLS1hY3Rpb24ge1xuICAgICAgc3Ryb2tlOiAkY29sb3ItZXJyb3I7XG4gICAgICBmaWxsOiAkY29sb3ItZXJyb3I7XG4gICAgfVxuXG4gICAgLmZlZWRiYWNrX19zdGF0dXMtLWFuaW1hdGUge1xuICAgICAgYW5pbWF0aW9uOiBlcnJvciAuN3MgbGluZWFyIC4xcyBhbHRlcm5hdGUgMSBmb3J3YXJkcztcbiAgICB9XG4gIH1cblxuICAmLS1zdWNjZXNzIHtcbiAgICAuZmVlZGJhY2tfX3N0YXR1cy0tYWN0aW9uIHtcbiAgICAgIHN0cm9rZTogJGNvbG9yLW1haW47XG4gICAgICBmaWxsOiAkY29sb3ItbWFpbjtcbiAgICB9XG5cbiAgICAuZmVlZGJhY2tfX3N0YXR1cy0tYW5pbWF0ZSB7XG4gICAgICBhbmltYXRpb246IHN1Y2Nlc3MgLjdzIGxpbmVhciAuMXMgYWx0ZXJuYXRlIDEgZm9yd2FyZHM7XG4gICAgfVxuICB9XG59XG5cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICAwJSxcbiAgNTAlLFxuICAxMDAlIHtcbiAgICBkOiBwYXRoKCRwYXRoLW9yaWcpO1xuICB9XG5cbiAgMjAlIHtcbiAgICBkOiBwYXRoKCRwYXRoLWhvdmVyMSk7XG4gIH1cblxuICA4MCUge1xuICAgIGQ6IHBhdGgoJHBhdGgtaG92ZXIyKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHN1Y2Nlc3Mge1xuICAwJSB7XG4gICAgZDogcGF0aCgkcGF0aC1ob3ZlcjEpO1xuICB9XG5cbiAgNSUge1xuICAgIGQ6IHBhdGgoJHBhdGgtb3JpZyk7XG4gIH1cblxuICAyNSUge1xuICAgIGQ6IHBhdGgoJHBhdGgtaG92ZXIyKTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgZDogcGF0aCgkcGF0aC1ob3ZlcjMpO1xuICB9XG5cbiAgNzUlIHtcbiAgICBkOiBwYXRoKCRwYXRoLWhvdmVyNCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICBkOiBwYXRoKCRwYXRoLXN1Y2Nlc3MpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZXJyb3Ige1xuICAwJSB7XG4gICAgZDogcGF0aCgkcGF0aC1vcmlnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGQ6IHBhdGgoJHBhdGgtaG92ZXIxKTtcbiAgfVxufVxuIiwiLy8gc29tZSBiYXNpYyBrZXlmcmFtZSBhbmltYXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIHJvdGF0ZXMgYW4gZWxlbWVudCBvbmNlXG5Aa2V5ZnJhbWVzIHJvdGF0aW9uIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbi0xIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTUwMCwgMCwgMSk7XG4gIH1cblxuICAyLjM4MDk1JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgwLjUxMjg4LCAwLCAwLCAwLCAwLCAwLjUxMjg4LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMzM4LjQ1ODYzLCAwLCAxKTtcbiAgfVxuXG4gIDQuNzYxOTElIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDAuNzg1MywgMCwgMCwgMCwgMCwgMC43ODUzLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMjA3LjMwOTQ5LCAwLCAxKTtcbiAgfVxuXG4gIDcuMTQyODYlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDAuOTE3NDEsIDAsIDAsIDAsIDAsIDAuOTE3NDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0xMTAuODE5MTQsIDAsIDEpO1xuICB9XG5cbiAgOS41MjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMC45NzUzMywgMCwgMCwgMCwgMCwgMC45NzUzMywgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTQ1Ljk5OTc3LCAwLCAxKTtcbiAgfVxuXG4gIDExLjkwNDglIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDAuOTk3NDMsIDAsIDAsIDAsIDAsIDAuOTk3NDMsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC02LjY2NTM3LCAwLCAxKTtcbiAgfVxuXG4gIDE0LjI4NTclIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEuMDAzOSwgMCwgMCwgMCwgMCwgMS4wMDM5LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAxNC4wNTk1NiwgMCwgMSk7XG4gIH1cblxuICAxNi42NjY3JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwNDQ3LCAwLCAwLCAwLCAwLCAxLjAwNDQ3LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAyMi4zNzkxLCAwLCAxKTtcbiAgfVxuXG4gIDE5LjA0NzYlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEuMDAzMzQsIDAsIDAsIDAsIDAsIDEuMDAzMzQsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDIzLjI0MjMsIDAsIDEpO1xuICB9XG5cbiAgMjEuNDI4NiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDIwOSwgMCwgMCwgMCwgMCwgMS4wMDIwOSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMjAuMjM2MDYsIDAsIDEpO1xuICB9XG5cbiAgMjMuODA5NSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDExNywgMCwgMCwgMCwgMCwgMS4wMDExNywgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMTUuNzMyOTUsIDAsIDEpO1xuICB9XG5cbiAgMjYuMTkwNSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDA2LCAwLCAwLCAwLCAwLCAxLjAwMDYsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDExLjE0NTA1LCAwLCAxKTtcbiAgfVxuXG4gIDI4LjU3MTQlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEuMDAwMjgsIDAsIDAsIDAsIDAsIDEuMDAwMjgsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDcuMTkzNTIsIDAsIDEpO1xuICB9XG5cbiAgMzAuOTUyNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDAxMiwgMCwgMCwgMCwgMCwgMS4wMDAxMiwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgNC4xNDYwOSwgMCwgMSk7XG4gIH1cblxuICAzMy4zMzMzJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLjAwMDA0LCAwLCAwLCAwLCAwLCAxLjAwMDA0LCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAyLjAwMzMsIDAsIDEpO1xuICB9XG5cbiAgMzUuNzE0MyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMS4wMDAwMSwgMCwgMCwgMCwgMCwgMS4wMDAwMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC42MzE1NiwgMCwgMSk7XG4gIH1cblxuICAzOC4wOTUyJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4xNTAyNSwgMCwgMSk7XG4gIH1cblxuICA0MC40NzYyJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC41MjAzNCwgMCwgMSk7XG4gIH1cblxuICA0Mi44NTcxJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC42MjkwNiwgMCwgMSk7XG4gIH1cblxuICA0NS4yMzgxJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC41OTA1MywgMCwgMSk7XG4gIH1cblxuICA0Ny42MTklIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjQ4MzgsIDAsIDEpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjM1ODY2LCAwLCAxKTtcbiAgfVxuXG4gIDUyLjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMjQyNzgsIDAsIDEpO1xuICB9XG5cbiAgNTQuNzYxOSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMTQ4NzEsIDAsIDEpO1xuICB9XG5cbiAgNTcuMTQyOSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDc5NDksIDAsIDEpO1xuICB9XG5cbiAgNTkuNTIzOCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDMzLCAwLCAxKTtcbiAgfVxuXG4gIDYxLjkwNDglIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIC0wLjAwNDc4LCAwLCAxKTtcbiAgfVxuXG4gIDY0LjI4NTclIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAuMDEwMDksIDAsIDEpO1xuICB9XG5cbiAgNjYuNjY2NyUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTYwNSwgMCwgMSk7XG4gIH1cblxuICA2OS4wNDc2JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLjAxNjY3LCAwLCAxKTtcbiAgfVxuXG4gIDcxLjQyODYlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAuMDE0NTIsIDAsIDEpO1xuICB9XG5cbiAgNzMuODA5NSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMTEyOSwgMCwgMSk7XG4gIH1cblxuICA3Ni4xOTA1JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLjAwNzk5LCAwLCAxKTtcbiAgfVxuXG4gIDc4LjU3MTQlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAuMDA1MTYsIDAsIDEpO1xuICB9XG5cbiAgODAuOTUyNCUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMC4wMDI5NywgMCwgMSk7XG4gIH1cblxuICA4My4zMzMzJSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLjAwMTQ0LCAwLCAxKTtcbiAgfVxuXG4gIDg1LjcxNDMlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAuMDAwNDUsIDAsIDEpO1xuICB9XG5cbiAgODguMDk1MiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwMTEsIDAsIDEpO1xuICB9XG5cbiAgOTAuNDc2MiUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwMzcsIDAsIDEpO1xuICB9XG5cbiAgOTIuODU3MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwNDUsIDAsIDEpO1xuICB9XG5cbiAgOTUuMjM4MSUge1xuICAgIHRyYW5zZm9ybTogbWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgLTAuMDAwNDIsIDAsIDEpO1xuICB9XG5cbiAgOTcuNjE5JSB7XG4gICAgdHJhbnNmb3JtOiBtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAtMC4wMDAzNSwgMCwgMSk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IG1hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEpO1xuICB9XG5cbn1cblxuLy8gaXQgaXMgd2lzZSB0byB0cnkgdG8gYW5pbWF0ZSBvbmx5IHRyYW5zZm9ybXMgYW5kIG9wYWNpdHkgZm9yIGFuaW1hdGlvblxuLy8gYmVjYXVzZSB0aG9zZSBhcmUgY2hlYXAgZm9yIHRoZSBicm93c2VyIGFuZCByZXN1bHQgaW4gc21vb3RoZXIgYW5pbWF0aW9uc1xuXG4vLyBkZWZhdWx0IGFuaW1hdGlvbiwgNDAwbXMgXj0ganF1ZXJ5IGRlZmF1bHQgYW5pbWF0aW9uIHRpbWUgOi0pXG4uYW5pbWF0ZSxcbiVhbmltYXRlIHtcbiAgLy8gdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW4sIHRyYW5zZm9ybSAwLjRzIGVhc2UtaW47XG4gIHRyYW5zaXRpb246IGFsbCAuNHM7XG59XG4iLCIvLyBib3ggcmF0aW8gLyBhZGQgY3VzdG9tIGJveGVzIHdpdGggYSBmaXhlZCAocmVzcG9uc2l2ZSkgcmF0aW9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gYm94ZXMgd2l0aCBhIGZpeGVkIHJhdGlvIHVzZSBsaWtlOlxuLy8gPGRpdiBjbGFzcz1cImJveCAgYm94LS0xNi05XCI+XG4vLyAgIDxkaXYgY2xhc3M9XCJib3hfX2NvbnRlbnRcIj48L2Rpdj5cbi8vIDwvZGl2PlxuXG4uYm94IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBhZGRpbmctdG9wOiAxMDAlOyAvLyBpbml0aWFsIHJhdGlvIG9mIDE6MVxuICB9XG59XG5cbi5ib3hfX2NvbnRlbnQge1xuICBAaW5jbHVkZSBjZW50ZXIoY292ZXIpO1xufVxuXG4vLyBhbmQgbm93IC0gdGhlIHZhcmlvdXMgYm94IHNpemVzXG4uYm94LS0yLTEge1xuICBAaW5jbHVkZSBib3goMiwgMSk7XG59XG5cbi5ib3gtLTEtMiB7XG4gIEBpbmNsdWRlIGJveCgxLCAyKTtcbn1cblxuLmJveC0tNC0zIHtcbiAgQGluY2x1ZGUgYm94KDQsIDMpO1xufVxuXG4uYm94LS0xNi05IHtcbiAgQGluY2x1ZGUgYm94KDE2LCA5KTtcbn1cbiIsIi8vIGEgc21hbGwgbWl4aW4gZm9yIHRoZSBib3gtcmF0aW8gY2FsY3VsYXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtaXhpbiBib3goJHJhdGlvLW9uZTogMSwgJHJhdGlvLXR3bzogMSkge1xuICAmOjpiZWZvcmUge1xuICAgIHBhZGRpbmctdG9wOiAkcmF0aW8tdHdvIC8gJHJhdGlvLW9uZSAqIDEwMCU7XG4gIH1cbn1cbiIsIi8vIGJ1dHRvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJvcmRlci13aWR0aDogMnB4O1xuXG4lYnV0dG9uIHtcbiAgQGluY2x1ZGUgc3BhY2luZy1pbm5lcihsIDEsIHIgMSwgYiAwLCB0IDApO1xuICBAaW5jbHVkZSByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogJGJhc2UtZG91YmxlO1xuICBmb250LXdlaWdodDogNzAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzO1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItaW52ZXJ0ZWQ7XG4gIGNvbG9yOiAkY29sb3ItZGVmYXVsdDtcbiAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRjb2xvci1ib3JkZXI7XG4gIG91dGxpbmU6IDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4yZW07XG4gIG1pbi13aWR0aDogJGJhc2UtcXVhZHJ1cGxlICogMi41O1xuICBtYXgtd2lkdGg6ICRiYXNlLXF1YWRydXBsZSAqIDQ7XG4gIGhlaWdodDogJGJhc2UtZG91YmxlO1xufVxuXG4uYnV0dG9uIHtcbiAgQGV4dGVuZCAlYnV0dG9uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDU7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggLjNzLCBoZWlnaHQgLjNzO1xuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLW1haW47XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aCAwO1xuICAgIHRvcDogLSAkYm9yZGVyLXdpZHRoO1xuICAgIGxlZnQ6IDA7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMC4wNXM7XG4gIH1cblxuICAmOmFmdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXdpZHRoOiAwICRib3JkZXItd2lkdGg7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0gJGJvcmRlci13aWR0aDtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAkY29sb3ItbWFpbjtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5BVlxuICAmLS10b2dnbGUtbmF2IHtcbiAgICBAZXh0ZW5kICVhbmltYXRlO1xuICAgIEBpbmNsdWRlIGZpeGVkKHQgMTJweCwgciAxMHB4KTtcbiAgICBAaW5jbHVkZSB6LWluZGV4KHNreSk7XG5cbiAgICAvLyB3ZSBkb24ndCBuZWVkIHRoaXMgYnV0dG9uIG9uIGxhcmdlIGRpc3BsYXlzXG4gICAgQGluY2x1ZGUgbWVkaWFxdWVyeShsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYtLWFjdGl2ZSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgfVxuICB9XG59XG5cbi5mZWVkYmFjay1zdWNjZXNzIHtcbiAgQGV4dGVuZCAlYnV0dG9uO1xuICBAaW5jbHVkZSBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICRjb2xvci1tYWluO1xuICBib3JkZXItY29sb3I6ICRjb2xvci1tYWluO1xuICBjb2xvcjogJGNvbG9yLWludmVydGVkO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbiIsIi8vIHotaW5kZXggbWl4aW4gZm9yIHVzZSB3aXRoIHRoZSBtYXAgaW4gdmFyaWFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtaXhpbiB6LWluZGV4KCR6LXZhbHVlOiBkZWZhdWx0KSB7XG4gIHotaW5kZXg6IG1hcC1nZXQoJHotaW5kZXhlcywgJHotdmFsdWUpO1xufVxuXG4iLCIvLyB6aW5kZXggY29uZmlndXJhdGlvbiAtIHVzZSB3aXRoIG1peGluXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiR6LWluZGV4ZXM6IChcbiAgc2t5OiA1MDAwLFxuICBoYWlyOiA0MDAwLFxuICBoZWFkOiAzMDAwLFxuICBiZWxseTogMjAwMCxcbiAga25lZXM6IDEwMDAsXG4gIGZlZXQ6IDEsXG4gIGdyb3VuZDogLTFcbik7XG4iLCIvLyBhIG1peGluIGZvciBjZW50ZXJpbmcgd2l0aCBkaWZmZXJlbnQgbWV0aG9kc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWl4aW4gY2VudGVyKCRjb250ZXh0OiBkZWZhdWx0KSB7XG5cbiAgQGlmICRjb250ZXh0ID09IGhvcml6b250YWwge1xuXG4gICAgQGluY2x1ZGUgcmVsYXRpdmUobCA1MCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblxuICB9IEBlbHNlIGlmICRjb250ZXh0ID09IHZlcnRpY2FsIHtcblxuICAgIEBpbmNsdWRlIHJlbGF0aXZlKHQgNTAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cbiAgfSBAZWxzZSBpZiAkY29udGV4dCA9PSBib3RoIHtcblxuICAgIEBpbmNsdWRlIGFic29sdXRlKHQgNTAlLCBsIDUwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cbiAgfSBAZWxzZSBpZiAkY29udGV4dCA9PSBjb3ZlciB7XG5cbiAgICBAaW5jbHVkZSBhYnNvbHV0ZSh0IDAsIHIgMCwgYiAwLCBsIDApO1xuXG4gIH0gQGVsc2UgeyAvLyBhc3N1bWluZyBkZWZhdWx0IGNhc2UgLSBvbGRzY2hvb2wgaG9yaXpvbnRhbCBjZW50ZXJpbmdcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cbn1cbiIsIi8vIGEgdmVyeSBiYXNpYyBncmlkIHN5c3RlbVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyB1c2UgbGlrZSB0aGlzOlxuLy8gPGRpdiBjbGFzcz1cImdyaWQgIGdyaWQtLTJcIj5cbi8vICA8ZGl2IGNsYXNzPVwiZ3JpZF9fY29sdW1uXCI+IFlvdXIgY29udGVudCA8L2Rpdj5cbi8vICA8ZGl2IGNsYXNzPVwiZ3JpZF9fY29sdW1uXCI+IFlvdXIgY29udGVudCA8L2Rpdj5cbi8vIDwvZGl2PlxuXG4vLyB5b3UgY2FuIHRocm93IGdyaWRzIGludG8gZWFjaCBvdGhlciB0byBjcmVhdGUgY3VzdG9tIGxheW91dHNcblxuLmdyaWQge1xuICBAZXh0ZW5kICVjbGVhcmZpeDtcblxuICAvLyBieSBkZWZhdWx0LCB0aGUgZ3JpZCBzdGFydHMgZnJvbSBicmVha3BvaW50IGxhcmdlIGFuZCBhYm92ZVxuICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICBAaW5jbHVkZSBzcGFjaW5nKGIgMSwgbCAtMik7XG5cbiAgICAuZm9vdGVyX19pbm5lciAmIHtcbiAgICAgIEBpbmNsdWRlIHNwYWNpbmcoYiAwKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KHh4bCkge1xuICAgIEBpbmNsdWRlIHNwYWNpbmcoYiAyLCBsIC0zKTtcblxuICAgIC5mb290ZXJfX2lubmVyICYge1xuICAgICAgQGluY2x1ZGUgc3BhY2luZyhiIDApO1xuICAgIH1cbiAgfVxufVxuXG4uZ3JpZF9fY29sdW1uIHtcbiAgQGluY2x1ZGUgbWVkaWFxdWVyeShsKSB7XG4gICAgQGluY2x1ZGUgc3BhY2luZy1pbm5lcihsIDIpO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkoeHhsKSB7XG4gICAgQGluY2x1ZGUgc3BhY2luZy1pbm5lcihsIDMpO1xuICB9XG59XG5cbi8vIG5vdyBkZWZpbmUgdGhlIGRpZmZlcmVudCBncmlkIGNvbHVtbiB3aWR0aHMgZm9yIHNvbWVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gdHdvIGNvbHVtbnNcbi5ncmlkLS0yID4gLmdyaWRfX2NvbHVtbiB7XG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cblxuLy8gdGhyZWUgY29sdW1zXG4uZ3JpZC0tMyA+IC5ncmlkX19jb2x1bW4ge1xuICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICB3aWR0aDogMzMuMzMzMyU7XG4gIH1cbn1cblxuLy8gZm91ciBjb2x1bXNcbi5ncmlkLS00ID4gLmdyaWRfX2NvbHVtbiB7XG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgIHdpZHRoOiAyNSU7XG4gIH1cbn1cblxuLy8gZml2ZSBjb2x1bXNcbi5ncmlkLS01ID4gLmdyaWRfX2NvbHVtbiB7XG4gIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgIHdpZHRoOiAyMCU7XG4gIH1cbn1cblxuLy8gc2l4IGNvbHVtc1xuLmdyaWQtLTYgPiAuZ3JpZF9fY29sdW1uIHtcbiAgQGluY2x1ZGUgbWVkaWFxdWVyeShsKSB7XG4gICAgd2lkdGg6IDE2LjY2NjYlO1xuICB9XG59XG4iLCIvLyBzdmcgaWNvbnMgYW5kIGN1c3RvbSBpY29uIHN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xuXG4gICYtLWtmaWFwcHMge1xuICAgIEBpbmNsdWRlIHNwYWNpbmcoYiAxLCByIDEpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgICAgQGluY2x1ZGUgc3BhY2luZyhyIDApO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICB3aWR0aDogMTU1cHg7XG4gICAgICBoZWlnaHQ6IDQ1cHg7XG5cbiAgICAgIEBpbmNsdWRlIG1lZGlhcXVlcnkobCkge1xuICAgICAgICB3aWR0aDogMjYwcHg7XG4gICAgICAgIGhlaWdodDogNzVweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLS1zb2NpYWxfZ2l0aHViLFxuICAmLS1zb2NpYWxfbWFpbCxcbiAgJi0tc29jaWFsX3R3aXR0ZXIsXG4gICYtLXNvY2lhbF93ZWJzaXRlIHtcbiAgICB3aWR0aDogNjBweDtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgZmlsbDogJGNvbG9yLWludmVydGVkO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1tYWluO1xuICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG5cbiAgICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBhdHRlbnRpb24oKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItaW52ZXJ0ZWQ7XG4gICAgICBmaWxsOiAkY29sb3ItZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cbiIsIi5jb250ZW50IHtcbiAgZmxleDogMTtcbn1cbiIsIi8vIGdsb2JhbCBmb290ZXIgc3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZvb3RlciB7XG4gIGJhY2tncm91bmQ6ICRjb2xvci1kZWZhdWx0O1xuICBjb2xvcjogJGNvbG9yLWludmVydGVkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgdWwge1xuICAgIEBpbmNsdWRlIHNwYWNpbmcodCAyLjUsIGIgMS41KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgQGluY2x1ZGUgbWVkaWFxdWVyeShsKSB7XG4gICAgICBAaW5jbHVkZSBzcGFjaW5nKGIgMy41KTtcbiAgICB9XG4gIH1cblxuICBsaSB7XG4gICAgQGluY2x1ZGUgc3BhY2luZy1pbm5lcihsIC41LCByIC41LCBiIDEpO1xuICB9XG5cbiAgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBjb2xvcjogJGNvbG9yLWludmVydGVkO1xuICB9XG5cbiAgcCB7XG4gICAgY29sb3I6ICRjb2xvci1pbnZlcnRlZDtcbiAgfVxufVxuXG4uY29weXJpZ2h0IHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGg2KTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6IGRhcmtlbigkY29sb3ItaW52ZXJ0ZWQsIDIwJSk7XG59XG4iLCIvLyB3cmFwcGVyIHN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ud3JhcHBlciB7XG4gIEBpbmNsdWRlIHJlbGF0aXZlO1xuXG4gICZfX2lubmVyIHtcbiAgICBAaW5jbHVkZSBzcGFjaW5nKGwgYXV0bywgciBhdXRvKTtcbiAgICBAaW5jbHVkZSBzcGFjaW5nLWlubmVyKGwgMiwgciAyKTtcbiAgICBtYXgtd2lkdGg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBsKTtcblxuICAgIEBpbmNsdWRlIG1lZGlhcXVlcnkoeGwpIHtcbiAgICAgIHdpZHRoOiBtYXAtZ2V0KCRicmVha3BvaW50cywgbCk7XG4gICAgfVxuICB9XG5cbiAgJi0tcmlnaHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxuXG4gICYtLWZvb3RlciB7XG4gICAgQGluY2x1ZGUgc3BhY2luZy1pbm5lcihsIDEsIHIgMSwgdCAxLjUsIGIgMik7XG5cbiAgICBAaW5jbHVkZSBtZWRpYXF1ZXJ5KGwpIHtcbiAgICAgIEBpbmNsdWRlIHNwYWNpbmctaW5uZXIodCAzKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIGJyZWFrcG9pbnRzIHVzZWQgdGhyb3VnaG91dCB0aGUgcHJvamVjdCAtIHVzZSB3aXRoIG1peGluXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4kYnJlYWtwb2ludC1zbGltOiA2MTBweDtcbiRicmVha3BvaW50LWhpZ2g6IDkwMHB4O1xuXG4kYnJlYWtwb2ludHM6IChcbiAgczogNDgwcHgsXG4gIG06IDcyMHB4LFxuICBsOiA5NjBweCxcbiAgeGw6IDExMDBweCxcbiAgeHhsOiAxNDAwcHgsXG4gIHh4eGw6IDIwMDBweCwgLy8gZm9yIHRob3NlIGluc2FuZSBkaXNwbGF5cy9pbWFjc1xuICBzbGltOiAkYnJlYWtwb2ludC1zbGltLFxuICBoaWdoOiAkYnJlYWtwb2ludC1oaWdoLFxuICBzbWF4OiA0ODBweFxuKTtcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI0NMRUFSRklYXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIE1pY3JvIGNsZWFyZml4LCBhcyBwZXI6IGNzcy0xMDEub3JnL2FydGljbGVzL2NsZWFyZml4L2xhdGVzdC1uZXctY2xlYXJmaXgtc28tZmFyLnBocFxuICogRXh0ZW5kIHRoZSBjbGVhcmZpeCBjbGFzcyB3aXRoIFNhc3MgdG8gYXZvaWQgdGhlIGAuY2xlYXJmaXhgIGNsYXNzIGFwcGVhcmluZ1xuICogb3ZlciBhbmQgb3ZlciBpbiB5b3VyIG1hcmt1cC5cbiAqL1xuLmNsZWFyZml4LFxuJWNsZWFyZml4IHtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuXG59XG4iLCIvLyB0eXBvZ3JhcGhpYyBzdHVmZiBhbmQgZ2VuZXJhbCB0eXBvZ3JhcGhpYyByZWxhdGVkIGhlbHBlciBjbGFzc2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50cnVuY2F0ZS10ZXh0LFxuJXRydW5jYXRlLXRleHQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cbiIsIi8vIGhlbHBlcnMgdG8gaGlkZSBlbGVtZW50cyBpbiB2YXJpb3VzIHdheXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gY29tcGxldGVseSBoaWRkZW5cbi5oaWRkZW4sXG4laGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vLyBoaWRkZW4sIGJ1dCBmb2N1c2FibGUgYW5kIHNjcmVlbnJlYWRlci1jb21wYXRpYmxlXG4udmlzdWFsbHloaWRkZW4sXG4ldmlzdWFsbHloaWRkZW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcblxuICAmLmZvY3VzYWJsZSB7XG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIGNsaXA6IGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vIGhpZGUsIGJ1dCBtYWludGFpbiBsYXlvdXRcbi5pbnZpc2libGUsXG4laW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuIl0sInNvdXJjZVJvb3QiOiIuLyJ9 */
