html {
  box-sizing: border-box; }

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

/* 
	This mixin is meant for us to animation in elements 
	from the direction of an element on the page.
	
*/
/*
// ----------------------------------------------
// Usage example:
// For IE set $mq-support to false.
// Set the fixed value.
// Then use mixins to test whether styles should be applied.
// ----------------------------------------------

$mq-support: false;
$mq-fixed-value: 1024;

// Renders at fixed value
@include bp (min-width, 300px) { 
    div { color:#000; }
}

// Doesn't render without MQ support
@include bp (min-width, 1200px) { 
    div { color:#FFF; }
}

// Doesn't render without MQ support
@include bp (max-width, 300px) { 
    div { color:#444; }
}

// Renders at fixed value
@include bp (max-width, 1200px) { 
    div { color:#888; }
}

// ----------------------------------------------
*/
/*! normalize.css v2.0.1 | MIT License | git.io/normalize */
/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */
/*
 * Corrects `block` display not defined in IE 8/9.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section,
summary {
  display: block; }

/*
 * Corrects `inline-block` display not defined in IE 8/9.
 */
audio,
canvas,
video {
  display: inline-block; }

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

/*
 * Addresses styling for `hidden` attribute not present in IE 8/9.
 */
[hidden] {
  display: none; }

/* ==========================================================================
   Base
   ========================================================================== */
/*
 * 1. Sets default font family to sans-serif.
 * 2. Prevents iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 2 */ }

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

/* ==========================================================================
   Links
   ========================================================================== */
/*
 * Addresses `outline` inconsistency between Chrome and other browsers.
 */
a:focus {
  outline: thin dotted; }

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

/* ==========================================================================
   Typography
   ========================================================================== */
/*
 * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
 * Safari 5, and Chrome.
 */
h1 {
  font-size: 2em; }

/*
 * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

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

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

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

/*
 * Corrects font family set oddly in Safari 5 and Chrome.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, serif;
  font-size: 1em; }

/*
 * Improves readability of pre-formatted text in all browsers.
 */
pre {
  white-space: pre;
  white-space: pre-wrap;
  word-wrap: break-word; }

/*
 * Sets consistent quote types.
 */
q {
  quotes: "\201C" "\201D" "\2018" "\2019"; }

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

/*
 * Prevents `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
   ========================================================================== */
/*
 * Removes border when inside `a` element in IE 8/9.
 */
img {
  border: 0; }

/*
 * Corrects overflow displayed oddly in IE 9.
 */
svg:not(:root) {
  overflow: hidden; }

/* ==========================================================================
   Figures
   ========================================================================== */
/*
 * Addresses margin not present in IE 8/9 and Safari 5.
 */
figure {
  margin: 0; }

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

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

/*
 * 1. Corrects font family not being inherited in all browsers.
 * 2. Corrects font size not being inherited in all browsers.
 * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
 */
button,
input,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-size: 100%;
  /* 2 */
  margin: 0;
  /* 3 */ }

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

/*
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Corrects inability to style clickable `input` types in iOS.
 * 3. Improves 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],
input[disabled] {
  cursor: default; }

/*
 * 1. Addresses box sizing set to `content-box` in IE 8/9.
 * 2. Removes excess padding in IE 8/9.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

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

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

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

/*
 * 1. Removes default vertical scrollbar in IE 8/9.
 * 2. Improves readability and alignment in all browsers.
 */
textarea {
  overflow: auto;
  /* 1 */
  vertical-align: top;
  /* 2 */ }

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

/* ============================================ *
 * Reset
 * ============================================ */
*,
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0;
  padding: 0; }

html {
  -webkit-tap-highlight-color: transparent;
  /* Prevent tap highlight on iOS/Android */
  -webkit-text-size-adjust: 100%;
  /* Prevent automatic scaling on iOS */ }

body {
  background: #FFFFFF;
  color: #000000;
  line-height: 1; }

html,
body,
img,
fieldset,
abbr,
acronym {
  border: 0; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: 100%;
  font-weight: normal; }

th,
code,
cite,
caption {
  font-weight: normal;
  font-style: normal;
  text-align: left; }

address {
  font-style: normal; }

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

img {
  display: inline-block; }

ol,
ul {
  list-style: none; }

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

input:focus,
input[type="search"]:focus {
  outline-offset: -2px; }

input[type="search"] {
  -webkit-appearance: none;
  /* 1 */
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  /* 2 */
  box-sizing: border-box; }

/* ============================================ *
 * Base Styles
 * ============================================ */
@-ms-viewport {
  width: device-width; }

@-o-viewport {
  width: device-width; }

@viewport {
  width: device-width; }

* {
  text-rendering: optimizeLegibility; }

a, button {
  -ms-touch-action: manipulation;
  touch-action: manipulation; }

body,
button,
input,
select,
table,
textarea {
  font-family: "Lato", sans-serif;
  color: #636363;
  font-size: 14px;
  line-height: 1.5; }

.button {
  padding: 15px; }

a {
  color: #636363;
  text-decoration: underline; }

a:hover {
  color: #f4ad02;
  text-decoration: underline; }

a:focus {
  outline-color: #fdb406;
  color: #765401; }

.button {
  color: #fff; }

ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0; }

/* ============================================ *
 * Typography
 * ============================================ */
h1, .h1 {
  margin: 0;
  margin-bottom: 0.7em;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 28px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.2;
  text-rendering: optimizeLegibility; }
  .news-item-content h1, .news-item-content .h1 {
    margin: 0;
    margin-bottom: 0.7em;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 28px;
    font-weight: 400;
    font-style: normal;
    line-height: 1.2;
    text-rendering: optimizeLegibility; }

h2, .h2 {
  margin: 0;
  margin-bottom: 0.5em;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 24px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.2;
  text-rendering: optimizeLegibility; }

h3, .h3 {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 18px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed; }
  .news-item-content h3, .news-item-content .h3 {
    margin: 0;
    margin-bottom: 10px;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 18px;
    font-weight: 400;
    font-style: normal;
    line-height: 1.4;
    text-rendering: optimizeSpeed; }

h4, .h4 {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed; }
  .news-item-content h4, .news-item-content .h4 {
    margin: 0;
    margin-bottom: 10px;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 14px;
    font-weight: bold;
    font-style: normal;
    line-height: 1.4;
    text-rendering: optimizeSpeed; }

h5, .h5 {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 13px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed; }

h6, .h6 {
  margin: 0;
  margin-bottom: 5px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 12px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed; }

em {
  font-style: italic; }

strong, b {
  font-weight: 700; }

/* ============================================ *
 * Shared Classes
 * ============================================ */
.text-upper {
  text-transform: uppercase; }

.address-list address {
  margin-bottom: 1em; }

.availability {
  margin-bottom: 0;
  font-size: 13px;
  text-transform: uppercase; }

.availability .label {
  display: none; }

.availability.in-stock {
  color: #11B400; }

.availability.available-soon,
.availability.out-of-stock {
  color: #DF280A; }

.availability-only {
  color: #DF280A;
  margin-bottom: 10px; }

/* -------------------------------------------- *
 * Page Titles
 */
.page-title h1,
.page-title h2,
.product-name h1,
.product-name .h1 {
  font-size: 24px;
  font-weight: 600;
  color: #636363;
  border-bottom: 1px solid #EDEDED;
  padding-bottom: 3px;
  margin-bottom: 15px; }

/* -------------------------------------------- *
 * Block Module
 */
.block,
.col-left-first {
  margin-bottom: 20px; }

.col-left-first .block:last-of-type {
  margin-bottom: 0; }

.block-title {
  position: relative;
  padding: 10px 0 0;
  margin-bottom: 5px;
  border-top: 1px solid #CCCCCC; }
  .block-title h2,
  .block-title h3,
  .block-title strong {
    margin: 0;
    margin-bottom: 10px;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 14px;
    font-weight: bold;
    font-style: normal;
    line-height: 1.4;
    text-rendering: optimizeSpeed;
    color: #fdb813;
    margin-bottom: 0;
    text-transform: none;
    font-weight: 600;
    color: #fdb813; }
  .block-title small {
    font-size: 100%;
    font-weight: normal;
    color: #A0A0A0; }

body:not(.customer-account) .block:first-child .block-title {
  border-top: none;
  padding-top: 0; }

.block-subtitle {
  font-weight: bold;
  margin-bottom: 7px; }

.block-content {
  margin-top: 5px; }

.block-content.unpad {
  padding: 0; }

.block-content li.item {
  margin: 0 0 10px 9px; }

.block-content li.item:last-child {
  margin-bottom: 0; }

.block .actions {
  margin: 10px 0 0; }
  .block .actions:after {
    content: '';
    display: table;
    clear: both; }
  .block .actions a {
    float: left; }
  .block .actions .button {
    float: right; }

.col-left .block .actions .button ~ a,
.col-right .block .actions .button ~ a {
  line-height: 33px;
  margin-right: 5px; }

@media only screen and (max-width: 770px) {
  .sidebar .block:not(.block-layered-nav) {
    margin-bottom: 0; }
    .sidebar .block:not(.block-layered-nav) .block-title {
      padding: 0;
      margin-top: 0;
      border-bottom: none;
      border-top: none;
      margin-bottom: 0; }
      .sidebar .block:not(.block-layered-nav) .block-title > strong {
        margin: 0;
        margin-bottom: 10px;
        color: #f7b340;
        font-family: "Lato", sans-serif;
        font-size: 14px;
        font-weight: bold;
        font-style: normal;
        line-height: 1.4;
        text-rendering: optimizeSpeed;
        -moz-user-select: none;
        -ms-user-select: none;
        -webkit-user-select: none;
        -o-user-select: none;
        user-select: none;
        font-weight: normal;
        margin-bottom: 0px;
        padding: 7px 10px 7px 24px;
        border-width: 1px;
        border-style: solid;
        border-color: #CCCCCC;
        position: relative;
        background-color: #F4F4F4;
        display: block;
        width: 100%;
        cursor: pointer;
        border-bottom: 0; }
        .sidebar .block:not(.block-layered-nav) .block-title > strong:after {
          content: '';
          position: absolute;
          width: 0;
          height: 0;
          display: block;
          border-top: 4px solid transparent;
          border-bottom: 4px solid transparent;
          border-left: 4px solid #fdb813;
          border-right: none;
          left: 10px;
          top: 50%;
          margin-top: -3px; }
        .sidebar .block:not(.block-layered-nav) .block-title > strong:hover {
          background-color: #ededed; }
      .sidebar .block:not(.block-layered-nav) .block-title.active > strong {
        margin: 0;
        margin-bottom: 10px;
        color: #f7b340;
        font-family: "Lato", sans-serif;
        font-size: 14px;
        font-weight: bold;
        font-style: normal;
        line-height: 1.4;
        text-rendering: optimizeSpeed;
        -moz-user-select: none;
        -ms-user-select: none;
        -webkit-user-select: none;
        -o-user-select: none;
        user-select: none;
        font-weight: normal;
        margin-bottom: 0px;
        padding: 7px 10px 7px 24px;
        border-width: 1px;
        border-style: solid;
        border-color: #CCCCCC;
        position: relative;
        background-color: #F4F4F4; }
        .sidebar .block:not(.block-layered-nav) .block-title.active > strong:after {
          content: '';
          position: absolute;
          width: 0;
          height: 0;
          display: block;
          border-right: 4px solid transparent;
          border-left: 4px solid transparent;
          border-top: 4px solid #fdb813;
          border-bottom: none;
          left: 10px;
          top: 50%;
          margin-top: -3px; }
        .sidebar .block:not(.block-layered-nav) .block-title.active > strong:hover {
          background-color: #ededed; }
    .sidebar .block:not(.block-layered-nav) .block-content {
      padding: 10px;
      margin-top: 0;
      border-width: 0 1px;
      border-style: solid;
      border-color: #CCCCCC; }
  .sidebar .block:last-of-type {
    border-bottom: 1px solid #CCCCCC; } }

/* -------------------------------------------- *
 * Secondary Navigation
 */
.block-account .block-title,
.block-cms-menu .block-title {
  padding-top: 0;
  border-top: none; }

.block-account li,
.block-cms-menu li {
  font-family: "Lato", sans-serif;
  margin: 7px 0; }
  .block-account li strong,
  .block-cms-menu li strong {
    font-weight: 400;
    color: #fdb813; }
  .block-account li a,
  .block-cms-menu li a {
    color: #636363; }
    .block-account li a:hover,
    .block-cms-menu li a:hover {
      color: #fdb813; }

/* ============================================ *
 * Buttons
 * ============================================ */
/* Secondary Buttons */
.cart .buttons-set .button,
.cart-table .button,
.sidebar .actions .button,
.button.button-secondary {
  background: #DDDDDD;
  color: #636363;
  padding: 7px 15px; }
  .cart .buttons-set .button:hover,
  .cart-table .button:hover,
  .sidebar .actions .button:hover,
  .button.button-secondary:hover {
    background: #d0d0d0;
    cursor: pointer; }
  .cart .buttons-set .button:active,
  .cart-table .button:active,
  .sidebar .actions .button:active,
  .button.button-secondary:active {
    background: #c4c4c4;
    color: #636363; }
  .cart .buttons-set .button:focus,
  .cart-table .button:focus,
  .sidebar .actions .button:focus,
  .button.button-secondary:focus {
    color: #636363;
    background: #c4c4c4;
    outline: none; }

.sidebar .actions button.button {
  white-space: normal; }

/* Primary Buttons */
.button,
.cart-table .product-cart-actions .button,
#co-shipping-method-form .buttons-set .button,
.footer .button, a.button {
  background: #fdb813;
  display: inline-block;
  padding: 7px 15px;
  border: 0;
  border-radius: 0;
  font-size: 13px;
  font-weight: normal;
  font-family: "Lato", sans-serif;
  line-height: 19px;
  text-align: center;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
  color: #636363;
  transition: background 0.25s ease-in-out; }
  .button:hover,
  .cart-table .product-cart-actions .button:hover,
  #co-shipping-method-form .buttons-set .button:hover,
  .footer .button:hover, a.button:hover {
    background-co: #f4ad02;
    cursor: pointer; }
  .button:active,
  .cart-table .product-cart-actions .button:active,
  #co-shipping-method-form .buttons-set .button:active,
  .footer .button:active, a.button:active {
    background: #db9b02;
    color: #FFFFFF; }
  .button:focus,
  .cart-table .product-cart-actions .button:focus,
  #co-shipping-method-form .buttons-set .button:focus,
  .footer .button:focus, a.button:focus {
    background-color: #db9b02;
    outline: none;
    color: #FFFFFF; }

a.button {
  text-decoration: none;
  color: #636363; }

a.button:hover {
  color: #FFFFFF; }

/* Disabled - class for anchor, state for form elements */
.button.disabled,
.button:disabled {
  background: #C8C8C8;
  opacity: 0.6;
  cursor: not-allowed; }

/* Adjacent buttons */
.button + .button {
  margin-left: 5px; }

.contact-us {
  background-color: #fdb813;
  color: #030303;
  text-transform: uppercase;
  font-size: 11px;
  padding: 9px 25px;
  border: 0 none;
  font-weight: bold;
  margin-top: 15px; }
  .contact-us:hover {
    background-color: #db9b02; }

.ennis-button-sm, .ennis-button-md, .ennis-button-lg {
  background-color: #fdb813;
  color: #030303;
  text-transform: uppercase;
  border: 0 none;
  font-weight: bold;
  display: inline-block;
  text-decoration: none; }
  .ennis-button-sm:hover, .ennis-button-md:hover, .ennis-button-lg:hover {
    color: #fff;
    text-decoration: none;
    background-color: #db9b02; }

.ennis-button-sm {
  font-size: 11px;
  padding: 9px 25px; }

.ennis-button-md {
  font-size: 13px;
  padding: 12px 28px; }

.ennis-button-lg {
  font-size: 15px;
  padding: 15px 31px; }

.button2 {
  border: 0;
  padding: 0 5px;
  margin: 0;
  background: transparent;
  cursor: pointer;
  vertical-align: middle; }

.button2:focus {
  outline: none; }

.button2 span,
.button2 span span {
  line-height: 30px;
  height: 30px;
  text-decoration: underline;
  text-transform: uppercase;
  display: inline-block;
  color: #fdb813;
  font-family: "Lato", sans-serif; }
  .button2 span:hover,
  .button2 span span:hover {
    text-decoration: none;
    color: #c28902; }

@media only screen and (max-width: 770px) {
  .col2-set .buttons-set .button,
  .col2-set .buttons-set .button2 {
    float: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0; }
  .col2-set .buttons-set .back-link {
    display: none; }
  .col2-set .buttons-set .required {
    display: none; } }

@media only screen and (max-width: 479px) {
  .buttons-set .button {
    float: none;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 7px; }
  .buttons-set .back-link {
    display: none; }
  .buttons-set .required {
    display: none; } }

/* -------------------------------------------- *
 * Paypal Button d
 */
.paypal-logo.paypal-after {
  float: left; }

.paypal-after .paypal-or {
  float: left; }

.paypal-or {
  line-height: 34px;
  margin: 0px 10px 5px; }

.paypal-after .paypal-button {
  float: left; }

.paypal-button {
  line-height: 0px; }

.paypal-button img {
  display: inline; }

@media only screen and (max-width: 740px) {
  .paypal-or {
    line-height: 20px; }
  .paypal-logo,
  .paypal-or,
  .paypal-button {
    text-align: center;
    width: 100%;
    display: block;
    margin-right: 0;
    margin-left: 0;
    float: none; } }

/* -------------------------------------------- *
 * Button Sets
 */
.buttons-set {
  clear: both;
  margin: 10px 0 0;
  padding-top: 10px;
  border-top: 1px solid #EDEDED;
  text-align: right; }
  .buttons-set p.required {
    margin: 0;
    margin-left: 10px;
    line-height: 33px;
    float: right; }
  .buttons-set .back-link {
    float: left;
    margin: 0;
    line-height: 33px; }
  .buttons-set a:not(.button) {
    line-height: 20px;
    display: inline-block;
    padding: 5px; }
  .buttons-set button.button {
    float: right;
    margin-left: 5px;
    min-width: 140px; }
  .buttons-set:after {
    content: '';
    display: table;
    clear: both; }

/* -------------------------------------------- *
 * Icons
 */
.icon-sprite, .btn-remove2, .ratings .rating-box, .ratings .rating-box .rating, .sorter > .sort-by .sort-by-switcher, .sorter > .view-mode .grid,
.sorter > .view-mode .list, .skip-nav .icon, .skip-search .icon, #search_mini_form .search-button:before,
#search_mini_form_mobile .search-button:before, .skip-account .icon, .skip-cart .icon, .product-view .sharing-links a, .review-summary-table .rating-box .rating-number:after, .ratings-table .rating-box, .ratings-table .rating-box .rating {
  background-image: url(../images/icon_sprite.png);
  background-repeat: no-repeat;
  text-indent: -9999px; }

@media (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 4 / 2), (min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx) {
  .icon-sprite, .btn-remove2, .ratings .rating-box, .ratings .rating-box .rating, .sorter > .sort-by .sort-by-switcher, .sorter > .view-mode .grid,
  .sorter > .view-mode .list, .skip-nav .icon, .skip-search .icon, #search_mini_form .search-button:before,
  #search_mini_form_mobile .search-button:before, .skip-account .icon, .skip-cart .icon, .product-view .sharing-links a, .review-summary-table .rating-box .rating-number:after, .ratings-table .rating-box, .ratings-table .rating-box .rating {
    background-image: url(../images/icon_sprite@2x.png);
    background-size: 100px 1000px; } }

/* -------------------------------------------- *
 * Breadcrumbs
 */
.breadcrumbs {
  overflow: hidden;
  margin: 15px 0 25px;
  padding-bottom: 20px;
  border-bottom: 2px dotted #A0A0A0; }

.breadcrumbs li {
  float: left;
  font-size: 12px;
  font-family: "Lato", sans-serif; }

.breadcrumbs a {
  float: left;
  color: #636363; }

.breadcrumbs a:hover {
  color: #fdb813; }

.breadcrumbs strong {
  color: #636363;
  font-weight: normal; }

.breadcrumbs span {
  float: left;
  padding: 0 7px; }

@media only screen and (max-width: 770px) {
  .breadcrumbs {
    display: none; } }

/* -------------------------------------------- *
 * Button - Remove / Previous
 */
.btn-remove,
.btn-previous {
  display: inline-block;
  width: 20px;
  height: 20px;
  border: 1px solid #EDEDED;
  text-align: center;
  /* Hide text */
  font: 0/0 a;
  text-shadow: none;
  color: transparent;
  position: relative; }
  .btn-remove:hover,
  .btn-previous:hover {
    background-color: #fdb813;
    border-color: #fdb813; }

.btn-remove:after {
  content: 'X';
  color: #fdb813;
  height: 20px;
  line-height: 20px;
  width: 100%;
  font-size: 10px;
  font-family: Arial, "Lato", sans-serif;
  font-weight: bold; }

.btn-remove:hover:after {
  color: #FFFFFF;
  text-decoration: none; }

.btn-remove2 {
  background-position: 4px -648px;
  border: none;
  vertical-align: top; }
  .btn-remove2:after {
    display: none; }
  .btn-remove2:hover {
    background-color: transparent;
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
    opacity: 0.8; }

.btn-previous:after {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-right: 4px solid #fdb813;
  border-left: none;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -2px;
  margin-top: -4px; }

.btn-previous:hover:after {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-right: 4px solid #FFFFFF;
  border-left: none; }

.block-layered-nav .currently .btn-remove,
.block-layered-nav .currently .btn-previous,
.mini-products-list .btn-remove,
.mini-products-list .btn-previous,
#compare-items .btn-remove,
#compare-items .btn-previous {
  float: right;
  margin-left: 6px; }

/* -------------------------------------------- *
 * Checkout Agreements
 */
.checkout-agreements li {
  margin-bottom: 20px; }

.checkout-agreements .agreement-content {
  overflow-y: auto;
  max-width: 670px;
  max-height: 125px;
  margin-bottom: 10px;
  padding: 10px;
  border: 1px solid #CCCCCC;
  background: #F4F4F4; }

/* -------------------------------------------- *
 * CVV Security Code
 */
.cvv-what-is-this {
  margin-left: 10px;
  font-size: 13px;
  line-height: 24px; }

/* -------------------------------------------- *
 * Container
 */
.main-container {
  border-top: 1px #000 solid; }
  .main-container .cwsSlider {
    margin: 0;
    overflow: hidden; }
    @media screen and (max-width: 599px) {
      .main-container .cwsSlider {
        margin-left: -15px !important;
        margin-right: -15px !important; } }
  .main-container .pagerBelow .cws-pager {
    padding: 0;
    bottom: 20px;
    right: 20px;
    left: auto; }
  .main-container .pagerBelow .cws-pager.cir-bar, .main-container .pagerBelow .cws-pager.squ-bar {
    bottom: 0; }
  .main-container .cws-pager li a {
    border-radius: 0;
    border: 0 none;
    margin-right: 7px;
    background-color: white; }
  .main-container #bnrSlider-1 {
    border-bottom: 1px #5e5e5e solid; }
  .main-container #bnrSlider-1 .cws-arw a:before {
    color: #E6E6E6; }
  .main-container #bnrSlider-1 .cws-pager a.cws-active {
    background-color: #fdb813; }
  .main-container .slider {
    border-bottom: 1px #000 solid; }

.main-container,
.footer-container {
  position: initial;
  margin: 0 auto;
  padding: 0; }
  .main-container:after,
  .footer-container:after {
    content: '';
    display: table;
    clear: both; }

.market-menu {
  background: url(../images/market-menu-bg.jpg) no-repeat #000000;
  background-size: cover;
  padding: 25px 0 50px;
  color: #E6E6E6;
  text-align: center;
  border-top: 10px #010101 solid; }
  @media screen and (max-width: 598px) {
    .market-menu {
      margin-left: -15px !important;
      margin-right: -15px !important; } }
  .market-menu a {
    text-decoration: none; }
  .market-menu > div {
    position: relative;
    background-repeat: no-repeat;
    background-position: 10px 0;
    height: 90px;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 15px;
    cursor: pointer;
    display: inline-block !important;
    max-width: 200px;
    float: left;
    vertical-align: bottom; }
    .market-menu > div > a {
      color: #E6E6E6;
      font-size: 12px;
      text-decoration: none; }
      .market-menu > div > a:before {
        content: '';
        display: block;
        height: 4em;
        width: 100%;
        background-image: url("../images/market-menu.png"); }
      .market-menu > div > a:hover:before {
        background-image: url("../images/market-menu-alt.png"); }
    .market-menu > div > a {
      text-transform: uppercase; }
      .market-menu > div > a:hover {
        color: #fdb813; }
    .market-menu > div:last-child {
      border-right: none; }
  .market-menu > .global a:before {
    background-position: 50% 0px; }
  .market-menu > .government a:before {
    background-position: 50% -170px; }
  .market-menu > .contractors a:before {
    background-position: 50% -380px; }
  .market-menu > .commercial a:before {
    background-position: 50% -605px; }
  .market-menu > .engineers a:before {
    background-position: 50% -840px; }
  .market-menu > .airports a:before {
    background-position: 50% -1060px; }
  .market-menu h2 {
    text-align: center;
    font-size: 18px; }
  .market-menu .global {
    background-position: 50% 10px; }
  .market-menu .government {
    background-position: 50% -160px; }
  .market-menu .contractors {
    background-position: 50% -370px; }
  .market-menu .commercial {
    background-position: 50% -595px; }
  .market-menu .engineers {
    background-position: 50% -830px; }
  .market-menu .airports {
    background-position: 50% -1050px; }
  .market-menu .btn a {
    color: #fdb813; }
  .market-menu ol.mega-dropdown-menu li {
    margin-left: 0;
    line-height: 1.25em;
    padding-bottom: .5em; }
    .market-menu ol.mega-dropdown-menu li .no-padding .col-sm-6, .market-menu ol.mega-dropdown-menu li .no-padding .col-md-6 {
      padding-left: 0; }
    .market-menu ol.mega-dropdown-menu li .no-padding .col-sm-5, .market-menu ol.mega-dropdown-menu li .no-padding .col-md-5 {
      padding-left: 0; }

@media only screen and (min-width: 480px) {
  .main-container,
  .footer-container {
    padding: 0; } }

@media only screen and (max-width: 769px) {
  .market-menu {
    padding: 15px 0 20px 0; }
    .market-menu h2 {
      font-size: 14px; } }

@media only screen and (min-width: 768px) {
  .market-menu > div {
    border-right: 1px solid #A0A0A0;
    float: none !important; }
    .market-menu > div > a {
      font-size: 14px; } }

.footer-container {
  padding-top: 0px; }

/* -------------------------------------------- *
 * Column Layouts
 */
.main:after,
.col-wrapper:after {
  content: '';
  display: table;
  clear: both; }

.main .basSlider.defaultTheme {
  padding: 0;
  border: 0 none; }

.col-left,
.col-right,
.col-main {
  padding: 0 10px; }

.col-left {
  float: left;
  width: 25%;
  padding-left: 0;
  /* Remove the 15px padding */
  clear: left; }
  .col-left img {
    max-width: 100%; }

.col-right {
  float: right;
  width: 25%;
  padding-right: 0;
  /* Remove the 15px padding */ }
  .col-right img {
    max-width: 100%; }

.col-main {
  float: left;
  width: 75%;
  min-height: 450px; }

.col1-layout .col-main {
  float: none;
  width: auto;
  padding: 0 15px; }

.col2-left-layout .col-main {
  float: right;
  padding-right: 0;
  /* Remove the 15px padding */ }

.col2-right-layout .col-main {
  padding-left: 0;
  /* Remove the 15px padding */ }

.col3-layout .col-right {
  width: 20.83333%; }

.col3-layout .col-wrapper {
  float: left;
  width: 79.16667%; }
  .col3-layout .col-wrapper .col-main {
    float: right;
    width: 73.68421%; }
  .col3-layout .col-wrapper .col-left {
    width: 26.31579%; }

@media only screen and (max-width: 1095px) {
  .col-main {
    padding: 0 15px; } }

@media only screen and (max-width: 1000px) {
  .col3-layout .col-right {
    float: left;
    clear: left;
    padding-left: 0;
    padding-right: 10px;
    width: 25%; }
  .col3-layout .col-wrapper {
    float: right;
    width: 100%; }
    .col3-layout .col-wrapper .col-main {
      float: right;
      width: 75%; }
    .col3-layout .col-wrapper .col-left {
      width: 25%; } }

@media only screen and (max-width: 770px) {
  .col-left,
  .col-right,
  .col-main,
  .col1-layout .col-left,
  .col1-layout .col-right,
  .col1-layout .col-main,
  .col2-left-layout .col-left,
  .col2-left-layout .col-right,
  .col2-left-layout .col-main,
  .col2-right-layout .col-left,
  .col2-right-layout .col-right,
  .col2-right-layout .col-main,
  .col3-layout .col-wrapper .col-left,
  .col3-layout .col-right,
  .col3-layout .col-wrapper .col-main {
    padding: 0 15px;
    margin-bottom: 10px;
    float: none;
    width: auto; }
  .col3-layout .col-wrapper {
    float: none;
    width: auto; }
  .col-main {
    float: none;
    width: auto; }
  .col-main .col-left {
    padding: 0;
    /* On product listing pages, the left column gets moved inside col-main on small viewports */ } }

/* Content Columns */
.col2-set {
  width: 100%; }
  .col2-set .col-1,
  .col2-set .col-2 {
    width: 50%;
    padding: 20px; }
    @media only screen and (max-width: 770px) {
      .col2-set .col-1,
      .col2-set .col-2 {
        padding: 10px; } }
  .col2-set .col-1 {
    float: left;
    padding-left: 0; }
  .col2-set .col-2 {
    float: right;
    padding-right: 0; }
  @media only screen and (max-width: 479px) {
    .col2-set .col-1,
    .col2-set .col-2 {
      float: none;
      width: auto;
      border: 0;
      padding-right: 0;
      padding-left: 0; } }
  .col2-set .narrow {
    width: 33%; }
  .col2-set .wide {
    width: 65%; }
  .col2-set:after {
    content: '';
    display: table;
    clear: both; }

/* -------------------------------------------- *
 * Top Container
 */
@media only screen and (min-width: 771px) {
  .top-container {
    max-width: 1260px;
    margin: 0 auto;
    padding: 0 30px; } }

/* -------------------------------------------- *
 * Global Site Notice
 */
.global-site-notice {
  background: #676157;
  color: #E6E6E6;
  font-size: 11px; }
  .global-site-notice .notice-inner {
    padding-left: 120px;
    width: 100%;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    line-height: 11px;
    min-height: 40px;
    padding-top: 14.5px;
    padding-bottom: 14.5px;
    background-image: url("../images/demo-logo.png");
    background-position: left;
    background-repeat: no-repeat; }
  .global-site-notice p {
    margin-bottom: 0; }

/* -------------------------------------------- *
 * Promotional Message Banner
 */
.promo-msg {
  color: #fdb813;
  text-align: center;
  margin: 10px;
  text-transform: uppercase;
  font-family: "Lato", sans-serif; }

/* -------------------------------------------- *
 * Grid
 */
.grid:after {
  content: '';
  display: table;
  clear: both; }

/* -------------------------------------------- *
 * Messages
 */
.success {
  color: #11B400; }

.error {
  color: #DF280A;
  font-weight: bold; }

.notice {
  color: #E26703;
  font-weight: bold; }

/* -------------------------------------------- *
 * Messages
 */
.messages {
  margin-bottom: 10px; }

.messages li li {
  position: relative;
  margin-bottom: 5px;
  padding: 7px 10px 7px 20px;
  background: #F4F4F4;
  font-size: 15px; }

.messages li li:before {
  top: 50%;
  left: 0;
  margin-top: -6px; }

.messages .error-msg li {
  color: #000000;
  border-left: 5px solid #DF280A;
  background-color: #FAEBE7; }

.messages .error-msg li:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 6px solid #DF280A;
  border-right: none; }

.messages .notice-msg li {
  color: #000000;
  border-left: 5px solid #E26703;
  background-color: #F9EBE6; }

.messages .notice-msg li:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 6px solid #E26703;
  border-right: none; }

.messages .success-msg li {
  color: #000000;
  border-left: 5px solid #11B400;
  background-color: #EFF5EA; }

.messages .success-msg li:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 6px solid #11B400;
  border-right: none; }

@media only screen and (min-width: 915px) {
  .order-list-grid .col-1 {
    width: 30%; }
  .order-list-grid .col-2 {
    width: 50%;
    padding-right: 20px; }
  .order-list-grid .col-3 {
    clear: none;
    width: 20%;
    padding-top: 0; } }

/* -------------------------------------------- *
 * Page Popup
 */
.page-popup {
  padding: 20px;
  background: #FFFFFF;
  height: auto; }

.page-popup h1 {
  margin: 0 0 0.5em;
  font-size: 36px; }

/* -------------------------------------------- *
 * Payment Methods
 */
.payment-methods {
  margin-bottom: 20px; }

.payment-methods dt {
  padding: 5px 0; }

.payment-methods dd {
  padding-top: 10px; }

.payment-methods .form-list {
  position: relative;
  display: inline-block;
  max-width: 100%;
  margin: 5px 15px 15px;
  padding: 15px;
  border: 1px solid #CCCCCC;
  background: #F4F4F4; }

.payment-methods .form-list:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-right: 10px solid transparent;
  border-left: 10px solid transparent;
  border-bottom: 10px solid #CCCCCC;
  border-top: none;
  top: -11px;
  left: 30px; }

.payment-methods .form-list:after {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-right: 10px solid transparent;
  border-left: 10px solid transparent;
  border-bottom: 10px solid #F4F4F4;
  border-top: none;
  top: -10px;
  left: 30px; }

.payment-methods .form-list li:last-child {
  margin-bottom: 0; }

/* -------------------------------------------- *
 * Please Wait (Loading Indicator)
 */
.please-wait {
  display: inline-block;
  margin-left: 10px;
  margin-top: 5px;
  line-height: 24px;
  height: 24px;
  white-space: nowrap;
  /* Prevent the linebreak in the HTML from causing layout issues */ }
  .please-wait img {
    float: left;
    margin-right: 5px;
    width: 24px; }

/* -------------------------------------------- *
 * Price Box - Standard
 */
.price-box {
  margin: 7px 0;
  font-family: "Lato", sans-serif; }

.price-box p {
  margin-bottom: 0; }

.price-notice {
  color: #A0A0A0; }

.price-box .price {
  color: #fdb813;
  font-size: 16px; }

.price-box .price,
.price {
  font-family: "Lato", sans-serif; }

.price-box .price-label {
  color: #A0A0A0;
  white-space: nowrap;
  font-family: "Lato", sans-serif; }

.price-box .minimal-price-link {
  padding-left: 1em;
  color: #fdb813;
  display: block;
  /* We want this to show on its own line, otherwise the layout looks funky */ }
  .price-box .minimal-price-link .label {
    color: #A0A0A0; }

/* -------------------------------------------- *
 * Price Box - Special
 */
.price-box .old-price,
.price-box .special-price {
  display: inline-block; }
  .price-box .old-price .price-label,
  .price-box .special-price .price-label {
    display: none; }
  .price-box .old-price .price,
  .price-box .special-price .price {
    display: inline-block; }

.price-box .old-price .price {
  color: #A0A0A0;
  text-decoration: line-through; }

.price-box .special-price {
  color: #fdb813;
  padding-left: 1em; }
  .price-box .special-price .price-label {
    color: #D84D3C; }

/* -------------------------------------------- *
 * Price Box - Taxes
 */
.price-box .price-excluding-tax,
.price-box .price-including-tax {
  display: block; }

span.weee {
  display: block; }

/* -------------------------------------------- *
 * Tier Prices
 */
.product-pricing,
.tier-prices,
.tier-prices-grouped {
  display: inline-block;
  padding: 4px 8px;
  background: #FBF4DE;
  border: 1px solid #E2D4C7;
  margin-top: 7px; }
  .product-pricing li,
  .tier-prices li,
  .tier-prices-grouped li {
    font-size: 12px; }
  .product-pricing .benefit,
  .tier-prices .benefit,
  .tier-prices-grouped .benefit {
    font-style: italic; }
  .product-pricing .price,
  .tier-prices .price,
  .tier-prices-grouped .price {
    font-weight: bold; }

/* ============================================ *
 * Item Options
 * ============================================ */
.item-options {
  font-size: 14px;
  font-family: "Lato", sans-serif; }
  .item-options:after {
    content: '';
    display: table;
    clear: both; }
  .item-options dt {
    float: left;
    clear: left;
    font-weight: 600;
    padding-right: 5px;
    font-style: italic; }
    .item-options dt:after {
      content: ': '; }
  .item-options dd {
    float: left;
    padding-left: 10px;
    margin: 0 0 6px; }

.truncated,
.truncated a.dots {
  cursor: help; }

.truncated a.details {
  cursor: help;
  height: 16px;
  line-height: 16px; }
  .truncated a.details:hover {
    text-decoration: none; }

.truncated .truncated_full_value {
  position: relative;
  z-index: 300; }

.truncated .truncated_full_value .item-options {
  display: none;
  position: absolute;
  z-index: 300;
  width: 200px;
  padding: 8px;
  border: 1px solid #fdb813;
  background-color: #F6F6F6;
  top: 21px;
  left: -100px; }
  .truncated .truncated_full_value .item-options:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 7px solid transparent;
    border-left: 7px solid transparent;
    border-bottom: 7px solid #fdb813;
    border-top: none;
    left: 97px;
    top: -7px; }

.truncated .truncated_full_value .item-options > p {
  font-weight: bold;
  text-transform: uppercase;
  margin-bottom: 8px; }

.truncated .show .item-options {
  display: block; }

@media only screen and (max-width: 479px) {
  .truncated {
    cursor: inherit; }
    .truncated a.details {
      display: none; }
    .truncated .truncated_full_value .item-options {
      display: block;
      position: static;
      z-index: 1;
      width: 100%;
      border: none;
      background-color: transparent; }
      .truncated .truncated_full_value .item-options p {
        float: none; }
      .truncated .truncated_full_value .item-options:after {
        display: none; } }

/* -------------------------------------------- *
 * Printer Friendly Page
 */
.page-print {
  width: 6.5in;
  margin: 20px;
  background: #FFFFFF; }

/* -------------------------------------------- *
 * Add to links
 */
.add-to-links {
  margin: 7px 0; }
  .add-to-links a {
    display: inline-block;
    padding: 0px 3px 3px; }

.add-to-links .separator {
  display: none; }

/* -------------------------------------------- *
 * Product Image
 */
.product-image,
.no-touch .product-img-box .product-image:not(.zoom-available):hover {
  position: relative;
  display: block; }

@media only screen and (max-width: 770px) {
  body .product-img-box .product-image:hover {
    border-color: #EDEDED; } }

.no-touch .product-image:hover {
  border-color: #fdb813; }

/* -------------------------------------------- *
 * Ratings
 */
.ratings {
  margin: 7px 0; }
  .ratings .rating-box,
  .ratings .rating-links {
    margin: 5px 0; }
  .ratings .rating-box {
    width: 65px;
    height: 13px;
    background-repeat: repeat-x;
    background-position: 0 -615px;
    overflow: hidden; }
  .ratings .rating-box .rating {
    float: left;
    height: 13px;
    background-repeat: repeat-x;
    background-position: 0 -600px; }
  .ratings .amount {
    display: block;
    margin: 5px auto; }
  .ratings .rating-links .separator {
    margin: 0 3px; }

/* -------------------------------------------- *
 * Product Details 

 */
.download-item {
  margin-bottom: 8px; }

/* -------------------------------------------- *
 * Standard Formatted Text Block
 */
.std p {
  margin: 0 0 1.5em; }

.std ol {
  list-style: decimal outside;
  margin-bottom: 1.5em; }

.std ol li {
  margin-left: 2em; }

.std ul {
  list-style: disc outside;
  margin-bottom: 1.5em; }

.std li {
  margin-left: 2em; }

.std .note {
  color: #A0A0A0;
  font-size: 13px; }

/* -------------------------------------------- *
 * Tabs
 */
.tabs {
  margin-bottom: 10px;
  background: #FFFFFF; }

/* -------------------------------------------- *
 * Toolbar
 */
.toolbar {
  overflow: auto;
  margin-top: 10px;
  margin-bottom: 15px;
  border-bottom: 1px solid #CCCCCC;
  border-top: 1px solid #CCCCCC;
  background: #F4F4F4;
  padding: 5px 10px 0px 10px;
  clear: both; }
  .toolbar:after {
    content: '';
    display: table;
    clear: both; }

.pager-no-toolbar {
  margin-bottom: 10px; }

.pager-no-toolbar ~ .pager-no-toolbar {
  margin-top: 10px; }

.toolbar,
.pager {
  font-family: "Lato", sans-serif;
  color: #636363;
  line-height: 30px;
  font-size: 12px; }

.pager {
  margin: 0; }
  .pager li a {
    border: none;
    background: none;
    padding: 0; }

.view-mode {
  margin: 0; }

.toolbar label,
.pager-no-toolbar label {
  font-weight: normal;
  text-transform: uppercase; }

.sorter {
  float: left;
  margin-bottom: 0; }
  .sorter label {
    float: left;
    margin-right: 5px; }
    .sorter label:after {
      content: ':'; }

.sorter > .sort-by {
  float: left;
  margin-right: 5px;
  height: 30px; }
  .sorter > .sort-by .sort-by-switcher {
    width: 30px;
    height: 30px;
    display: inline-block; }
  .sorter > .sort-by .sort-by-switcher--asc {
    background-position: 4px -542px; }
    .sorter > .sort-by .sort-by-switcher--asc:hover {
      background-position: -46px -542px; }
  .sorter > .sort-by .sort-by-switcher--desc {
    background-position: 4px -567px; }
    .sorter > .sort-by .sort-by-switcher--desc:hover {
      background-position: -46px -567px; }

.sorter > .view-mode {
  float: right; }
  .sorter > .view-mode .grid,
  .sorter > .view-mode .list {
    float: left;
    width: 30px;
    height: 30px; }
  .sorter > .view-mode .grid {
    margin-right: 5px;
    background-position: 8px -492px; }
  .sorter > .view-mode strong.grid,
  .sorter > .view-mode a.grid:hover {
    background-position: -42px -492px; }
  .sorter > .view-mode .list {
    background-position: 11px -517px; }
  .sorter > .view-mode strong.list,
  .sorter > .view-mode a.list:hover {
    background-position: -39px -517px; }

.pager {
  float: right;
  overflow: hidden; }
  .pager > .count-container {
    float: left; }
  .pager .amount {
    float: left;
    font-family: "Lato", sans-serif;
    white-space: nowrap;
    margin: 0 15px 0 0; }
  .pager .limiter {
    float: left;
    height: 30px;
    line-height: 30px; }
    .pager .limiter > label {
      padding-right: 5px; }
      .pager .limiter > label:after {
        content: ':'; }
  .pager .amount,
  .pager .limiter,
  .pager .pages {
    margin-bottom: 5px; }

.pages {
  float: right;
  overflow: hidden;
  margin-left: 15px; }
  .pages strong {
    display: none; }

.pages li {
  float: left; }

.pages a,
.pages .current {
  display: inline-block;
  border: 0;
  font-size: 13px;
  text-align: center;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
  line-height: 30px;
  width: 25px;
  height: 30px;
  padding: 0;
  color: #fdb813;
  font-family: "Lato", sans-serif; }

.pages .current,
.pages .current:hover {
  color: #636363;
  border: 1px solid #CCCCCC;
  width: 30px;
  background-color: #FFFFFF;
  cursor: default; }

.pages .next,
.pages .previous {
  font: 0/0 a;
  text-shadow: none;
  color: transparent;
  background-color: transparent;
  position: relative; }
  .pages .next:hover,
  .pages .previous:hover {
    border: 1px solid #fdb813; }

.pages .next:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 4px solid #fdb813;
  border-right: none;
  top: 50%;
  margin-top: -3px;
  left: 50%;
  margin-left: -2px; }

.pages .next:hover:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 4px solid #c28902;
  border-right: none; }

.pages .previous:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-right: 4px solid #fdb813;
  border-left: none;
  top: 50%;
  margin-top: -3px;
  left: 50%;
  margin-left: -2px; }

.pages .previous:hover:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-right: 4px solid #c28902;
  border-left: none; }

@media only screen and (max-width: 479px) {
  .pager .amount--has-pages {
    display: none; }
  .pages {
    float: left; }
  .limiter label {
    display: none; } }

@media only screen and (max-width: 770px) {
  .col1-layout .sorter,
  .col1-layout .pager {
    width: 100%; }
  .col1-layout .pager {
    float: left;
    clear: both; }
    .col1-layout .pager .pages {
      float: left;
      margin-left: 0; }
    .col1-layout .pager .count-container {
      float: right; } }

@media only screen and (max-width: 979px) {
  .col2-left-layout .sorter,
  .col2-left-layout .pager,
  .col2-right-layout .sorter,
  .col2-right-layout .pager,
  .col3-layout .sorter,
  .col3-layout .pager {
    width: 100%; }
  .col2-left-layout .pager,
  .col2-right-layout .pager,
  .col3-layout .pager {
    float: left;
    clear: both; }
    .col2-left-layout .pager .pages,
    .col2-right-layout .pager .pages,
    .col3-layout .pager .pages {
      float: left;
      margin-left: 0; }
    .col2-left-layout .pager .count-container,
    .col2-right-layout .pager .count-container,
    .col3-layout .pager .count-container {
      float: right; } }

@media only screen and (max-width: 1279px) {
  .toolbar .view-mode > label {
    display: none; } }

/* ============================================ *
 * Tax - Full Tax Summary
 * ============================================ */
#checkout-review-table .summary-collapse,
#shopping-cart-totals-table .summary-collapse,
body.customer-account .data-table .summary-collapse {
  position: relative;
  cursor: pointer; }
  #checkout-review-table .summary-collapse:before,
  #shopping-cart-totals-table .summary-collapse:before,
  body.customer-account .data-table .summary-collapse:before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 7px solid transparent;
    border-left: 7px solid transparent;
    border-top: 7px solid #fdb813;
    border-bottom: none;
    position: static;
    display: inline-block;
    margin-right: 5px; }
  #checkout-review-table .summary-collapse:hover:before,
  #shopping-cart-totals-table .summary-collapse:hover:before,
  body.customer-account .data-table .summary-collapse:hover:before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 7px solid transparent;
    border-left: 7px solid transparent;
    border-top: 7px solid #c28902;
    border-bottom: none;
    position: static;
    display: inline-block;
    margin-right: 5px; }

#checkout-review-table .show-details .summary-collapse:before,
#shopping-cart-totals-table .show-details .summary-collapse:before,
body.customer-account .data-table .show-details .summary-collapse:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-right: 7px solid transparent;
  border-left: 7px solid transparent;
  border-bottom: 7px solid #fdb813;
  border-top: none;
  position: static;
  display: inline-block;
  margin-right: 5px; }

#checkout-review-table .show-details .summary-collapse:hover:before,
#shopping-cart-totals-table .show-details .summary-collapse:hover:before,
body.customer-account .data-table .show-details .summary-collapse:hover:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  display: block;
  border-right: 7px solid transparent;
  border-left: 7px solid transparent;
  border-bottom: 7px solid #c28902;
  border-top: none;
  position: static;
  display: inline-block;
  margin-right: 5px; }

#shopping-cart-totals-table tfoot td .summary-collapse:before, #shopping-cart-totals-table tfoot td .summary-collapse:hover:before {
  margin-bottom: 5px; }

/* ============================================ *
 * Magento Helpers
 * ============================================ */
.a-center {
  text-align: center; }

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

.no-display {
  display: none !important; }

.nobr,
.nowrap {
  white-space: nowrap; }

.width-full {
  width: 100%; }

/* ============================================ *
 * Custom Helpers
 * ============================================ */
.hidden {
  display: none; }

/* ============================================ *
 * Print Styles
 * ============================================ */
.page-print .print-head {
  margin: 0 0 15px; }

.page-print .print-head .logo {
  float: none;
  max-height: 50px;
  width: auto; }

/* ============================================ *
 * Common styles
 * ============================================ */
@media only screen and (max-width: 770px) {
  .hide-on-mobile {
    display: none; }
  .show-on-mobile {
    display: inline-block; } }

@media only screen and (min-width: 771px) {
  .hide-on-mobile {
    display: inline-block; }
  .show-on-mobile {
    display: none; }
  body .modal-content .dropdown-menu {
    display: none; } }

body .modal-content {
  background-color: #000000;
  text-align: left; }
  body .modal-content .dropdown-menu {
    display: block;
    background-color: #000000; }
  body .modal-content .mega-dropdown-menu > li > ul > li {
    /* display: inline-block;*/ }
  body .modal-content .mega-dropdown-menu > li > ul > li > a {
    color: #E6E6E6; }
  body .modal-content .mega-dropdown-menu:before, body .modal-content .mega-dropdown-menu:after {
    border: 0 none; }
  body .modal-content .mega-menu {
    border-top: 0 none; }
  body .modal-content button.btn-warning {
    background-color: #fdb813;
    border-radius: 0;
    color: #000000;
    font-size: 13px;
    padding: 10px 12px;
    outline-color: #fdb813;
    outline-color: none;
    outline-width: 100%;
    width: 100%; }
    body .modal-content button.btn-warning:hover {
      color: #000000; }
  body .modal-content button.close {
    opacity: 1;
    color: #E6E6E6; }
  body .modal-content .btn.focus, body .modal-content .btn:focus, body .modal-content .btn:hover {
    color: #fdb813; }

/* ============================================ *
 * Zebra styles
 * ============================================ */
.product-more {
  border-top: 2px dotted #F6F6F6;
  border-bottom: 2px dotted #F6F6F6;
  padding: 10px 0;
  margin: 10px 0; }
  .product-more .row.zebra-style {
    clear: both;
    padding: 15px 10px; }
    .product-more .row.zebra-style:nth-child(odd) {
      background-color: #F6F6F6; }

li .glyphicon {
  color: #fdb813;
  padding-right: 5px; }

/* ============================================ *
 * Related Products Styles
 * ============================================ */
.related-products {
  margin-top: 80px; }
  .related-products h2 {
    font-size: 18px; }
  .related-products .product-image {
    border: 0;
    display: inline-block; }
  .related-products .name {
    text-align: left;
    float: left; }
    .related-products .name a {
      text-transform: capitalize;
      color: #636363;
      font-size: 16px;
      text-decoration: none; }
  .related-products li {
    width: 30% !important; }

/* ============================================ *
 * Get Inspired Styles
 * ============================================ */
.inspire-grid .grid-container {
  padding: 15px;
  border: 1px #C8C8C8 solid; }

.inspire-grid h2 {
  font-size: 16px;
  line-height: 1.5em;
  text-transform: none;
  margin-top: 15px; }

/* individual project page */
.project-story img {
  padding-bottom: 15px; }

.project-story .yellow {
  color: #fdb813;
  font-weight: bold; }

.project-story p.bolder-type {
  font-size: 18px !important;
  line-height: 1.7em !important;
  font-weight: bold; }

.project-navigation {
  margin-top: 45px;
  border-top: 2px dotted #a0a0a0;
  padding-top: 20px;
  padding-bottom: 40px; }
  .project-navigation a {
    text-decoration: none; }
    .project-navigation a h2 {
      text-decoration: none; }
  .project-navigation h2 {
    font-size: 14px;
    line-height: 1em; }
  .project-navigation .col-sm-3 {
    padding-left: 0;
    float: left; }

@media only screen and (max-width: 599px) {
  .project-navigation .col-sm-3 {
    min-height: 220px; } }

/* ============================================ *
 * FORMS - COMMON
 * ============================================ */
/* -------------------------------------------- *
 * Fieldsets
 */
.fieldset p {
  margin-bottom: 7px; }

.fieldset p.required {
  margin-bottom: 5px;
  font-size: 12px;
  margin-top: 0px; }

.fieldset + .fieldset {
  margin-top: 5px; }

form .legend {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 18px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed;
  margin-bottom: 15px;
  padding-bottom: 7px;
  border-bottom: 1px solid #EDEDED; }

/* -------------------------------------------- *
 * Input Box
 */
.input-box {
  padding-top: 2px; }
  .input-box:after {
    content: '';
    display: table;
    clear: both; }

li.centinel-logos div.input-box img {
  display: inline;
  vertical-align: middle; }

/* For adjacent select inputs. */
/* Example: credit card expiration month and year. */
.input-box .v-fix {
  float: left;
  margin-right: 5px;
  max-width: 100%; }

/* -------------------------------------------- *
 * Labels
 */
label {
  display: inline-block;
  font-size: 13px;
  font-family: "Lato", sans-serif;
  font-weight: 600;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none; }

label.required:after,
span.required:after {
  content: ' *';
  color: #DF280A;
  font-weight: normal;
  font-family: "Lato", sans-serif;
  font-size: 12px; }

label.required em,
span.required em {
  display: none; }

/* -------------------------------------------- *
 * Hints
 */
.input-hint {
  color: #A0A0A0;
  font-size: 12px; }

/* -------------------------------------------- *
 * Select
 */
select {
  font-size: 14px; }

select + select {
  margin-left: 5px; }

select[multiple] {
  width: 270px;
  border: 1px solid #C0C0C0;
  font-size: 15px;
  padding: 5px; }

.select {
  background-color: #fff;
  padding: .5em 1.5em;
  /*min-width: 20em;*/
  max-width: 100%;
  border-radius: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-position: right 50%;
  background-repeat: no-repeat;
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);
  padding-right: 1.5em; }
  .select:after {
    content: 'hey'; }

/* -------------------------------------------- *
 * Textarea
 */
textarea {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  width: 100%;
  max-width: 450px;
  padding: 5px; }

/* -------------------------------------------- *
 * Inputs
 */
.input-text {
  -webkit-appearance: none;
  -moz-appearance: none;
  -ms-appearance: none;
  -o-appearance: none;
  appearance: none;
  -webkit-border-radius: 2px;
  -moz-border-radius: 2px;
  -ms-border-radius: 2px;
  -o-border-radius: 2px;
  border-radius: 2px;
  border: 1px solid #C0C0C0;
  background: #FFFFFF;
  font-size: 15px; }
  .input-text:focus {
    border: 1px solid #fdb813; }

.input-text.validation-failed {
  border-color: #DF280A; }

.input-text.validation-failed:focus {
  outline-color: #ef9485; }

input[type=email],
input[type=search],
input[type=number],
input[type=password],
input[type=tel],
input[type=text] {
  height: 30px;
  padding: 0 8px; }

input[type=email],
input[type=search],
input[type=number],
input[type=password],
input[type=tel],
input[type=text] {
  width: 365px;
  max-width: 100%; }

/* Only show on iPhones (not iPads or any other device) */
@media only screen and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 0) {
  input[type=email],
  input[type=search],
  input[type=number],
  input[type=password],
  input[type=tel],
  input[type=text],
  select {
    font-size: 16px;
    /* Prevent from zooming on focus */ } }

.ie8 .input-text {
  max-width: none; }

/* -------------------------------------------- *
 * Inputs - Quantity
 */
input[type=number].qty,
input[type=text].qty {
  width: 3em;
  text-align: center;
  vertical-align: middle; }

/* -------------------------------------------- *
 * Placeholder
 */
::-webkit-input-placeholder {
  color: #A0A0A0; }

input:-moz-placeholder {
  color: #A0A0A0; }

/* -------------------------------------------- *
 * Checkbox And Radio
 */
.checkbox,
.radio {
  position: relative;
  top: -1px;
  display: inline-block; }

.checkbox + label,
.radio + label {
  width: auto;
  max-width: 85%;
  padding: 0 0 0 8px;
  font-size: 14px;
  font-weight: normal;
  vertical-align: top; }

/* -------------------------------------------- *
 * Validation
 */
p.required,
.validation-advice {
  margin: 5px 0 0;
  color: #DF280A;
  font-size: 13px; }

/* ============================================ *
 * Form List
 * ============================================ */
.form-list > li {
  margin-bottom: 10px; }

.form-list select {
  margin-top: 4px;
  width: 365px;
  max-width: 100%; }

.form-list .input-range .input-text {
  width: 74px; }

.form-list .field,
.form-list .wide,
.form-list .control {
  margin-bottom: 10px; }

/* Turn the label of controls (radio/checkbox) into a button style that wraps the input */
.form-list .control,
.sp-methods dt,
#checkout-shipping-method-load .sp-methods dd,
#co-shipping-method-form .sp-methods dd,
.product-options ul.options-list {
  /* When a label is next to an input that is set to not display, we should style the label in a non-clickable state */ }
  .form-list .control div.input-box,
  .sp-methods dt div.input-box,
  #checkout-shipping-method-load .sp-methods dd div.input-box,
  #co-shipping-method-form .sp-methods dd div.input-box,
  .product-options ul.options-list div.input-box {
    display: inline;
    float: left; }
    .form-list .control div.input-box:after,
    .sp-methods dt div.input-box:after,
    #checkout-shipping-method-load .sp-methods dd div.input-box:after,
    #co-shipping-method-form .sp-methods dd div.input-box:after,
    .product-options ul.options-list div.input-box:after {
      display: none; }
  .form-list .control input.radio,
  .form-list .control input.checkbox,
  .sp-methods dt input.radio,
  .sp-methods dt input.checkbox,
  #checkout-shipping-method-load .sp-methods dd input.radio,
  #checkout-shipping-method-load .sp-methods dd input.checkbox,
  #co-shipping-method-form .sp-methods dd input.radio,
  #co-shipping-method-form .sp-methods dd input.checkbox,
  .product-options ul.options-list input.radio,
  .product-options ul.options-list input.checkbox {
    float: left;
    margin-right: -40px;
    margin-top: 10px;
    margin-left: 15px; }
  .form-list .control label,
  .sp-methods dt label,
  #checkout-shipping-method-load .sp-methods dd label,
  #co-shipping-method-form .sp-methods dd label,
  .product-options ul.options-list label {
    color: #636363;
    background-color: #F4F4F4;
    padding: 5px 10px;
    display: inline-block;
    width: auto;
    max-width: none;
    min-width: 250px;
    float: none;
    padding: 6px 10px 6px 40px; }
    .form-list .control label:hover,
    .sp-methods dt label:hover,
    #checkout-shipping-method-load .sp-methods dd label:hover,
    #co-shipping-method-form .sp-methods dd label:hover,
    .product-options ul.options-list label:hover {
      background-color: #ededed; }
  .form-list .control .no-display + label,
  .sp-methods dt .no-display + label,
  #checkout-shipping-method-load .sp-methods dd .no-display + label,
  #co-shipping-method-form .sp-methods dd .no-display + label,
  .product-options ul.options-list .no-display + label {
    padding-left: 10px;
    background-color: transparent; }
    .form-list .control .no-display + label:hover,
    .sp-methods dt .no-display + label:hover,
    #checkout-shipping-method-load .sp-methods dd .no-display + label:hover,
    #co-shipping-method-form .sp-methods dd .no-display + label:hover,
    .product-options ul.options-list .no-display + label:hover {
      background-color: transparent; }

.product-options ul.options-list label,
.col2-set .form-list .control label {
  min-width: inherit;
  width: 250px;
  max-width: 100%; }

.form-list .control.remember-me-box label {
  width: auto;
  max-width: none;
  min-width: inherit; }

.form-list .control {
  margin-top: 10px; }
  .form-list .control label {
    float: none; }
  .form-list .control .radio,
  .form-list .control .checkbox {
    margin-right: 6px; }
  .form-list .control .input-box {
    clear: none;
    display: inline-block;
    width: auto;
    padding: 0; }

form .form-instructions {
  font-style: italic;
  font-family: "Lato", sans-serif;
  font-size: 13px;
  color: #A0A0A0; }

.registered-users .buttons-set {
  text-align: left !important; }
  .registered-users .buttons-set button.button {
    float: none !important; }

/* ============================================ *
 * Table Helpers
 * ============================================ */
.hide-th {
  text-indent: -9999px; }

td {
  vertical-align: top; }

/* ============================================ *
 * Data Table
 * ============================================ */
.data-table {
  width: 100%; }

.data-table td,
.data-table th {
  padding: 10px;
  vertical-align: top; }

.data-table th {
  background: #F4F4F4;
  text-transform: uppercase;
  font-family: "Lato", sans-serif;
  line-height: 1.4;
  white-space: nowrap; }

.data-table thead th,
.data-table tbody td {
  border-bottom: 1px solid #C0C0C0; }

.data-table tbody td,
.data-table tfoot td {
  font-family: "Lato", sans-serif; }

.data-table tfoot tr {
  background: #F4F4F4; }

.data-table tbody td .item-options {
  margin-left: 20px;
  margin-top: 10px; }
  .data-table tbody td .item-options dt:after {
    content: ':'; }

/* ============================================ *
 * Generic Info Table
 * ============================================ */
.info-box {
  border: 1px solid #C0C0C0;
  padding: 12px 15px;
  margin: 0 0 15px; }
  .info-box h2 {
    font-weight: bold;
    font-size: 13px; }

.info-table th,
.info-table td {
  vertical-align: top; }

.info-table th {
  font-weight: bold;
  padding: 4px 20px 4px 0; }

.info-table td {
  padding: 4px 0; }

/* ============================================ *
 * Zebra-Stripe Table
 * ============================================ */
.zebra-table tr:first-child,
.zebra-table th:first-child {
  border-top: 1px solid #C0C0C0; }

.zebra-table td,
.zebra-table th {
  border-bottom: 1px solid #C0C0C0;
  padding: 6px;
  background-color: transparent; }

.zebra-table tr {
  background-color: #EEEDED; }

.zebra-table tr:nth-child(odd) {
  background-color: #F8F7F5; }

/* ============================================ *
 * Linearize Table
 * ============================================ */
@media only screen and (max-width: 479px) {
  .linearize-table {
    /* Helpers */ }
    .linearize-table tr,
    .linearize-table th,
    .linearize-table td {
      display: block; }
    .linearize-table thead th {
      border-right: 0;
      border-left: 0; }
    .linearize-table thead th.lin-hide {
      display: none; }
    .linearize-table thead th:nth-child(1n+2) {
      display: none; }
    .linearize-table tbody tr {
      position: relative;
      border-bottom: 1px solid #CCCCCC; }
    .linearize-table tbody td {
      padding: 0 10px 4px;
      border-right: 0;
      border-bottom: 0; }
    .linearize-table tbody td.lin-hide {
      display: none; }
    .linearize-table tbody td:first-child {
      padding-top: 10px; }
    .linearize-table tbody td:first-child,
    .linearize-table tbody td:first-child h3 {
      font-weight: bold; }
    .linearize-table tbody td[data-rwd-label] {
      text-align: left;
      padding-left: 30px; }
    .linearize-table tbody td[data-rwd-label]:before {
      content: attr(data-rwd-label) ":";
      font-size: 12px;
      font-family: "Lato", sans-serif;
      padding-right: 5px;
      text-transform: uppercase; }
    .linearize-table tfoot tr {
      display: block;
      text-align: right; }
    .linearize-table tfoot tr:after {
      content: '';
      display: table;
      clear: both; }
    .linearize-table tfoot td {
      display: block;
      float: left; }
    .linearize-table tfoot td.lin-hide {
      display: none; }
    .linearize-table tfoot td:nth-child(odd) {
      clear: left;
      width: 60%; }
    .linearize-table tfoot td:nth-child(even) {
      text-align: left;
      width: 40%; }
    .linearize-table .linearize-hide {
      display: none; }
    .linearize-table .linearize-unpad {
      padding: 0; }
    .linearize-table .linearize-show {
      display: block; } }

@media only screen and (max-width: 599px) {
  .linearize-table-large {
    /* Helpers */ }
    .linearize-table-large tr,
    .linearize-table-large th,
    .linearize-table-large td {
      display: block; }
    .linearize-table-large thead th {
      border-right: 0;
      border-left: 0; }
    .linearize-table-large thead th.lin-hide {
      display: none; }
    .linearize-table-large thead th:nth-child(1n+2) {
      display: none; }
    .linearize-table-large tbody tr {
      position: relative;
      border-bottom: 1px solid #CCCCCC; }
    .linearize-table-large tbody td {
      padding: 0 10px 4px;
      border-right: 0;
      border-bottom: 0; }
    .linearize-table-large tbody td.lin-hide {
      display: none; }
    .linearize-table-large tbody td:first-child {
      padding-top: 10px; }
    .linearize-table-large tbody td:first-child,
    .linearize-table-large tbody td:first-child h3 {
      font-weight: bold; }
    .linearize-table-large tbody td[data-rwd-label] {
      text-align: left;
      padding-left: 30px; }
    .linearize-table-large tbody td[data-rwd-label]:before {
      content: attr(data-rwd-label) ":";
      font-size: 12px;
      font-family: "Lato", sans-serif;
      padding-right: 5px;
      text-transform: uppercase; }
    .linearize-table-large tfoot tr {
      display: block;
      text-align: right; }
    .linearize-table-large tfoot tr:after {
      content: '';
      display: table;
      clear: both; }
    .linearize-table-large tfoot td {
      display: block;
      float: left; }
    .linearize-table-large tfoot td.lin-hide {
      display: none; }
    .linearize-table-large tfoot td:nth-child(odd) {
      clear: left;
      width: 60%; }
    .linearize-table-large tfoot td:nth-child(even) {
      text-align: left;
      width: 40%; }
    .linearize-table-large .linearize-hide {
      display: none; }
    .linearize-table-large .linearize-unpad {
      padding: 0; }
    .linearize-table-large .linearize-show {
      display: block; } }

@media only screen and (min-width: 600px) {
  .linearize-table .linearize-collapse {
    display: none; } }

/* ============================================ *
 * Global
 * ============================================ */
html,
body {
  height: 100%; }

.row {
  margin-left: 0;
  margin-right: 0; }

.main-container {
  background: #FFFFFF; }

.footer,
.page-header,
.top-header-background,
.main {
  min-height: 100%;
  max-width: 1100px;
  margin: 0 auto; }
  .footer:after,
  .page-header:after,
  .top-header-background:after,
  .main:after {
    content: '';
    display: table;
    clear: both; }

.cms-home .main {
  max-width: none; }

.page-header {
  overflow: visible; }

.header-wrapper,
.footer-container {
  background-color: #000;
  clear: both; }

.footer-container {
  clear: both; }

.sitemap, .product-sitemap, .cms-sitemap, .cms-products-sitemap {
  margin-bottom: 25px; }
  .sitemap .sitemap-link, .product-sitemap .sitemap-link, .cms-sitemap .sitemap-link, .cms-products-sitemap .sitemap-link {
    color: #636363;
    text-decoration: underline; }
  .sitemap h1, .product-sitemap h1, .cms-sitemap h1, .cms-products-sitemap h1 {
    color: #fdb813;
    font-weight: bold; }
  .sitemap ul li, .product-sitemap ul li, .cms-sitemap ul li, .cms-products-sitemap ul li {
    padding-bottom: 10px; }
    .sitemap ul li .sitemap-link, .product-sitemap ul li .sitemap-link, .cms-sitemap ul li .sitemap-link, .cms-products-sitemap ul li .sitemap-link {
      color: #636363;
      text-decoration: underline; }

.show-in-mobile {
  display: block; }

@media only screen and (min-width: 770px) {
  .show-in-mobile {
    display: none; } }

.col-main img {
  max-width: 100%; }

@media only screen and (max-width: 599px) {
  .videoWrapper {
    position: relative;
    padding-bottom: 56.25%;
    /* 16:9 */
    padding-top: 25px;
    height: 0;
    margin-bottom: 1em; }
    .videoWrapper iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%; }
  .map-container {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    max-width: 100%; }
    .map-container iframe {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%; }
  .main-container {
    padding: 15px; } }

.cms-home .col1-layout .col-main {
  padding: 0px 0px; }

.cms-home .col1-layout .home-content {
  padding-left: 15px;
  padding-right: 15px; }

@media screen and (max-width: 450px) {
  .button {
    margin-bottom: 10px; } }

/* ============================================ *
 * Header
 * ============================================ */
@media only screen and (min-width: 771px) {
  .page-header {
    margin: 0 auto;
    padding: 0 30px; }
  .page-header-container {
    position: relative; } }

.header-wrapper {
  background: url(../images/bg-top-asphalt.jpg) no-repeat 17% 0 scroll #000000;
  border-bottom: 1px #353535 solid; }
  .header-wrapper .page-header {
    padding: 0;
    border: 0 none; }

.page-header {
  font-family: "Lato", sans-serif;
  position: relative; }

#google_translate_element {
  position: absolute;
  right: 45px;
  top: 0; }
  @media screen and (max-width: 500px) {
    #google_translate_element {
      position: relative;
      right: auto;
      padding-left: 10px; } }

/* ============================================ *
 * Top header links
 * ============================================ */
.top-header-background {
  padding: 10px;
  padding-right: 45px; }
  .top-header-background .header-links {
    color: #fcfcfc;
    text-align: center; }
    .top-header-background .header-links li {
      display: inline-block;
      border-right: 1px solid #393939; }
      .top-header-background .header-links li a {
        color: #fcfcfc;
        font-family: "Lato", sans-serif;
        font-size: 12px;
        font-weight: 400;
        padding: 0 10px; }
      .top-header-background .header-links li:last-child {
        border-right: 0 none;
        padding-right: 8px; }
        .top-header-background .header-links li:last-child a {
          padding-right: 0; }
  .top-header-background:after {
    content: '';
    display: table;
    clear: both; }
  .top-header-background .form-language,
  .top-header-background .currency-switcher {
    float: left;
    margin-right: 10px; }
  .top-header-background .welcome-msg {
    float: right; }

.page-header-container {
  text-align: center; }

.page-header-container .store-language-container {
  float: right;
  max-width: 35%;
  padding: 13px 15px 10px 10px; }
  .page-header-container .store-language-container label {
    display: none; }
  .page-header-container .store-language-container select {
    max-width: 100%; }

@media only screen and (min-width: 770px) {
  .header-links {
    float: right; }
    .header-links a {
      padding: 0 20px; } }

@media only screen and (max-width: 479px) {
  .page-header-container .store-language-container {
    padding-top: 8px; }
    .page-header-container .store-language-container select {
      font-size: 12px; } }

.header-language-background,
.header-language-background a {
  color: #E6E6E6; }

@media only screen and (max-width: 770px) {
  .header-language-background {
    display: none; } }

/* ============================================ *
 * Logo
 * ============================================ */
.logo {
  display: inline-block;
  text-align: center;
  opacity: 1;
  transition: opacity .1s ease-in; }
  @media only screen and (max-width: 479px) {
    .logo {
      margin-top: 35px; } }
  .logo img {
    max-width: 100%; }
  .logo .small {
    display: block;
    width: 140px;
    padding: 1em 0; }
  .logo .large {
    display: none;
    width: 275px;
    padding: 0;
    margin-left: 1em;
    margin-top: 6px; }

.logo:hover {
  opacity: 0.8; }

@media only screen and (min-width: 771px) {
  .logo {
    padding-bottom: 25px;
    float: left;
    max-width: 300px;
    min-height: 90px; }
    .logo .small {
      display: none; }
    .logo .large {
      display: block; } }

/* ============================================ *
 * Skip Links
 * ============================================ */
.skip-links {
  display: none;
  clear: both;
  overflow: hidden;
  border-top: 1px solid #EDEDED;
  border-bottom: 1px solid #EDEDED; }

@media only screen and (min-width: 771px) {
  .skip-links {
    border: 0;
    display: none; } }

/* -------------------------------------------- *
 * Skip - Link
 */
.skip-link {
  position: relative;
  float: left;
  width: 20%;
  height: 44px;
  color: #E6E6E6;
  line-height: 42px;
  text-align: center; }

a.skip-link {
  text-decoration: none; }

.skip-link:not(.skip-active):hover {
  opacity: 0.8; }

@media only screen and (max-width: 770px) {
  .skip-link {
    border-right: 1px solid #EDEDED; }
  .skip-link:last-child {
    border-right: 0; } }

@media only screen and (min-width: 500px) {
  .skip-link {
    width: 25%; } }

/* -------------------------------------------- *
 * Skip Link - Active
 */
/* -------------------------------------------- *
 * Skip Link - Icon
 */
.skip-link .icon {
  display: inline-block;
  width: 30px;
  height: 30px;
  vertical-align: middle; }

.skip-link.skip-nav .icon,
.skip-link.skip-cart:not(.no-count) .icon {
  margin-right: 3px; }

@media only screen and (min-width: 500px) {
  .skip-link .icon {
    margin-right: 3px; } }

/* -------------------------------------------- *
 * Skip Link - Label
 */
.skip-link .label {
  display: none; }

@media only screen and (min-width: 500px) {
  .skip-link .label {
    display: inline; } }

/* ============================================ *
 * Global Header Navigation
 * ============================================ */
.header-main-links {
  color: #fcfcfc; }
  .header-main-links li {
    /*display: inline-block!important;*/
    position: inherit; }
    .header-main-links li a {
      color: #fcfcfc;
      font-family: "Lato", sans-serif;
      font-weight: 400;
      padding: 0 20px;
      font-size: 13px; }
    .header-main-links li:last-child {
      border-right: 0 none; }

.top-header-container.log-in .login-opt {
  display: none; }

.top-header-container.log-out .logout-opt {
  display: none; }

/* ============================================ *
 * Skip Content
 * ============================================ */
.skip-content {
  display: block; }

.skip-content.skip-active {
  display: block;
  /*background: #EDEDED;*/ }
  .skip-content.skip-active .header-main-links li a {
    padding-top: .5em;
    padding-bottom: .5em; }

/* -------------------------------------------- *
 * Mega menu
 */
.header-wrapper .nav .open > a, .header-wrapper .nav .open > a:focus, .header-wrapper .nav .open > a:hover {
  background-color: transparent;
  color: #fdb813; }

.header-wrapper .nav > li > a:focus, .header-wrapper .nav > li > a:hover {
  background-color: transparent; }

.std ol, .std ul {
  list-style: none !important; }
  .std ol ul li, .std ul ul li {
    margin: 0; }

@media only screen and (min-width: 770px) {
  .show-in-mobile {
    display: none; }
  #header-nav .by-brand li {
    width: 49%;
    display: inline-table; }
  #header-nav .by-category {
    border-left: 1px solid #A0A0A0;
    border-right: 1px solid #A0A0A0; }
  .mega-menu {
    background-color: #202020;
    width: 90%;
    border-top: 1px solid #fdb813;
    margin-top: 20px;
    left: 0;
    margin-left: 0%; }
    .mega-menu a.title {
      color: #fdb813; }
    .mega-menu li, .mega-menu li > a {
      position: inherit; }
    .mega-menu .by-use, .mega-menu .by-brand {
      max-height: 300px;
      overflow: hidden; }
    .mega-menu .by-category {
      max-height: 300px;
      overflow: hidden; }
  .mega-dropdown-menu:before {
    content: "";
    border-bottom: 15px solid #fdb813;
    border-right: 17px solid transparent;
    border-left: 17px solid transparent;
    position: absolute;
    top: -15px;
    left: 350px;
    z-index: 10; }
  .mega-dropdown-menu:after {
    content: "";
    border-bottom: 17px solid #fdb813;
    border-right: 19px solid transparent;
    border-left: 19px solid transparent;
    position: absolute;
    top: -17px;
    left: 350px;
    z-index: 8; } }

@media only screen and (max-width: 769px) {
  /*utility nav in mobile*/
  .top-header-background {
    padding-right: 5px; }
    .top-header-background .header-links li:last-child {
      margin-left: 15px; }
      .top-header-background .header-links li:last-child a {
        padding: 8px 15px; }
    .top-header-background .header-links li a {
      padding: 8px 15px;
      background: rgba(0, 0, 0, 0.8);
      border: 1px #353535 solid; }
    .top-header-background .header-links li li a {
      background-color: transparent;
      border: 0; }
  .right-nav {
    float: right; }
    .right-nav li.hide-in-mobile {
      display: none; }
  .top-header-container .show-in-mobile {
    max-width: 45%;
    margin-right: 2%;
    float: right;
    font-size: 11px; }
    .top-header-container .show-in-mobile #search_mini_form .search-button:before {
      background-position: 6px -115px;
      background-size: 80px 800px; }
    .top-header-container .show-in-mobile #search {
      font-size: 11px;
      height: 36px;
      border: 1px #353535 solid; }
  /* header nav in mobile */
  .nav-pills > li + li {
    margin-left: 0; }
  .header-main-links > li {
    border: 1px #000 solid;
    width: 50%;
    padding: 0;
    background-color: #313030; }
    .header-main-links > li span {
      display: none; }
  .header-main-links {
    border-top: 1px #676666 solid;
    border-bottom: 1px #676666 solid; }
    .header-main-links li:last-child {
      border: 1px #000 solid; }
    .header-main-links li a {
      padding: 10px 0px;
      font-size: 12px; }
    .header-main-links li li:last-child {
      border: 0;
      margin-bottom: 10px; }
  .mega-menu {
    background-color: transparent;
    width: 100%;
    border-top: 1px solid #fdb813;
    margin-top: 20px;
    left: 0;
    top: 15px;
    margin: 0;
    position: relative; }
    .mega-menu a.title {
      color: #fdb813; }
    .mega-menu li, .mega-menu li > a {
      position: inherit; }
  .mega-dropdown-menu:before {
    content: "";
    border-bottom: 15px solid #fdb813;
    border-right: 17px solid transparent;
    border-left: 17px solid transparent;
    position: absolute;
    top: -15px;
    left: 50px;
    z-index: 10; }
  .mega-dropdown-menu:after {
    content: "";
    border-bottom: 17px solid #fdb813;
    border-right: 19px solid transparent;
    border-left: 19px solid transparent;
    position: absolute;
    top: -17px;
    left: 50px;
    z-index: 8; } }

.dropdown-menu {
  padding: 10px 15px; }
  .dropdown-menu .dropdown-menu {
    display: block;
    overflow: scroll;
    position: relative;
    width: 100%;
    overflow: hidden;
    margin: 0px; }

.dropup .dropdown-menu {
  color: #E6E6E6; }
  .dropup .dropdown-menu:hover {
    color: #E6E6E6; }
  .dropup .dropdown-menu .btn-group {
    color: #fdb813; }
    .dropup .dropdown-menu .btn-group:hover {
      color: #fdb813; }
  .dropup .dropdown-menu .btn:hover {
    color: #fdb813; }
  .dropup .dropdown-menu button.btn-warning {
    background-color: #fdb813;
    border-radius: 0;
    color: #000000;
    font-size: 13px;
    padding: 10px 12px;
    outline-color: #fdb813;
    outline-color: none;
    outline-width: 100%;
    width: 100%; }
    .dropup .dropdown-menu button.btn-warning:hover {
      color: #000000; }
  .dropup .dropdown-menu .scroll-area {
    max-height: 400px;
    overflow: hidden; }

.std .scroll-area p {
  margin: 0 !important; }

.dropdown-menu-engineers .dropdown-menu, .dropdown-menu-airports .dropdown-menu, .dropdown-menu-commercial .dropdown-menu, .dropdown-menu-contractors .dropdown-menu, .dropdown-menu-government .dropdown-menu, .dropdown-menu-global .dropdown-menu, .dropdown-menu-engineers .dropdown-menu {
  border-top: 0 none;
  overflow: hidden;
  box-sizing: border-box;
  box-shadow: 0 0 0 transparent;
  padding: 0; }
  .dropdown-menu-engineers .dropdown-menu .row, .dropdown-menu-airports .dropdown-menu .row, .dropdown-menu-commercial .dropdown-menu .row, .dropdown-menu-contractors .dropdown-menu .row, .dropdown-menu-government .dropdown-menu .row, .dropdown-menu-global .dropdown-menu .row, .dropdown-menu-engineers .dropdown-menu .row {
    margin: 0; }
  .dropdown-menu-engineers .dropdown-menu .by-use > a, .dropdown-menu-engineers .dropdown-menu .by-category > a, .dropdown-menu-engineers .dropdown-menu .by-brand > a, .dropdown-menu-airports .dropdown-menu .by-use > a, .dropdown-menu-airports .dropdown-menu .by-category > a, .dropdown-menu-airports .dropdown-menu .by-brand > a, .dropdown-menu-commercial .dropdown-menu .by-use > a, .dropdown-menu-commercial .dropdown-menu .by-category > a, .dropdown-menu-commercial .dropdown-menu .by-brand > a, .dropdown-menu-contractors .dropdown-menu .by-use > a, .dropdown-menu-contractors .dropdown-menu .by-category > a, .dropdown-menu-contractors .dropdown-menu .by-brand > a, .dropdown-menu-government .dropdown-menu .by-use > a, .dropdown-menu-government .dropdown-menu .by-category > a, .dropdown-menu-government .dropdown-menu .by-brand > a, .dropdown-menu-global .dropdown-menu .by-use > a, .dropdown-menu-global .dropdown-menu .by-category > a, .dropdown-menu-global .dropdown-menu .by-brand > a, .dropdown-menu-engineers .dropdown-menu .by-use > a, .dropdown-menu-engineers .dropdown-menu .by-category > a, .dropdown-menu-engineers .dropdown-menu .by-brand > a {
    color: #fdb813; }
    .dropdown-menu-engineers .dropdown-menu .by-use > a:before, .dropdown-menu-engineers .dropdown-menu .by-category > a:before, .dropdown-menu-engineers .dropdown-menu .by-brand > a:before, .dropdown-menu-airports .dropdown-menu .by-use > a:before, .dropdown-menu-airports .dropdown-menu .by-category > a:before, .dropdown-menu-airports .dropdown-menu .by-brand > a:before, .dropdown-menu-commercial .dropdown-menu .by-use > a:before, .dropdown-menu-commercial .dropdown-menu .by-category > a:before, .dropdown-menu-commercial .dropdown-menu .by-brand > a:before, .dropdown-menu-contractors .dropdown-menu .by-use > a:before, .dropdown-menu-contractors .dropdown-menu .by-category > a:before, .dropdown-menu-contractors .dropdown-menu .by-brand > a:before, .dropdown-menu-government .dropdown-menu .by-use > a:before, .dropdown-menu-government .dropdown-menu .by-category > a:before, .dropdown-menu-government .dropdown-menu .by-brand > a:before, .dropdown-menu-global .dropdown-menu .by-use > a:before, .dropdown-menu-global .dropdown-menu .by-category > a:before, .dropdown-menu-global .dropdown-menu .by-brand > a:before, .dropdown-menu-engineers .dropdown-menu .by-use > a:before, .dropdown-menu-engineers .dropdown-menu .by-category > a:before, .dropdown-menu-engineers .dropdown-menu .by-brand > a:before {
      content: "Products "; }
  .dropdown-menu-engineers .dropdown-menu .by-use, .dropdown-menu-engineers .dropdown-menu .by-brand, .dropdown-menu-airports .dropdown-menu .by-use, .dropdown-menu-airports .dropdown-menu .by-brand, .dropdown-menu-commercial .dropdown-menu .by-use, .dropdown-menu-commercial .dropdown-menu .by-brand, .dropdown-menu-contractors .dropdown-menu .by-use, .dropdown-menu-contractors .dropdown-menu .by-brand, .dropdown-menu-government .dropdown-menu .by-use, .dropdown-menu-government .dropdown-menu .by-brand, .dropdown-menu-global .dropdown-menu .by-use, .dropdown-menu-global .dropdown-menu .by-brand, .dropdown-menu-engineers .dropdown-menu .by-use, .dropdown-menu-engineers .dropdown-menu .by-brand {
    width: 40%; }
    .dropdown-menu-engineers .dropdown-menu .by-use > a + ul li, .dropdown-menu-engineers .dropdown-menu .by-brand > a + ul li, .dropdown-menu-airports .dropdown-menu .by-use > a + ul li, .dropdown-menu-airports .dropdown-menu .by-brand > a + ul li, .dropdown-menu-commercial .dropdown-menu .by-use > a + ul li, .dropdown-menu-commercial .dropdown-menu .by-brand > a + ul li, .dropdown-menu-contractors .dropdown-menu .by-use > a + ul li, .dropdown-menu-contractors .dropdown-menu .by-brand > a + ul li, .dropdown-menu-government .dropdown-menu .by-use > a + ul li, .dropdown-menu-government .dropdown-menu .by-brand > a + ul li, .dropdown-menu-global .dropdown-menu .by-use > a + ul li, .dropdown-menu-global .dropdown-menu .by-brand > a + ul li, .dropdown-menu-engineers .dropdown-menu .by-use > a + ul li, .dropdown-menu-engineers .dropdown-menu .by-brand > a + ul li {
      width: 49%;
      display: inline-table; }
  .dropdown-menu-engineers .dropdown-menu .by-category, .dropdown-menu-airports .dropdown-menu .by-category, .dropdown-menu-commercial .dropdown-menu .by-category, .dropdown-menu-contractors .dropdown-menu .by-category, .dropdown-menu-government .dropdown-menu .by-category, .dropdown-menu-global .dropdown-menu .by-category, .dropdown-menu-engineers .dropdown-menu .by-category {
    width: 20%;
    border-left: 1px solid #A0A0A0;
    border-right: 1px solid #A0A0A0; }
  .dropdown-menu-engineers .dropdown-menu a, .dropdown-menu-airports .dropdown-menu a, .dropdown-menu-commercial .dropdown-menu a, .dropdown-menu-contractors .dropdown-menu a, .dropdown-menu-government .dropdown-menu a, .dropdown-menu-global .dropdown-menu a, .dropdown-menu-engineers .dropdown-menu a {
    color: #E6E6E6;
    padding-left: 0;
    font-size: 12px; }

@media only screen and (min-width: 770px) {
  .dropdown-menu {
    padding: 2em .25em 4em; }
  .dropdown-menu.dropdown-menu-engineers {
    width: 500%;
    left: -300%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-engineers:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 28%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-engineers:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 28%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-airports {
    width: 500%;
    left: -410%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-airports:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 8%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-airports:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 8%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-commercial {
    width: 500%;
    left: -200%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-commercial:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 48%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-commercial:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 48%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-contractors {
    width: 500%;
    left: -100%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-contractors:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 68%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-contractors:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 68%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-government {
    width: 500%;
    left: 0%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-government:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 88%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-government:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 88%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-global {
    width: 500%;
    left: 50%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-global:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      left: 0;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-global:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      left: 0;
      z-index: 8; } }

@media only screen and (max-width: 769px) {
  .dropdown-menu {
    padding: 10px 15px; }
  .dropdown-menu.dropdown-menu-engineers {
    width: 250%;
    left: -75%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-engineers:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 44%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-engineers:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 44%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-airports {
    width: 250%;
    left: -175%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-airports:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 0;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-airports:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 0;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-commercial {
    width: 250%;
    left: 25%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-commercial:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      left: 0%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-commercial:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      left: 0%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-contractors {
    width: 250%;
    left: -175%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-contractors:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 0;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-contractors:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 0;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-government {
    width: 250%;
    left: -75%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-government:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      right: 44%;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-government:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      right: 44%;
      z-index: 8; }
  .dropdown-menu.dropdown-menu-global {
    width: 250%;
    left: 25%;
    margin-bottom: 20px;
    border-bottom: 1px solid #fdb813;
    font-size: 13px; }
    .dropdown-menu.dropdown-menu-global:before {
      content: "";
      border-top: 15px solid #fdb813;
      border-right: 17px solid transparent;
      border-left: 17px solid transparent;
      position: absolute;
      bottom: -15px;
      left: 0;
      z-index: 10; }
    .dropdown-menu.dropdown-menu-global:after {
      content: "";
      border-top: 17px solid #fdb813;
      border-right: 19px solid transparent;
      border-left: 19px solid transparent;
      position: absolute;
      bottom: -17px;
      left: 0;
      z-index: 8; } }

.dropdown-menu {
  background-color: #202020; }

.navbar-nav > li > .dropdown-menu {
  margin-top: 20px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px; }

.navbar-default .navbar-nav > li > a {
  width: 200px;
  font-weight: bold; }

.mega-dropdown {
  position: static !important;
  width: 100%; }

.mega-dropdown-menu {
  padding: 20px 0px;
  width: 100%;
  box-shadow: none;
  -webkit-box-shadow: none; }

.mega-dropdown-menu > li > ul {
  padding: 0;
  margin: 0; }

.mega-dropdown-menu > li > ul > li {
  list-style: none; }

.mega-dropdown-menu > li > ul > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.428571429;
  white-space: normal; }

.mega-dropdown-menu > li ul > li > a:hover,
.mega-dropdown-menu > li ul > li > a:focus {
  text-decoration: none;
  color: #fdb813; }

.mega-dropdown-menu .dropdown-header {
  color: #fdb813;
  font-size: 18px;
  font-weight: bold; }

.mega-dropdown-menu form {
  margin: 3px 20px; }

.mega-dropdown-menu .form-group {
  margin-bottom: 3px; }

@media only screen and (max-width: 770px) {
  #header-account li a,
  .nav-primary a.level0 {
    padding: 0 15px 0 25px;
    border-bottom: 1px solid #CCCCCC;
    text-align: left;
    color: #636363;
    text-transform: uppercase;
    line-height: 30px; }
  #header-account li:last-child a,
  .nav-primary li.level0:last-child a.level0 {
    border-bottom: 0; }
  .no-touch #header-account a:hover,
  .no-touch .nav-primary a:hover {
    background-color: #F4F4F4;
    text-decoration: none; } }

.account-cart-wrapper {
  position: absolute;
  top: 0px;
  right: 0px; }
  @media only screen and (max-width: 770px) {
    .account-cart-wrapper {
      position: static; } }

/* ============================================ *
 * Nav - Skip Link
 * ============================================ */
.skip-nav {
  width: 40%; }
  .skip-nav:not(.skip-active):hover {
    text-decoration: none; }
    .skip-nav:not(.skip-active):hover .icon {
      background-position: -46px 4px; }

.skip-nav .label {
  display: inline; }

.skip-nav .icon {
  background-position: 4px 4px; }

.header-main-links a {
  text-decoration: none; }

.header-main-links .mega-menu {
  width: 100%;
  font-size: .9em; }
  .header-main-links .mega-menu li {
    vertical-align: top;
    max-height: initial; }

.dropdown[style] {
  display: inline-block !important; }

@media only screen and (max-width: 380px) {
  .header-main-links .mega-menu {
    width: 100%;
    font-size: .9em;
    position: absolute;
    top: 0; } }

.open > .dropdown-menu {
  animation: megaToggle .2s ease-in; }

.global.open > .dropdown-menu {
  animation: globalToggle .2s ease-in; }

.government.open > .dropdown-menu {
  animation: governmentToggle .2s ease-in; }

.contractors.open > .dropdown-menu {
  animation: contractorsToggle .2s ease-in; }

.commercial.open > .dropdown-menu {
  animation: commercialToggle .2s ease-in; }

.engineers.open > .dropdown-menu {
  animation: engineersToggle .2s ease-in; }

.airports.open > .dropdown-menu {
  animation: airportsToggle .2s ease-in; }

.modal-open .modal {
  overflow: scroll; }

@media only screen and (min-width: 500px) {
  .skip-nav {
    width: 25%; } }

@media only screen and (min-width: 771px) {
  .skip-nav {
    display: none; } }

/* ============================================ *
 * Nav - Skip Content
 * ============================================ */
@media only screen and (max-width: 770px) {
  #header-nav {
    padding: 5px 0; } }

@media only screen and (min-width: 771px) {
  #header-nav {
    /*border-bottom: 1px solid $c-module-border-light;*/
    display: inline-block;
    position: absolute;
    width: 100%;
    top: 70px;
    left: 0;
    padding-left: 300px;
    z-index: 10;
    /* max-width: 768px;*/ } }

/* ============================================ *
 * Nav Primary
 * ============================================ */
@media only screen and (min-width: 771px) {
  .nav-primary {
    display: block;
    margin-top: 15px; } }

/* ============================================ *
 * General Navigation Styles
 * ============================================ */
.nav-primary a {
  text-decoration: none;
  position: relative;
  display: block;
  color: #636363;
  line-height: 30px;
  font-family: "Lato", sans-serif; }

.nav-primary li {
  position: relative; }

.nav-primary li.level1 a {
  border-bottom: 1px solid #CCCCCC; }

.nav-primary .menu-active > ul.level0,
.nav-primary li.level0 li.sub-menu-active > ul {
  display: block; }

.nav-primary li.level0 > a {
  text-transform: uppercase; }

/* ============================================ *
 * Small Viewports - Accordion Style Menu
 * ============================================ */
@media only screen and (max-width: 599px) {
  .header-main-links .mega-menu {
    position: absolute;
    top: 0px; } }

@media only screen and (max-width: 770px) {
  .nav-primary a.level0,
  .nav-primary a {
    line-height: 35px; }
  .nav-primary li.level0 ul {
    display: none; }
  .nav-primary li.level0 li {
    padding: 0 0 0 25px; }
  .nav-primary li.level1 a {
    padding: 0 15px 0 25px; }
  .nav-primary li.parent > a:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    border-left: 5px solid #ccc;
    border-right: none;
    top: 50%;
    left: 10px;
    right: auto;
    margin-top: -5px; }
  .nav-primary li.parent.sub-menu-active > a:after,
  .nav-primary li.parent.menu-active > a:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    border-top: 5px solid #ccc;
    border-bottom: none;
    top: 50%;
    left: 10px;
    right: auto;
    margin-top: -5px; }
  .nav-primary li.menu-active > a,
  .nav-primary li.sub-menu-active > a {
    color: #fdb813; } }

/* ============================================ *
 * Large Viewports - Dropdown Menu
 * ============================================ */
@media only screen and (min-width: 771px) {
  .nav-primary {
    /* Default styles for 1+ drop-down menus */
    /* Level 2+ */
    /* Class for js to add briefly to evaluate element positioning. */
    /* Correct menus that will hang off the page (class added by js) */
    /* Level 1+ */ }
    .nav-primary a.level0 {
      padding: 0 25px; }
    .nav-primary li.level0,
    .nav-primary a.level0 {
      display: inline-block; }
    .nav-primary li:last-child > a {
      border-bottom: none; }
    .nav-primary a:hover,
    .nav-primary li:hover > a {
      color: #fdb813; }
    .nav-primary .menu-active {
      z-index: 200; }
    .nav-primary li.level0 ul {
      background: #FBFBFB;
      border: solid 1px #CCCCCC;
      position: absolute;
      left: 0;
      top: 30px;
      /* Height of ".nav-primary a.level0" */
      z-index: 10;
      width: 250px;
      padding-left: 10px;
      padding-right: 10px;
      display: none;
      /* Hide until displayed. */ }
    .nav-primary li.level1 ul {
      left: 60px;
      top: 15px; }
    .nav-primary li.level0 ul.level0.position-test {
      display: block; }
    .nav-primary li.level0 ul.level0.spill {
      right: 0;
      left: auto; }
      .nav-primary li.level0 ul.level0.spill li.level1 ul {
        left: auto;
        right: 50px;
        top: 20px; }
    .nav-primary li.level0 li.parent > a {
      position: relative; }
      .nav-primary li.level0 li.parent > a:after {
        content: '';
        position: absolute;
        width: 0;
        height: 0;
        display: block;
        border-top: 4px solid transparent;
        border-bottom: 4px solid transparent;
        border-left: 4px solid #ccc;
        border-right: none;
        right: 5px;
        top: 50%;
        margin-top: -3px; } }

.nav-primary li.menu-active > ul {
  display: block; }

.right-nav ul {
  list-style: none;
  padding: 0px;
  margin: 0px; }
  .right-nav ul li {
    display: block;
    position: relative;
    float: left;
    transition: background-color 0.35s ease-in-out; }
    .right-nav ul li:hover {
      background-color: #333; }
    .right-nav ul li a {
      display: block;
      padding: 5px 10px 5px 10px;
      text-decoration: none;
      white-space: nowrap;
      color: #fff; }
    .right-nav ul li ul {
      display: none;
      background-color: #333;
      padding: 8px 8px 10px 8px; }
      .right-nav ul li ul li {
        border-right: 0 !important;
        float: right; }
        .right-nav ul li ul li a {
          padding: 5px 10px !important; }
    .right-nav ul li:hover ul {
      display: block;
      position: absolute;
      right: -10px;
      z-index: 99999; }

.right-nav #drop-nav:hover {
  cursor: pointer; }

/* ============================================ *
 * Search - Skip Link
 * ============================================ */
.skip-search:not(.skip-active):hover .icon {
  background-position: -46px -146px; }

.skip-search .icon {
  background-position: 4px -146px; }

@media only screen and (min-width: 771px) {
  .skip-search {
    display: none; } }

/* ============================================ *
 * Search - Skip Content
 * ============================================ */
#header-search {
  padding: 0; }

@media only screen and (min-width: 771px) {
  #header-search {
    display: block;
    position: absolute;
    top: 65px;
    right: 40px;
    width: 15%;
    height: 30px;
    padding: 0;
    font-size: 13px;
    z-index: 20; } }

@media only screen and (max-width: 769px) {
  #header-search {
    display: none; } }

/* ============================================ *
 * Search Input
 * ============================================ */
#search_mini_form .input-box,
#search_mini_form_mobile .input-box {
  position: relative;
  padding-top: 0; }

#search_mini_form label,
#search_mini_form_mobile label {
  display: none; }

#search, #search2 {
  width: 100%;
  height: 30px;
  padding-right: 40px;
  font-family: "Lato", sans-serif;
  background-color: #000000;
  border: none;
  text-align: right;
  color: #E6E6E6;
  outline-color: transparent; }
  #search::-webkit-input-placeholder, #search2::-webkit-input-placeholder {
    color: #E6E6E6; }
  #search:-moz-placeholder, #search2:-moz-placeholder {
    /* Firefox 18- */
    color: #E6E6E6; }
  #search::-moz-placeholder, #search2::-moz-placeholder {
    /* Firefox 19+ */
    color: #E6E6E6; }
  #search:-ms-input-placeholder, #search2:-ms-input-placeholder {
    color: #E6E6E6; }

#search_mini_form .search-button, #search_mini_form_mobile .search-button {
  text-indent: -9999px;
  position: absolute;
  top: 7px;
  right: 0;
  width: 30px;
  height: 20px;
  border: 0;
  background: none;
  border-left: 1px solid #393939; }

#search_mini_form .search-button:before,
#search_mini_form_mobile .search-button:before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 30px;
  height: 30px;
  margin-top: -15px;
  margin-left: -15px;
  background-position: 4px -146px; }

#search_mini_form .search-button:hover:before,
#search_mini_form_mobile .search-button:hover:before {
  opacity: 0.8; }

#search_mini_form .search-button:active:before,
#search_mini_form_mobile .search-button:active:before {
  margin-top: -13px;
  margin-left: -13px; }

/* ============================================ *
 * Header - Account
 * ============================================ */
/* -------------------------------------------- *
 * Skip Link - Account
 */
.skip-account:not(.skip-active):hover .icon {
  background-position: -46px -44px; }

.skip-account .icon {
  background-position: 4px -44px; }

@media only screen and (min-width: 771px) {
  .skip-account {
    float: none;
    width: auto;
    vertical-align: top;
    display: inline-block;
    padding: 0 10px;
    text-transform: uppercase; }
  #header-account.skip-active {
    background: #FBFBFB;
    border: solid 1px #CCCCCC;
    display: block;
    position: absolute;
    z-index: 200;
    top: 40px;
    right: 115px;
    width: 200px; }
  #header-account a {
    display: block;
    padding: 5px 10px;
    color: #636363;
    line-height: 2; }
  #header-account a:hover {
    color: #fdb813; } }

/* -------------------------------------------- *
 * Account Links
 */
#header-account {
  display: none;
  padding: 5px 0; }

#header-account a {
  position: relative;
  display: block;
  padding: 5px 10px;
  line-height: 23px;
  text-align: center; }

#header-account a:hover {
  color: #fdb813; }

/* ============================================ *
 * Header - Cart
 * ============================================ */
/* -------------------------------------------- *
 * Skip Link - Cart
 */
.skip-cart:not(.skip-active):hover .icon {
  background-position: -50px -95px; }

.skip-cart .icon {
  background-position: 0px -95px; }

@media only screen and (min-width: 771px) {
  .skip-cart {
    width: auto;
    padding: 0 10px; }
  #header-cart.skip-active {
    background: #FBFBFB;
    border: solid 1px #CCCCCC;
    display: block;
    position: absolute;
    z-index: 200;
    top: 40px;
    right: 0;
    width: 320px;
    background: white; } }

/* -------------------------------------------- *
 * Skip Cart Notifier
 */
.skip-cart .count {
  -webkit-border-radius: 12px;
  -moz-border-radius: 12px;
  -ms-border-radius: 12px;
  -o-border-radius: 12px;
  border-radius: 12px;
  display: inline-block;
  top: -6px;
  position: relative;
  z-index: 5;
  width: 22px;
  height: 22px;
  background: rgba(253, 184, 19, 0.9);
  color: #FFFFFF;
  font-size: 11px;
  line-height: 22px;
  text-align: center;
  font-family: "Lato", sans-serif; }

.skip-link.skip-active .count {
  color: white; }

.skip-cart.no-count .count {
  display: none; }

@media only screen and (max-width: 499px) {
  .skip-cart .count {
    margin-left: -12px; } }

@media only screen and (min-width: 771px) {
  .skip-cart {
    color: #fdb813;
    text-transform: uppercase; }
    .skip-cart:hover {
      text-decoration: none; }
    .skip-cart .count {
      -webkit-border-radius: 0px;
      -moz-border-radius: 0px;
      -ms-border-radius: 0px;
      -o-border-radius: 0px;
      border-radius: 0px;
      position: static;
      background: none;
      margin-left: 0px;
      font-size: 14px;
      width: auto; }
      .skip-cart .count:before {
        content: '('; }
      .skip-cart .count:after {
        content: ')'; }
  .skip-cart .count,
  .skip-link.skip-active .count {
    color: #fdb813; } }

.skip-cart .count.empty {
  display: none; }

/* -------------------------------------------- *
 * Mini Cart - Empty
 */
.cart-menu .empty {
  padding: 20px;
  text-align: center; }

/* -------------------------------------------- *
 * Mini Cart - Full
 */
/* Actions */
.cart-menu .actions {
  overflow: hidden;
  padding: 15px; }

.cart-menu .actions .button {
  float: left;
  width: 48%; }

.cart-menu .actions .button + .button {
  margin-left: 4%; }

/* Subtotal */
.cart-menu .subtotal {
  padding: 0 15px 15px;
  font-family: "Lato", sans-serif;
  font-size: 24px;
  line-height: 1.2; }

/* List */
.mini-cart-list {
  margin-bottom: 5px; }

.mini-cart-list li {
  position: relative;
  min-height: 90px;
  padding: 15px 15px 15px 90px;
  border-top: 1px solid #CCCCCC;
  font-size: 13px;
  line-height: 1.35; }

.mini-cart-list .product-name {
  display: inline-block; }

.mini-cart-list .product-image {
  position: absolute;
  left: 15px;
  top: 15px; }

.mini-cart-list .product-image img {
  width: 60px;
  height: 60px; }

.mini-cart-list .has-options {
  margin-bottom: 0;
  color: #A0A0A0;
  font-size: 12px; }

/* Too full - additional items will be shown in cart */
.cart-menu .last-added {
  padding: 10px 15px 15px;
  border-top: 1px solid #CCCCCC;
  font-size: 13px; }

/* ============================================ *
 * Footer
 * ============================================ */
/* -------------------------------------------- *
 * Footer
 */
.footer,
.footer button {
  font-family: "Lato", sans-serif; }

.footer {
  position: relative;
  clear: both;
  width: 100%;
  padding: 6em 1em 2em;
  margin-top: 3em;
  font-size: 14px;
  background: url(../images/bg-footer-asphalt.jpg) no-repeat 100% 0 scroll #000000;
  /* -------------------------------------------- *
     * Social icons
     */ }
  @media only screen and (max-width: 479px) {
    .footer {
      padding-top: 15px; } }
  .footer .block-title {
    border-bottom: 0;
    border-top: 0 none;
    padding: 3px 0; }
  .footer .block-title strong {
    font-weight: normal;
    font-size: 18px; }
  .footer .block-title,
  .footer address {
    color: #868584; }
  .footer .footer .links .block-title a {
    color: #868584; }
  .footer .links-social-media {
    display: block;
    position: absolute;
    right: 0;
    top: 0; }
    .footer .links-social-media strong {
      display: none; }
    .footer .links-social-media ul li {
      display: inline-block;
      font-size: 15px; }
      .footer .links-social-media ul li .icon-text {
        display: none; }
      .footer .links-social-media ul li a .icon {
        display: inline-block;
        padding: .25em;
        background-color: #333;
        position: relative;
        font-size: 1.25em;
        color: #fff;
        line-height: 1;
        margin-right: .25em; }
  .footer .links-social-media.links.social-media {
    width: auto; }
  .footer .phone {
    font-size: 18px; }
  .footer .copyright-links {
    display: inline-block;
    font-size: 12px; }
    .footer .copyright-links li {
      display: inline-block; }
      .footer .copyright-links li a {
        color: #868584;
        border-left: 1px solid #868584;
        font-size: 11px;
        padding-left: 10px;
        margin-left: 10px; }
  .footer .links {
    float: left;
    width: 25%;
    padding: 0 10px 0 0;
    margin-bottom: 80px; }
    .footer .links li {
      line-height: 1.4;
      padding: 4px 0; }
    .footer .links a {
      color: #fcfcfc;
      text-decoration: none; }
      .footer .links a:hover {
        color: #fdb813; }
  .footer .links.newsletter {
    display: none;
    float: right;
    width: auto; }
    .footer .links.newsletter .input-box, .footer .links.newsletter .actions {
      display: inline-block; }
    .footer .links.newsletter p {
      line-height: 1.25em;
      margin: 10px 0;
      font-size: 14px; }
    .footer .links.newsletter input {
      display: inline-block;
      background-color: #000000;
      width: 160px;
      font-size: 12px;
      border: 1px solid #ccc; }
    .footer .links.newsletter button {
      display: inline-block;
      background-color: #fdb813;
      border: 1px solid #fdb813;
      color: #fcfcfc;
      padding: 4px 15px;
      margin-left: 5px;
      color: #000; }
      .footer .links.newsletter button:hover {
        border: 1px solid #db9b02;
        background-color: #db9b02; }
  .footer .block-subscribe {
    float: right;
    width: 320px;
    margin-bottom: 30px; }
  .footer .links,
  .footer .block-subscribe {
    font-size: 12px;
    color: #fcfcfc; }
  .footer .form-subscribe-header {
    display: none; }
  .footer .links.social-media a {
    font-size: 0; }
  .footer .links.social-media em {
    vertical-align: middle;
    display: inline-block;
    margin-right: 7px;
    background: url(../images/social_theme.jpg) no-repeat 0 0 scroll #000000;
    display: inline-block;
    width: 28px;
    height: 28px; }
    .footer .links.social-media em.googleplus {
      background-position: 0 -28px; }
    .footer .links.social-media em.twitter {
      background-position: 0 -56px; }
    .footer .links.social-media em.facebook {
      background-position: 0 -84px; }
  .footer .block-subscribe .input-box {
    float: left;
    width: 65.625%;
    padding-top: 0; }
  .footer .block-subscribe .input-text {
    width: 100%;
    border-right: 0;
    -webkit-border-radius: 0;
    -moz-border-radius: 0;
    -ms-border-radius: 0;
    -o-border-radius: 0;
    border-radius: 0; }
  .footer .block-subscribe .block-content {
    padding-top: 7px; }
    .footer .block-subscribe .block-content:after {
      content: '';
      display: table;
      clear: both; }
  .footer .block-subscribe .actions {
    float: left;
    width: 34.375%;
    margin: 0; }
  .footer .block-subscribe .actions .button {
    height: 30px;
    line-height: 17px;
    float: left; }
  .footer .bugs,
  .footer address {
    clear: both; }
  .footer .bugs {
    display: none; }
  .footer .form-language,
  .footer .currency-switcher,
  .footer .store-switcher {
    clear: both;
    margin-bottom: 10px; }
  .footer .form-language,
  .footer .currency-switcher {
    display: none; }
  .footer address {
    text-align: left;
    font-size: 11px;
    display: inline-block;
    margin: 0 0 0 15px;
    padding: 0; }
  .footer .copyright-wrapper {
    width: 100%;
    clear: both;
    display: block; }
  @media only screen and (max-width: 1199px) {
    .footer .links {
      width: 22.65625%;
      padding-right: 0;
      margin-right: 3.125%; }
    .footer .links:nth-child(4) {
      margin-right: 0; }
    .footer .block-subscribe {
      clear: both;
      float: none;
      margin: 0 auto 30px auto; } }
  @media only screen and (max-width: 770px) {
    .footer .form-language,
    .footer .currency-switcher {
      display: block; } }
  @media only screen and (max-width: 599px) {
    .footer .contact-us {
      margin-top: 0; }
    .footer .footer .links {
      width: 100%; }
    .footer .links p {
      line-height: 1.2; }
    .footer .links {
      width: 100%;
      margin-right: 0;
      margin-bottom: 3em; }
      .footer .links ul {
        margin-bottom: 2em; }
    .footer .links.newsletter {
      float: left; }
    .footer .links:nth-child(odd) {
      margin-right: 3.125%;
      clear: both; }
    .footer .block-subscribe {
      clear: both;
      float: left;
      width: 100%; }
    .footer .newsletter {
      margin-top: 4em; } }

/* This file rendered Mickey */
@keyframes globalToggle {
  from {
    opacity: 0;
    transform: translate(-40%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes governmentToggle {
  from {
    opacity: 0;
    transform: translate(-30%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes contractorsToggle {
  from {
    opacity: 0;
    transform: translate(-15%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes commercialToggle {
  from {
    opacity: 0;
    transform: translate(5%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes engineersToggle {
  from {
    opacity: 0;
    transform: translate(25%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes airportsToggle {
  from {
    opacity: 0;
    transform: translate(40%, 50%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

@keyframes megaToggle {
  from {
    opacity: 0;
    transform: translate(-15%, -40%) scale(0.2); }
  to {
    opacity: 1;
    transform: none;
    transform: translate(0, 0) scale(1); } }

/* ================================================= *
 * General Product List Styles (not module-specific)
 * ================================================= */
/* -------------------------------------------- *
 * Product List General
 */
.products-list .action .button,
.products-grid .actions .button {
  white-space: normal; }

/* -------------------------------------------- *
 * Product Name
 */
h2.product-name,
h3.product-name,
h4.product-name,
h5.product-name,
p.product-name {
  margin: 0;
  margin-bottom: 0.5em;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 24px;
  font-weight: 400;
  font-style: normal;
  line-height: 1.2;
  text-rendering: optimizeLegibility;
  font-size: 13px;
  font-family: "Lato", sans-serif;
  font-weight: normal;
  line-height: 1.4; }
  h2.product-name a,
  h3.product-name a,
  h4.product-name a,
  h5.product-name a,
  p.product-name a {
    color: #636363; }
    h2.product-name a:hover,
    h3.product-name a:hover,
    h4.product-name a:hover,
    h5.product-name a:hover,
    p.product-name a:hover {
      color: #fdb813;
      text-decoration: none; }

.products-grid .product-name,
.products-list .product-name {
  margin-bottom: 5px;
  font-size: 14px;
  font-family: "Lato", sans-serif; }
  .products-grid .product-name a,
  .products-list .product-name a {
    font-weight: 500; }

/* ============================================ *
 * Product Grid
 * ============================================ */
.products-grid {
  position: relative; }

.products-grid:after {
  content: '';
  display: table;
  clear: both; }

.products-grid > li {
  position: relative;
  margin-bottom: 20px;
  text-align: center; }
  .products-grid > li:after {
    content: '';
    display: table;
    clear: both; }

.products-grid .product-image {
  width: 100%;
  margin-bottom: 15px; }

.products-grid .product-image img {
  width: 100%;
  height: auto; }
  .products-grid .product-image img:hidden {
    display: none; }

.widget-new-products .products-grid .product-image {
  width: 75%;
  margin-bottom: 15px;
  margin-left: 10%; }

.products-grid .product-info {
  position: relative;
  padding-bottom: 95px; }

.products-grid .actions {
  padding-top: 10px;
  position: absolute;
  bottom: 0px;
  min-height: 85px;
  width: 100%; }

.products-grid .ratings .rating-box {
  margin: 0 auto; }

.products-grid .ratings .amount {
  display: none; }

.products-grid .price-box {
  color: #A0A0A0;
  font-size: 13px;
  margin: 0 0 5px; }

.products-grid .add-to-links {
  margin-bottom: 0; }

/* Config: Two columns + flexible gutter */
.products-grid > li {
  float: left;
  width: 47.72727%;
  margin-right: 4.54545%; }

.products-grid > li:nth-child(odd) {
  clear: left; }

.products-grid > li:nth-child(even) {
  margin-right: 0; }

.products-grid .product-image {
  margin-bottom: 5px; }
  .products-grid .product-image:before, .products-grid .product-image:after {
    content: '';
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    display: none; }
  .products-grid .product-image:before {
    background-color: white;
    opacity: 0.8;
    z-index: 2; }
  .products-grid .product-image:after {
    background-image: url("../images/opc-ajax-loader.gif");
    background-repeat: no-repeat;
    background-position: center;
    z-index: 3; }
  .products-grid .product-image.loading {
    position: relative; }
    .products-grid .product-image.loading:before, .products-grid .product-image.loading:after {
      display: block; }

@media only screen and (min-width: 480px) {
  /* Config: Three columns + flexible gutter */
  .products-grid {
    /* Undo two-column config */
    /* Set three-column config */ }
    .products-grid > li:nth-child(odd) {
      clear: none; }
    .products-grid > li:nth-child(even) {
      margin-right: 3.7037%; }
    .products-grid > li {
      width: 30.8642%;
      margin-right: 3.7037%; }
    .products-grid > li:nth-child(3n+1) {
      clear: left; }
    .products-grid > li:nth-child(3n) {
      margin-right: 0; } }

@media only screen and (min-width: 960px) {
  /* Config: Columns + flexible gutter */
  /* Undo three-column config */
  .products-grid--max-4-col > li:nth-child(odd) {
    clear: none; }
  .products-grid--max-4-col > li:nth-child(3n+1) {
    clear: none; }
  .products-grid--max-4-col > li:nth-child(even),
  .products-grid--max-4-col > li:nth-child(3n) {
    margin-right: 2.22222%; }
  /* Set column config */
  .products-grid--max-4-col > li {
    margin-right: 2.22222%; }
  .products-grid--max-4-col > li {
    width: 23.33333%;
    margin-right: 2.22222%; }
  .products-grid--max-4-col > li:nth-child(4n+1) {
    clear: left; }
  .products-grid--max-4-col > li:nth-child(4n) {
    margin-right: 0; }
  /* Config: Columns + flexible gutter */
  /* Undo three-column config */
  .products-grid--max-5-col > li:nth-child(odd) {
    clear: none; }
  .products-grid--max-5-col > li:nth-child(3n+1) {
    clear: none; }
  .products-grid--max-5-col > li:nth-child(even),
  .products-grid--max-5-col > li:nth-child(3n) {
    margin-right: 2.22222%; }
  /* Set column config */
  .products-grid--max-5-col > li {
    margin-right: 2.22222%; }
  .products-grid--max-5-col > li {
    width: 18.22222%;
    margin-right: 2.22222%; }
  .products-grid--max-5-col > li:nth-child(5n+1) {
    clear: left; }
  .products-grid--max-5-col > li:nth-child(5n) {
    margin-right: 0; }
  /* Config: Columns + flexible gutter */
  /* Undo three-column config */
  .products-grid--max-6-col > li:nth-child(odd) {
    clear: none; }
  .products-grid--max-6-col > li:nth-child(3n+1) {
    clear: none; }
  .products-grid--max-6-col > li:nth-child(even),
  .products-grid--max-6-col > li:nth-child(3n) {
    margin-right: 2.22222%; }
  /* Set column config */
  .products-grid--max-6-col > li {
    margin-right: 2.22222%; }
  .products-grid--max-6-col > li {
    width: 14.81481%;
    margin-right: 2.22222%; }
  .products-grid--max-6-col > li:nth-child(6n+1) {
    clear: left; }
  .products-grid--max-6-col > li:nth-child(6n) {
    margin-right: 0; } }

/* ============================================ *
 * Product List
 * ============================================ */
.products-list {
  margin-top: 20px;
  margin-bottom: 20px; }
  .products-list > li {
    padding-bottom: 20px;
    margin-bottom: 20px;
    border-bottom: 1px solid #EDEDED;
    clear: both;
    overflow: auto; }
    .products-list > li:after {
      content: '';
      display: table;
      clear: both; }
    .products-list > li .product-image {
      float: left;
      width: 33.33333%; }
      .products-list > li .product-image img {
        width: 100%;
        max-width: 100%; }
  .products-list > li:last-child {
    padding-bottom: 0;
    border-bottom: none; }

.products-list .product-shop {
  float: right;
  width: 66.66667%;
  padding-left: 20px; }
  .products-list .product-shop .product-name {
    margin-bottom: 0; }
  .products-list .product-shop .ratings {
    margin: 0; }
    .products-list .product-shop .ratings .rating-box,
    .products-list .product-shop .ratings .rating-links {
      float: left;
      margin-right: 7px; }
    .products-list .product-shop .ratings .rating-links {
      margin-top: 4px; }
  .products-list .product-shop .price-box {
    margin-top: 0; }
  .products-list .product-shop .price-box .price {
    font-size: 18px; }
  .products-list .product-shop .action {
    margin: 7px 0; }
  .products-list .product-shop .desc {
    margin-top: 7px; }
  .products-list .product-shop .product-primary,
  .products-list .product-shop .desc {
    float: left;
    width: 65%;
    overflow: hidden; }
  .products-list .product-shop .product-secondary {
    float: right;
    width: 35%;
    text-align: right;
    clear: right; }

@media only screen and (min-width: 480px) {
  .products-list .product-name a {
    font-size: 18px; } }

@media only screen and (max-width: 1279px) {
  .products-list .product-shop .product-primary,
  .products-list .product-shop .desc {
    float: left;
    width: 60%;
    padding-right: 20px; }
  .products-list .product-shop .product-secondary {
    float: right;
    width: 40%; } }

@media only screen and (max-width: 600px) {
  .products-list .product-shop .price-box .special-price {
    padding-left: 0; }
  .products-list .product-shop .product-primary,
  .products-list .product-shop .product-secondary,
  .products-list .product-shop .desc {
    float: none;
    width: 100%;
    padding-right: 0;
    text-align: left; } }

/* ============================================ *
 * Mini Product List
 * ============================================ */
.mini-products-list .product-image {
  float: left;
  min-width: 50px; }

.mini-products-list .product-details {
  margin-left: 60px; }

.mini-products-list .product-details .product-name {
  padding-top: 10px; }

.mini-products-list li {
  margin-bottom: 10px;
  clear: both; }
  .mini-products-list li:after {
    content: '';
    display: table;
    clear: both; }

.mini-products-images-list:after {
  content: '';
  display: table;
  clear: both; }

.mini-products-images-list li.item {
  float: left;
  width: 50%;
  margin: 0;
  padding: 0 5px 10px 0; }
  .mini-products-images-list li.item:nth-child(even) {
    padding-right: 0;
    padding-left: 5px; }
  .mini-products-images-list li.item .product-image {
    display: block; }
    .mini-products-images-list li.item .product-image img {
      width: 100%;
      max-width: 100%; }

/* ============================================ *
 * Catalog - List
 * ============================================ */
.category-image {
  border: 1px solid #CCCCCC;
  padding: 10px; }
  .category-image img {
    width: 100%;
    max-width: 100%; }
    .category-image img:hidden {
      display: none; }

/* ============================================ *
 * Layered Navigation
 * ============================================ */
.block-layered-nav .block-subtitle--filter {
  display: none;
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none;
  font-weight: normal;
  margin-bottom: 0px;
  padding: 7px 10px 7px 24px;
  border-width: 1px;
  border-style: solid;
  border-color: #CCCCCC;
  position: relative;
  background-color: #F4F4F4;
  cursor: pointer; }
  .block-layered-nav .block-subtitle--filter:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
    border-top: 4px solid #fdb813;
    border-bottom: none;
    left: 10px;
    top: 50%;
    margin-top: -3px; }
  .block-layered-nav .block-subtitle--filter:hover {
    background-color: #ededed; }

.block-layered-nav .block-content .toggle-tabs {
  display: none; }

.block-layered-nav .block-content > dl > dt {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none;
  font-weight: normal;
  margin-bottom: 0px;
  padding: 7px 10px 7px 24px;
  border-width: 1px;
  border-style: solid;
  border-color: #CCCCCC;
  position: relative;
  background-color: #F4F4F4;
  display: block; }
  .block-layered-nav .block-content > dl > dt:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
    border-top: 4px solid #fdb813;
    border-bottom: none;
    left: 10px;
    top: 50%;
    margin-top: -3px; }
  .block-layered-nav .block-content > dl > dt:hover {
    background-color: #ededed; }

.block-layered-nav .block-content > dl > dd {
  padding: 10px;
  margin: 0;
  border-width: 0 1px;
  border-style: solid;
  border-color: #CCCCCC; }

.block-layered-nav .block-content > dl > dd:last-child {
  border-width: 0 1px 1px 1px; }

.block-layered-nav dl dd {
  margin-bottom: 10px;
  margin-top: 10px; }
  .block-layered-nav dl dd ol > li > span, .block-layered-nav dl dd ol > li > a {
    padding: 5px 15px;
    display: block; }
  .block-layered-nav dl dd ol > li > a .count {
    color: #A0A0A0; }

@media only screen and (min-width: 771px) {
  .block-layered-nav .block-content > dl > dt {
    padding-left: 10px; }
    .block-layered-nav .block-content > dl > dt:after {
      display: none; } }

@media only screen and (max-width: 770px) {
  .sidebar .block.block-layered-nav {
    border-bottom: none; }
  .block-layered-nav--no-filters .block-title {
    display: none; }
  .block-layered-nav .block-content {
    padding-top: 0;
    margin-top: 15px; }
    .block-layered-nav .block-content > dl > dt {
      cursor: pointer;
      border-bottom-width: 0; }
      .block-layered-nav .block-content > dl > dt:hover {
        color: #fdb813; }
      .block-layered-nav .block-content > dl > dt:after {
        content: '';
        position: absolute;
        width: 0;
        height: 0;
        display: block;
        border-top: 4px solid transparent;
        border-bottom: 4px solid transparent;
        border-left: 4px solid #fdb813;
        border-right: none; }
      .block-layered-nav .block-content > dl > dt.last {
        border-bottom-width: 1px; }
    .block-layered-nav .block-content > dl > dd {
      display: none; }
    .block-layered-nav .block-content.accordion-open > dl > dt.current {
      border-bottom-width: 1px; }
    .block-layered-nav .block-content.accordion-open > dl > dt.current:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-right: 4px solid transparent;
      border-left: 4px solid transparent;
      border-top: 4px solid #fdb813;
      border-bottom: none;
      left: 6px;
      top: 50%;
      margin-top: -3px; }
    .block-layered-nav .block-content.accordion-open > dl > dd.current {
      display: block; }
  .block-layered-nav .block-subtitle--filter {
    background-color: #fdb813;
    border: 0;
    margin-bottom: 0;
    display: block;
    color: #FFFFFF; }
    .block-layered-nav .block-subtitle--filter:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-top: 4px solid transparent;
      border-bottom: 4px solid transparent;
      border-left: 4px solid #FFFFFF;
      border-right: none;
      right: 10px;
      top: 50%;
      margin-top: -5px; }
    .block-layered-nav .block-subtitle--filter:hover {
      background-color: #f4ad02;
      color: #FFFFFF; }
    .block-layered-nav .block-subtitle--filter.active:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-right: 4px solid transparent;
      border-left: 4px solid transparent;
      border-top: 4px solid #FFFFFF;
      border-bottom: none;
      right: 10px;
      top: 50%;
      margin-top: -3px; }
  #narrow-by-list,
  #narrow-by-list2 {
    padding: 10px;
    border: 1px solid #CCCCCC;
    border-top: 0; }
  .block-layered-nav dl ol > li > a,
  .block-layered-nav dl ol > li > span {
    padding: 7px;
    margin: 5px; }
  .block-layered-nav dl ol > li > a {
    color: #636363;
    background-color: #F4F4F4;
    padding: 5px 10px; }
    .block-layered-nav dl ol > li > a:hover {
      text-decoration: none;
      background: #ededed; } }

.block-layered-nav .currently .block-subtitle {
  display: block;
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed; }

.block-layered-nav .currently ol {
  padding-left: 10px;
  margin-bottom: 10px; }

.block-layered-nav .currently ol li {
  margin-bottom: 5px; }
  .block-layered-nav .currently ol li .label {
    font-weight: bold; }
  .block-layered-nav .currently ol li:after {
    content: '';
    display: table;
    clear: both; }

.block-layered-nav .actions {
  text-align: right;
  margin-bottom: 7px; }

.color-box-wrapper {
  display: inline-block;
  margin-right: 20px;
  border: 2px solid transparent;
  border-image-source: initial;
  border-image-slice: initial;
  border-image-width: initial;
  border-image-outset: initial;
  border-image-repeat: initial;
  padding: 2px;
  cursor: pointer; }
  .color-box-wrapper .color-box {
    border: 1px solid #A0A0A0;
    border-image-source: initial;
    border-image-slice: initial;
    border-image-width: initial;
    border-image-outset: initial;
    border-image-repeat: initial;
    display: block;
    padding: 50px; }
  .color-box-wrapper span {
    display: block;
    text-align: center; }
  .color-box-wrapper.active {
    border-color: #fdb813; }

/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/* 
    Created on : Feb 5, 2016, 5:07:27 PM
    Author     : Sky Tonnessen
*/
.events-container h2 {
  margin-top: 2em; }

.events-container .events-hero {
  padding-bottom: 1.5em; }

.event-list {
  margin-top: 1.5em; }
  .event-list li {
    padding: 1em 0;
    background-color: #f5f5f5;
    margin-bottom: .5em; }
    .event-list li h3 {
      margin-bottom: 0; }
    .event-list li p {
      margin-bottom: 0; }
  .event-list .date-numbers {
    display: inline-block; }

.calendar {
  margin: .25em 10px 10px 0;
  padding-top: 5px;
  float: left;
  width: 60px;
  background: #ffffff;
  font-size: 20px;
  font-weight: bold;
  text-align: center;
  color: #373636;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  position: relative;
  -moz-box-shadow: 0 2px 2px #d8d8da;
  -webkit-box-shadow: 0 2px 2px #d8d8da;
  box-shadow: 0 2px 2px #d8d8da; }
  .calendar em {
    display: block;
    font-size: 11px;
    color: #fff;
    font-style: normal;
    text-shadow: #d78a1c 0 -1px 0;
    background: #fd9d13;
    background: -webkit-gradient(linear, left top, left bottom, from(#fd9d13), to(#d78a1c));
    background: -moz-linear-gradient(top, #fd9d133, #d78a1c);
    -moz-border-radius-bottomright: 3px;
    -webkit-border-bottom-right-radius: 3px;
    border-bottom-right-radius: 3px;
    -moz-border-radius-bottomleft: 3px;
    -webkit-border-bottom-left-radius: 3px;
    border-bottom-left-radius: 3px;
    border-top: 1px solid #fdbe28; }
    .calendar em:before {
      content: '';
      float: left;
      left: 13px;
      position: absolute;
      top: -5px;
      width: 4px;
      height: 14px;
      background: #aaa;
      z-index: 2;
      -moz-border-radius: 2px;
      -webkit-border-radius: 2px;
      border-radius: 2px; }
    .calendar em:after {
      content: '';
      float: left;
      position: absolute;
      right: 13px;
      top: -5px;
      width: 4px;
      height: 14px;
      background: #aaa;
      z-index: 2;
      -moz-border-radius: 2px;
      -webkit-border-radius: 2px;
      border-radius: 2px; }

/* ============================================ *
 * Catalog - Product
 * ============================================ */
.product-view .product-essential {
  position: relative; }
  .product-view .product-essential .extra-info .ratings .rating-box,
  .product-view .product-essential .extra-info .ratings .amount {
    float: left; }
  .product-view .product-essential .extra-info .ratings .rating-box {
    margin-top: 8px;
    margin-right: 10px; }
  .product-view .product-essential .extra-info .ratings:after {
    content: '';
    display: table;
    clear: both; }
  .product-view .product-essential:after {
    content: '';
    display: table;
    clear: both; }

.product-view .downloads-item {
  padding-bottom: .5em; }

.product-view .product-shop .product-name .h1,
.product-view .product-img-box .product-name h1 {
  color: #fdb813;
  margin-bottom: 10px;
  border: 0; }

.product-view .product-shop {
  width: 50%;
  float: right; }
  .product-view .product-shop .product-name {
    display: none;
    float: left; }
  .product-view .product-shop .product-name .h1 {
    float: left;
    margin-bottom: 5px; }
  .product-view .product-shop .extra-info {
    float: left;
    padding-right: 15px;
    clear: left;
    width: 70%; }
  .product-view .product-shop .price-info {
    float: right;
    padding-left: 15px;
    text-align: right; }
  .product-view .product-shop .extra-info,
  .product-view .product-shop .price-info {
    max-width: 70%;
    margin-bottom: 10px; }
  .product-view .product-shop .short-description {
    margin-bottom: 10px;
    clear: both; }
    .product-view .product-shop .short-description .std {
      margin-bottom: .5em; }
  .product-view .product-shop .ratings {
    margin-bottom: 8px; }
  .product-view .product-shop .availability {
    font-size: 16px; }
  .product-view .product-shop .price-box {
    margin-top: 0; }
    .product-view .product-shop .price-box .old-price,
    .product-view .product-shop .price-box .special-price,
    .product-view .product-shop .price-box .regular-price {
      padding-right: 0;
      line-height: 1.2; }
    .product-view .product-shop .price-box .regular-price .price,
    .product-view .product-shop .price-box .special-price .price,
    .product-view .product-shop .price-box .full-product-price .price {
      color: #fdb813;
      font-size: 24px; }
    .product-view .product-shop .price-box .special-price .price-label {
      font-size: 16px;
      text-transform: uppercase; }
    .product-view .product-shop .price-box .special-price span.weee {
      color: #636363; }
      .product-view .product-shop .price-box .special-price span.weee span.price {
        font-size: 16px; }
    .product-view .product-shop .price-box .price-excluding-tax,
    .product-view .product-shop .price-box .price-including-tax {
      display: block;
      line-height: 1.2;
      color: #636363; }
      .product-view .product-shop .price-box .price-excluding-tax .label,
      .product-view .product-shop .price-box .price-including-tax .label {
        font-size: 16px;
        font-weight: 300; }
      .product-view .product-shop .price-box .price-excluding-tax .price,
      .product-view .product-shop .price-box .price-including-tax .price {
        font-size: 20px; }

.product-view .price-box.map-info a {
  display: inherit; }

.product-view .old-price .price-label {
  display: none; }

.product-view .add-to-cart-wrapper,
.product-view .block-related {
  width: 50%;
  float: right;
  clear: right; }

@media only screen and (max-width: 850px) {
  .product-view .product-shop .price-box .price-excluding-tax .label,
  .product-view .product-shop .price-box .price-including-tax .label {
    font-size: 15px; }
  .product-view .product-shop .price-box .price-excluding-tax .price,
  .product-view .product-shop .price-box .price-including-tax .price {
    font-size: 18px; } }

@media only screen and (max-width: 770px) {
  .product-view .add-to-cart-wrapper {
    float: none;
    width: 100%;
    clear: both; }
  .product-view .product-shop .price-box .price-excluding-tax .label,
  .product-view .product-shop .price-box .price-including-tax .label {
    font-size: 16px; }
  .product-view .product-shop .price-box .price-excluding-tax .price,
  .product-view .product-shop .price-box .price-including-tax .price {
    font-size: 20px; } }

@media only screen and (max-width: 420px) {
  .product-view .product-shop .price-box .price-excluding-tax,
  .product-view .product-shop .price-box .price-including-tax {
    margin-bottom: 5px; }
    .product-view .product-shop .price-box .price-excluding-tax span,
    .product-view .product-shop .price-box .price-including-tax span {
      display: block; }
  .product-view .product-img-box .product-image {
    margin: 0 0 1em 0;
    padding-left: 0; }
  .product-view .product-img-box .product-image-thumbs {
    position: relative;
    top: auto;
    left: auto;
    width: 100%; } }

.product-img-box {
  width: 50%;
  float: left; }
  .product-img-box .product-name h1 {
    border: 0; }
  .product-img-box .product-image {
    margin-bottom: 10px;
    margin-left: 15%;
    padding-left: 1em; }
    @media only screen and (max-width: 770px) {
      .product-img-box .product-image {
        margin-left: 0;
        padding-left: 0; } }
  .product-img-box .product-image img {
    max-width: 100%;
    max-height: 750px;
    margin: 0px auto; }

@media only screen and (max-width: 479px) {
  .product-img-box .product-image img {
    max-height: 450px; } }

.product-image-gallery {
  position: relative; }
  .product-image-gallery .gallery-image {
    display: none; }
    .product-image-gallery .gallery-image.visible {
      display: block; }
      .product-image-gallery .gallery-image.visible.hidden {
        visibility: hidden; }
  .product-image-gallery:before, .product-image-gallery:after {
    content: '';
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    display: none; }
  .product-image-gallery:before {
    background-color: white;
    opacity: 0.8;
    z-index: 2; }
  .product-image-gallery:after {
    background-image: url("../images/opc-ajax-loader.gif");
    background-repeat: no-repeat;
    background-position: center;
    z-index: 3; }
  .product-image-gallery.loading {
    position: relative; }
    .product-image-gallery.loading:before, .product-image-gallery.loading:after {
      display: block; }

.product-image-thumbs {
  position: absolute;
  top: 0;
  left: 0;
  width: 7.5%; }
  @media only screen and (max-width: 770px) {
    .product-image-thumbs {
      position: relative;
      width: 100%;
      text-align: center;
      margin-top: 1em; } }
  .product-image-thumbs li {
    display: inline-block; }
  .product-image-thumbs li:first-child {
    margin-left: -1px; }
  .product-image-thumbs a {
    display: inline-block;
    border: 1px solid transparent; }

.no-touch .product-image-thumbs a:hover {
  border-color: #c7c7c7; }

.product-view .product-shop,
.product-view .add-to-cart-wrapper,
.product-view .block-related {
  padding-left: 15px; }

.product-img-box {
  padding-right: 15px; }

.product-view .product-shop,
.product-img-box,
.product-collateral,
.product-view .block-related,
.box-collateral {
  margin-bottom: 10px; }

.product-view {
  /* Set a min-height so that the floated elements break appropriately */ }
  .product-view .add-to-box:after,
  .product-view .add-to-cart:after {
    content: '';
    display: table;
    clear: both; }
  .product-view .add-to-cart {
    padding-bottom: 3px;
    margin-bottom: 10px;
    border-bottom: 1px solid #CCCCCC; }
  .product-view .add-to-cart .qty-wrapper,
  .product-view .product-options-bottom .price-box,
  .product-view .add-to-cart-buttons {
    min-height: 40px; }
  .product-view .product-options-bottom .price-box,
  .product-view .add-to-cart .qty-wrapper,
  .product-view .add-to-cart-buttons .button,
  .product-view .add-to-cart-buttons .paypal-logo {
    margin-bottom: 10px; }
  .product-view .add-to-cart .qty-wrapper,
  .product-view .add-to-cart .qty-wrapper label {
    margin-right: 7px;
    float: left; }
  .product-view .add-to-cart .qty-wrapper label {
    line-height: 40px; }
  .product-view .add-to-cart .qty-wrapper .qty {
    float: left;
    height: 40px; }
  .product-view .add-to-cart-buttons {
    float: left;
    margin-right: 10px;
    max-width: 100%; }
    .product-view .add-to-cart-buttons .paypal-logo {
      clear: left;
      text-align: center; }
      .product-view .add-to-cart-buttons .paypal-logo .paypal-button {
        margin: 0 auto;
        display: block;
        width: 170px; }
      .product-view .add-to-cart-buttons .paypal-logo .bml_button {
        display: block;
        width: 174px;
        margin: 0 auto; }
        .product-view .add-to-cart-buttons .paypal-logo .bml_button a {
          text-align: center; }
      .product-view .add-to-cart-buttons .paypal-logo .paypal-or {
        display: block;
        margin-bottom: 10px;
        margin-left: 0;
        margin-right: 0;
        line-height: 1;
        text-align: center; }
  .product-view .add-to-cart-buttons .button {
    min-height: 40px;
    line-height: 40px;
    font-size: 16px;
    padding: 0px 30px;
    float: left;
    min-width: 160px;
    width: 100%;
    white-space: normal; }
  .product-view .alert-price,
  .product-view .alert-stock {
    clear: both; }

@media only screen and (max-width: 479px) {
  .product-view .add-to-cart-buttons .paypal-or {
    line-height: 20px; }
  .product-view .add-to-cart-buttons .paypal-logo,
  .product-view .add-to-cart-buttons .paypal-or,
  .product-view .add-to-cart-buttons .paypal-button,
  .product-view .add-to-cart-buttons .button {
    text-align: center;
    width: 100%;
    display: block;
    margin-right: 0;
    margin-left: 0;
    float: none; } }

/* This is the "or" that separates the "Add to Cart" and "Add to X" links */
.add-to-box .or {
  display: none; }

.product-view .add-to-links {
  clear: both;
  margin-top: 0px;
  margin-right: 15px;
  float: left; }
  .product-view .add-to-links:after {
    content: '';
    display: table;
    clear: both; }
  .product-view .add-to-links li {
    float: left; }
  .product-view .add-to-links a {
    padding: 2px 7px 2px 0px;
    margin-left: 7px;
    border-right: 1px solid #CCCCCC; }
  .product-view .add-to-links li:first-child a {
    margin-left: 0px; }
  .product-view .add-to-links li:last-child a {
    border-right: 0px; }

.product-view .sharing-links {
  float: left; }
  .product-view .sharing-links:after {
    content: '';
    display: table;
    clear: both; }
  .product-view .sharing-links li {
    float: left;
    padding: 0px 7px 7px; }
  .product-view .sharing-links a {
    text-indent: -9999px;
    display: block;
    width: 26px;
    height: 26px; }
  .product-view .sharing-links a:hover {
    opacity: 0.8; }
  .product-view .sharing-links a.link-wishlist {
    background-position: 0px -225px; }
  .product-view .sharing-links a.link-compare {
    background-position: 0px -250px; }
  .product-view .sharing-links a.link-email-friend {
    background-position: 0px -322px; }
  .product-view .sharing-links a.link-facebook {
    background-position: 0px -425px; }
  .product-view .sharing-links a.link-twitter {
    background-position: 0px -372px; }

@media only screen and (max-width: 599px) {
  .add-to-box .add-to-links a {
    float: none;
    width: auto;
    text-indent: 0; } }

.product-collateral {
  clear: both; }

.collateral-tabs dd h2 {
  display: none; }

.box-collateral {
  clear: both; }

@media only screen and (min-width: 771px) {
  .product-collateral .toggle-tabs {
    display: block;
    width: 100%;
    position: relative;
    border: 1px solid #CCCCCC;
    background-color: #F4F4F4; }
    .product-collateral .toggle-tabs li {
      float: left;
      border-right: 1px solid transparent;
      border-left: 1px solid transparent; }
      .product-collateral .toggle-tabs li > span {
        -moz-user-select: none;
        -ms-user-select: none;
        -webkit-user-select: none;
        -o-user-select: none;
        user-select: none;
        display: inline-block;
        padding: 0 30px;
        height: 40px;
        line-height: 40px;
        cursor: pointer;
        text-transform: uppercase;
        font-size: 12px;
        position: relative;
        bottom: -1px; }
    .product-collateral .toggle-tabs li.current {
      border-right: 1px solid #CCCCCC;
      border-left: 1px solid #CCCCCC; }
      .product-collateral .toggle-tabs li.current > span {
        background-color: #FFFFFF;
        z-index: 5; }
    .product-collateral .toggle-tabs li.current span,
    .product-collateral .toggle-tabs li:hover span {
      color: #fdb813; }
    .product-collateral .toggle-tabs li:first-child {
      border-left: none; }
    .product-collateral .toggle-tabs:after {
      content: '';
      display: table;
      clear: both; }
  .product-collateral > dl {
    width: 100%; }
    .product-collateral > dl > dt {
      display: none; }
    .product-collateral > dl > dd {
      width: 100%;
      display: none;
      padding: 15px;
      border: 1px solid #CCCCCC;
      border-top: 0; }
    .product-collateral > dl > dd.current {
      display: block; } }

@media only screen and (max-width: 770px) {
  .product-collateral .toggle-tabs {
    display: none; }
  .product-collateral > dl > dt {
    margin: 0;
    margin-bottom: 10px;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 14px;
    font-weight: bold;
    font-style: normal;
    line-height: 1.4;
    text-rendering: optimizeSpeed;
    -moz-user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
    -o-user-select: none;
    user-select: none;
    font-weight: normal;
    margin-bottom: 0px;
    padding: 7px 10px 7px 24px;
    border-width: 1px;
    border-style: solid;
    border-color: #CCCCCC;
    position: relative;
    background-color: #F4F4F4;
    display: block; }
    .product-collateral > dl > dt:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-right: 4px solid transparent;
      border-left: 4px solid transparent;
      border-top: 4px solid #fdb813;
      border-bottom: none;
      left: 10px;
      top: 50%;
      margin-top: -3px; }
    .product-collateral > dl > dt:hover {
      background-color: #ededed; }
  .product-collateral > dl > dd {
    padding: 10px;
    margin: 0;
    border-width: 0 1px;
    border-style: solid;
    border-color: #CCCCCC; }
  .product-collateral > dl > dd:last-child {
    border-width: 0 1px 1px 1px; }
  .product-collateral > dl > dt {
    cursor: pointer;
    border-bottom-width: 0; }
    .product-collateral > dl > dt:hover {
      color: #fdb813; }
    .product-collateral > dl > dt:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-top: 4px solid transparent;
      border-bottom: 4px solid transparent;
      border-left: 4px solid #fdb813;
      border-right: none; }
    .product-collateral > dl > dt.last {
      border-bottom-width: 1px; }
  .product-collateral > dl > dd {
    display: none; }
  .product-collateral.accordion-open > dl > dt.current {
    border-bottom-width: 1px; }
  .product-collateral.accordion-open > dl > dt.current:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
    border-top: 4px solid #fdb813;
    border-bottom: none;
    left: 6px;
    top: 50%;
    margin-top: -3px; }
  .product-collateral.accordion-open > dl > dd.current {
    display: block; } }

@media only screen and (max-width: 770px) {
  .product-view .product-shop,
  .product-view .add-to-cart-wrapper,
  .product-view .block-related,
  .product-img-box,
  .product-collateral {
    width: 100%;
    float: none;
    padding-right: 0;
    padding-left: 0; } }

@media only screen and (min-width: 771px) {
  .product-view .product-shop .product-name {
    display: block; }
  .product-img-box .product-name {
    display: none; } }

@media only screen and (max-width: 479px) {
  .product-view .product-shop,
  .product-img-box,
  .product-collateral,
  .product-view .block-related,
  .box-collateral {
    margin-bottom: 15px; } }

.product-view .ratings .rating-links {
  clear: left;
  float: left;
  margin-top: 0; }

#product-attribute-specs-table {
  max-width: 50em;
  border: 1px solid #C0C0C0; }
  #product-attribute-specs-table th {
    border-right: 1px solid #C0C0C0;
    border-bottom: 1px solid #C0C0C0; }

/* -------------------------------------------- *
 * Catalog - Grouped Product List
 */
.grouped-items-table-wrapper {
  border: solid 1px #C0C0C0;
  width: 100%;
  padding: 10px;
  margin-bottom: 15px; }
  .grouped-items-table-wrapper tbody tr:last-child td {
    border-bottom: none; }
  @media only screen and (max-width: 479px) {
    .grouped-items-table-wrapper {
      margin-bottom: 15px; } }

.grouped-items-table .name-wrapper {
  color: #fdb813;
  font-family: "Lato", sans-serif; }

.grouped-items-table .qty-wrapper {
  padding-top: 7px; }

.grouped-items-table .qty-label {
  margin-left: 7px; }

.grouped-items-table td {
  padding: 4px; }
  .grouped-items-table td:last-child {
    width: 30%;
    text-align: left; }

.grouped-items-table .price-box {
  text-align: right; }

/* -------------------------------------------- *
 * Catalog - Product Options
 */
.product-options {
  width: 100%;
  margin: 10px 0 0;
  padding: 10px 15px 15px;
  border: 1px solid #CCCCCC;
  clear: both;
  position: relative; }

.product-options p.required {
  position: absolute;
  top: 6px;
  right: 15px;
  text-align: right; }

@media only screen and (max-width: 979px) {
  .product-view .product-options .required {
    position: static; } }

.product-options dt {
  margin: 10px 0 3px;
  font-weight: normal; }

.product-options dt:first-child {
  margin-top: 0; }

.product-options dd .qty-holder {
  display: block;
  padding: 10px 0 0 0; }

.product-options dd .qty-holder .qty {
  width: 3em; }

.product-options dd .qty-holder label {
  vertical-align: middle; }

.product-options dd .qty-disabled {
  background: none;
  border: 0;
  padding: 0 2px; }

.product-options dd {
  padding: 0 0 10px 0;
  margin: 0 0 5px;
  border-bottom: 1px solid #EDEDED; }

.product-options dl.last dd.last {
  border-bottom: 0;
  padding-bottom: 5px;
  margin-bottom: 0; }

.product-options dd .input-text {
  width: 98%; }

.product-options dd .input-box {
  padding-top: 0; }

.product-options dd input.datetime-picker {
  width: 150px; }

.product-options dd .time-picker {
  display: inline-block;
  padding: 2px 0;
  vertical-align: middle; }

.product-options dd textarea {
  width: 98%;
  height: 8em; }

.product-options dd select {
  width: 330px;
  max-width: 100%; }

.product-options ul.options-list {
  margin-right: 5px; }

.product-options ul.options-list li {
  line-height: 1.5;
  margin-bottom: 7px; }

.product-options ul.options-list li:last-child {
  margin-bottom: 0; }

.product-options ul.options-list .radio,
.product-options ul.options-list .checkbox {
  float: left;
  margin-top: 5px; }

.product-options ul.options-list .label {
  display: block; }

.product-options ul.options-list label {
  font-weight: normal; }

.product-options p.note {
  margin: 0;
  font-size: 11px; }

.product-options-bottom {
  background-color: #F4F4F4;
  padding: 15px 20px;
  border: 1px solid #CCCCCC;
  border-top: 0;
  margin-bottom: 10px; }

.product-options-bottom:after {
  content: '';
  display: table;
  clear: both; }

.product-options-bottom .product-pricing,
.product-options-bottom .tier-prices {
  float: right;
  margin: 0;
  padding: 0 0 10px;
  border: 0;
  background: 0;
  color: #636363; }
  @media only screen and (max-width: 1199px) {
    .product-options-bottom .product-pricing,
    .product-options-bottom .tier-prices {
      float: none;
      width: 100%;
      text-align: right;
      padding-bottom: 5px;
      margin-bottom: 10px;
      border-bottom: 1px solid #CCCCCC; } }

.product-options-bottom .tier-prices li {
  background: 0;
  padding: 2px 0; }

.product-options-bottom .tier-prices .price,
.product-options-bottom .tier-prices .benefit {
  color: #636363; }

/* "display: none" should be removed if products on site have a long list of product options and those product options */
/*  affect the price so that the customer can see the updated price close to the "Add to Cart" button */
.product-options-bottom .price-box {
  display: none;
  float: right;
  margin: 0 0 10px;
  padding: 0; }

@media only screen and (max-width: 479px) {
  .product-options-bottom .price-box .price-as-configured {
    text-align: right; }
    .product-options-bottom .price-box .price-as-configured .price-label {
      display: block; } }

.product-options-bottom .price-tax {
  float: left; }

/* -------------------------------------------- *
 * Related Products
 */
/* Block: Related */
.block-related li {
  margin-bottom: 7px; }

.block-related .block-title {
  border-bottom: none; }
  .block-related .block-title h2 {
    margin: 0;
    margin-bottom: 0.5em;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 24px;
    font-weight: 400;
    font-style: normal;
    line-height: 1.2;
    text-rendering: optimizeLegibility;
    margin-bottom: 0; }

.block-related .block-subtitle {
  margin-bottom: 7px; }

.block-related .product {
  margin-left: 20px;
  position: relative; }

.block-related .checkbox {
  float: left;
  margin-top: 36px; }

.block-related .product-details {
  margin-left: 90px; }

.block-related .product-name {
  margin-bottom: 3px; }

.block-related .product-details .price-box {
  margin: 2px 0 3px; }
  .block-related .product-details .price-box a,
  .block-related .product-details .price-box p,
  .block-related .product-details .price-box span {
    float: left;
    margin-left: 3px; }
    .block-related .product-details .price-box a:first-child,
    .block-related .product-details .price-box p:first-child,
    .block-related .product-details .price-box span:first-child {
      margin-left: 0;
      font-size: 16px;
      padding-right: 5px;
      padding-left: 5px; }
  .block-related .product-details .price-box:after {
    content: '';
    display: table;
    clear: both; }

.block-related .link-wishlist {
  display: none; }

/* -------------------------------------------- *
 * Upsell Products
 */
.box-up-sell {
  margin-top: 20px; }
  .box-up-sell .ratings {
    display: none; }

/* ============================================ *
 * Catalog - MSRP MAP Popup
 * ============================================ */
.cart-msrp-totals {
  color: red;
  font-size: 12px !important;
  font-weight: bold;
  margin: 10px 10px 0;
  padding: 10px;
  text-align: right;
  text-transform: uppercase; }

.map-cart-sidebar-total {
  color: red;
  display: block;
  font-size: 10px;
  font-weight: bold;
  text-align: left;
  padding: 2px 5px; }

.map-popup {
  background: #FFFFFF;
  border: 5px solid #CCCCCC;
  margin: 12px 0 0;
  position: absolute;
  text-align: left;
  width: 450px;
  z-index: 100; }
  @media only screen and (min-width: 771px) {
    .map-popup.map-popup-right {
      left: 10px !important; }
    .map-popup.map-popup-left {
      left: auto !important;
      right: 10px !important; } }
  @media only screen and (max-width: 770px) {
    .map-popup {
      width: 100%;
      left: 0px !important; } }
  .map-popup .map-popup-heading {
    padding: 8px 10px;
    margin-right: 40px;
    width: auto; }
    .map-popup .map-popup-heading h3 {
      font-size: 14px;
      margin: 0;
      overflow: hidden;
      white-space: nowrap;
      word-wrap: break-word;
      text-align: left;
      text-overflow: ellipsis; }
      @media only screen and (max-width: 479px) {
        .map-popup .map-popup-heading h3 {
          text-align: center; } }
  .map-popup .map-popup-close {
    display: block;
    position: absolute;
    top: 0px;
    right: 0px;
    height: 36px;
    width: 36px;
    font-size: 20px;
    line-height: 32px;
    text-align: center; }
  .map-popup .map-popup-content {
    border-top: 1px solid #EDEDED;
    padding: 10px;
    margin: 0 10px;
    overflow: hidden;
    text-align: left; }
    @media only screen and (max-width: 479px) {
      .map-popup .map-popup-content {
        text-align: center; } }
  .map-popup .map-popup-checkout {
    padding: 10px 0; }
    .map-popup .map-popup-checkout form:after {
      content: '';
      display: table;
      clear: both; }
    .map-popup .map-popup-checkout span {
      display: block; }
    .map-popup .map-popup-checkout .button {
      float: left;
      margin: 0 2px;
      clear: left; }
    .map-popup .map-popup-checkout .additional-addtocart-box {
      float: left;
      min-width: 210px; }
      .map-popup .map-popup-checkout .additional-addtocart-box li {
        list-style-type: none; }
    .map-popup .map-popup-checkout .paypal-logo {
      width: auto; }
      .map-popup .map-popup-checkout .paypal-logo a {
        display: inline-block;
        float: left;
        clear: left; }
      .map-popup .map-popup-checkout .paypal-logo .paypal-or {
        float: left;
        text-align: center;
        padding: 5px 15px;
        clear: left; }
      .map-popup .map-popup-checkout .paypal-logo:after {
        content: '';
        display: table;
        clear: both; }
      .map-popup .map-popup-checkout .paypal-logo .bml_button a {
        clear: left; }
    @media only screen and (max-width: 479px) {
      .map-popup .map-popup-checkout {
        text-align: center; }
        .map-popup .map-popup-checkout .button,
        .map-popup .map-popup-checkout .additional-addtocart-box,
        .map-popup .map-popup-checkout .paypal-logo a,
        .map-popup .map-popup-checkout .paypal-logo .paypal-or {
          float: none; }
        .map-popup .map-popup-checkout .additional-addtocart-box {
          min-width: 0px; }
        .map-popup .map-popup-checkout .paypal-logo .paypal-or {
          margin: 0px;
          margin-bottom: 10px; } }
    .map-popup .map-popup-checkout:after {
      content: '';
      display: table;
      clear: both; }
  .map-popup .map-popup-price {
    padding: 10px 0; }
    @media only screen and (max-width: 479px) {
      .map-popup .map-popup-price {
        text-align: center;
        padding-top: 0px; } }
    .map-popup .map-popup-price .price-box,
    .map-popup .map-popup-price .price-box .special-price {
      display: inline-block;
      margin: 0;
      padding: 0; }
    .map-popup .map-popup-price .price-box .minimal-price-link {
      display: inline-block; }
  .map-popup .map-popup-text {
    padding: 10px 0;
    margin: 0 10px;
    word-wrap: break-word; }
  .map-popup .map-popup-text,
  .map-popup .map-popup-only-text {
    border-top: 1px solid #EDEDED; }

/* ============================================ *
 * Catalog - MSRP Product Listing
 * ============================================ */
.price-box .map-link {
  display: block;
  text-align: center; }

/* ============================================ *
 * Catalog - Compare
 * ============================================ */
.block-compare .product-name:after {
  content: '';
  display: table;
  clear: both; }

.compare-table .product-image {
  display: inline-block; }

.compare-table .product-shop-row.top td {
  padding-bottom: 0;
  border-bottom: 0; }

.compare-table .product-shop-row.bottom td {
  padding-top: 0; }

/* ============================================ *
 * Checkout - Layout
 * ============================================ */
.cart-table {
  float: left;
  width: 60%; }

.cart .button {
  white-space: normal; }

.cart-forms,
.cart-totals-wrapper,
.crosssell {
  float: right;
  clear: right;
  width: 40%;
  padding-left: 20px; }

.cart-totals,
.cart-forms .discount,
.cart-forms .giftcard,
.cart-forms .shipping {
  padding: 10px;
  background-color: #F4F4F4;
  border: 1px solid #CCCCCC; }

.cart-table,
.cart-totals,
.cart-forms .discount,
.cart-forms .giftcard,
.cart-forms .shipping {
  margin-bottom: 20px; }

.checkout-cart-index #postcode {
  width: 100%; }

.display-both-prices .cart-table {
  float: none;
  width: 100%; }

.display-both-prices .cart-forms {
  float: left;
  padding-right: 10px;
  padding-left: 0; }

.display-both-prices .cart-totals-wrapper,
.display-both-prices .crosssell {
  padding-left: 10px; }

.display-both-prices .cart-forms,
.display-both-prices .cart-totals-wrapper,
.display-both-prices .crosssell {
  width: 50%; }

.display-both-prices .crosssell {
  clear: right;
  float: right; }

@media only screen and (max-width: 979px) {
  .display-single-price .cart-table {
    float: none;
    width: 100%; }
  .display-single-price .cart-forms {
    float: left;
    padding-right: 10px;
    padding-left: 0; }
  .display-single-price .cart-totals-wrapper,
  .display-single-price .crosssell {
    padding-left: 10px; }
  .display-single-price .cart-forms,
  .display-single-price .cart-totals-wrapper,
  .display-single-price .crosssell {
    width: 50%; }
  .display-single-price .crosssell {
    clear: right;
    float: right; } }

@media only screen and (max-width: 599px) {
  .product-cart-sku {
    display: none; }
  .display-both-prices .cart-forms,
  .display-both-prices .cart-totals-wrapper,
  .display-both-prices .crosssell,
  .display-single-price .cart-forms,
  .display-single-price .cart-totals-wrapper,
  .display-single-price .crosssell {
    padding-top: 0;
    padding-left: 0;
    padding-right: 0;
    float: none;
    width: 100%; } }

.display-single-price:after {
  content: '';
  display: table;
  clear: both; }

/* ============================================ *
 * Checkout - Cart
 * ============================================ */
.cart .page-title {
  margin-bottom: 15px;
  border-bottom: 1px solid #EDEDED; }
  .cart .page-title:after {
    content: '';
    display: table;
    clear: both; }
  .cart .page-title h1 {
    float: left;
    border-bottom: none;
    margin-bottom: 6px;
    margin-right: 10px; }

.checkout-types {
  float: right;
  text-align: right;
  max-width: 100%;
  /* We always want this shipping method to display on its own line */ }
  .checkout-types li {
    vertical-align: top;
    margin: 0 0 5px 5px; }
    .checkout-types li:after {
      content: '';
      display: table;
      clear: both; }
    .checkout-types li img {
      display: inline;
      vertical-align: top; }
  .checkout-types li:first-child {
    margin-left: 0; }
  .checkout-types .method-checkout-cart-methods-multishipping {
    display: block; }
  .checkout-types.top li {
    display: inline-block; }
  .checkout-types.top .bml_button {
    display: inline-block;
    vertical-align: top; }
    .checkout-types.top .bml_button img {
      display: block; }
  .checkout-types.top .paypal-logo .paypal-or {
    margin-top: 5px; }
  .checkout-types.bottom .paypal-logo a, .checkout-types.minicart .paypal-logo a {
    display: block; }
  .checkout-types.bottom .paypal-or, .checkout-types.minicart .paypal-or {
    margin: 0px;
    display: block;
    text-align: center; }

@media only screen and (min-width: 741px) {
  .checkout-types.bottom .paypal-or {
    text-align: right;
    padding-right: 70px; } }

.cart-totals .checkout-types .btn-checkout {
  margin-bottom: 7px; }

@media only screen and (max-width: 740px) {
  .checkout-types {
    float: none;
    text-align: center; }
    .checkout-types.bottom .paypal-or, .checkout-types.minicart .paypal-or {
      width: auto;
      float: none; }
  .checkout-types li {
    float: none;
    width: 100%;
    margin-left: 0; } }

@media only screen and (max-width: 599px) {
  .btn-checkout {
    width: 100%; } }

.cart-table {
  font-family: "Lato", sans-serif; }
  .cart-table th,
  .cart-table td,
  .cart-table tbody td {
    border-bottom: none;
    vertical-align: top; }
  .cart-table h2 {
    color: #f7b340;
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 0; }
  .cart-table thead th,
  .cart-table tbody td {
    background-color: transparent;
    padding: 10px 5px;
    font-family: "Lato", sans-serif; }
  .cart-table .product-cart-info,
  .cart-table .product-cart-actions {
    padding-left: 15px; }
  .cart-table tr {
    border-bottom: 1px solid #C0C0C0; }
  .cart-table tfoot tr {
    background: none; }
  .cart-table tfoot tr > td:after {
    content: '';
    display: table;
    clear: both; }
  .cart-table span.or {
    font-size: 9px;
    padding: 0 5px;
    text-transform: uppercase;
    font-family: "Lato", sans-serif; }
  .cart-table .product-cart-image .cart-links,
  .cart-table .product-cart-info .btn-remove,
  .cart-table .product-cart-actions .button {
    display: none; }
  .cart-table .product-cart-image {
    padding-left: 0;
    padding-right: 0; }
    .cart-table .product-cart-image .product-image img {
      max-width: 100%;
      width: 100%; }
    .cart-table .product-cart-image a.cart-edit {
      display: none; }
  .cart-table .product-cart-sku {
    font-family: "Lato", sans-serif;
    font-style: italic;
    font-size: 12px;
    margin: 5px 0 12px; }
    .cart-table .product-cart-sku .label {
      font-weight: 600; }
  .cart-table .btn-empty {
    float: left; }
  .cart-table .product-cart-total,
  .cart-table .product-cart-price {
    text-align: center; }
  .cart-table .cart-tax-total {
    position: relative;
    cursor: pointer; }
    .cart-table .cart-tax-total:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-top: 6px solid transparent;
      border-bottom: 6px solid transparent;
      border-right: 6px solid #fdb813;
      border-left: none;
      position: absolute;
      top: 3px;
      right: -11px; }
    .cart-table .cart-tax-total.cart-tax-total-expanded:after {
      content: '';
      position: absolute;
      width: 0;
      height: 0;
      display: block;
      border-right: 6px solid transparent;
      border-left: 6px solid transparent;
      border-top: 6px solid #fdb813;
      border-bottom: none;
      right: -15px;
      top: 6px; }
  .cart-table .cart-links > li {
    white-space: nowrap;
    line-height: 1.3;
    margin-bottom: 5px;
    min-width: 65px;
    font-size: 13px; }
    .cart-table .cart-links > li > a {
      display: block; }
    .cart-table .cart-links > li:last-child {
      margin-bottom: 0; }
  .cart-table .product-cart-actions {
    min-width: 60px;
    text-align: center; }
    .cart-table .product-cart-actions .qty {
      height: 30px;
      border-color: #C0C0C0;
      border-radius: 0;
      margin-bottom: 10px;
      text-align: center;
      width: 3.2em; }
    .cart-table .product-cart-actions .button {
      margin-bottom: 5px; }
  .cart-table .item-options {
    padding-left: 15px; }

@media only screen and (max-width: 770px) {
  .cart-table th {
    font-size: 12px; }
  .cart-table th,
  .cart-table td {
    padding: 7px 6px; }
  .cart-table .product-cart-actions > li {
    white-space: inherit; } }

@media only screen and (max-width: 699px) {
  .display-both-prices .cart-table thead th.cart-total-head,
  .display-both-prices .cart-table td.product-cart-total {
    display: none; } }

@media only screen and (max-width: 599px) {
  .cart-table colgroup, .cart-table thead {
    display: none; }
  .cart-table tr {
    display: block;
    margin-bottom: 10px;
    padding-bottom: 10px;
    position: relative;
    width: 100%; }
    .cart-table tr:after {
      content: '';
      display: table;
      clear: both; }
    .cart-table tr:last-child {
      margin-bottom: 0; }
  .cart-table tfoot tr {
    padding-bottom: 0; }
  .cart-table td {
    border: none;
    display: block; }
    .cart-table td[data-rwd-label] {
      padding-left: 15px;
      margin-bottom: 6px; }
      .cart-table td[data-rwd-label] .price {
        font-weight: normal; }
      .cart-table td[data-rwd-label]:before {
        content: attr(data-rwd-label) ":";
        font-size: 12px;
        font-family: "Lato", sans-serif;
        padding-right: 5px;
        text-transform: uppercase; }
    .cart-table td.product-cart-price {
      text-align: left; }
  .cart-table h2 {
    font-size: 12px; }
  .cart-table .cart-links {
    padding-top: 5px;
    padding-right: 5px; }
    .cart-table .cart-links > li {
      white-space: normal;
      text-align: center; }
      .cart-table .cart-links > li > a {
        padding: 2px 0px; }
  .cart-table .cart-tax-info {
    font-style: italic;
    padding-left: 15px;
    font-size: 13px; }
    .cart-table .cart-tax-info .price {
      font-size: 13px; }
  .cart-table .product-cart-image {
    width: 25%;
    float: left;
    padding-bottom: 0; }
    .cart-table .product-cart-image a.cart-edit {
      display: block;
      font-size: 16px;
      text-align: center;
      text-transform: uppercase; }
  .cart-table .product-cart-info,
  .cart-table td[data-rwd-label] {
    float: right;
    width: 75%; }
  .cart-table .product-cart-actions,
  .cart-table .product-cart-price {
    padding-bottom: 0;
    padding-top: 0;
    float: right; }
  .cart-table .product-cart-remove,
  .cart-table .product-cart-total,
  .cart-table .product-cart-actions .cart-links {
    display: none; }
  .cart-table .product-cart-image .cart-links,
  .cart-table .product-cart-info .btn-remove {
    display: block; }
  .cart-table .product-cart-actions .button {
    display: none; }
  .cart-table .product-cart-info .btn-remove {
    float: right;
    margin: -4px 0px 2px 7px; }
  .cart-table .product-cart-info .product-cart-sku {
    margin-bottom: 5px; }
  .cart-table .product-cart-actions {
    text-align: left; }
    .cart-table .product-cart-actions .qty {
      margin-right: 7px;
      margin-bottom: 7px; }
  .cart-table .price,
  .cart-table .product-cart-price:before {
    font-weight: 500;
    font-size: 15px;
    font-family: "Lato", sans-serif; }
  .cart-table .cart-footer-actions {
    text-align: center;
    width: 100%; }
    .cart-table .cart-footer-actions #empty_cart_button {
      float: right; }
    .cart-table .cart-footer-actions .btn-continue {
      float: left; }
    .cart-table .cart-footer-actions .btn-update,
    .cart-table .cart-footer-actions span.or {
      display: none; }
  .display-both-prices .cart-table td[data-rwd-tax-label]:before {
    content: attr(data-rwd-tax-label) ":"; } }

/* ============================================ *
 * Checkout - Estimate Shipping and Tax
 * ============================================ */
.shipping h2 {
  font-size: 12px;
  font-weight: bold;
  margin: 0 0 5px; }

.shipping select {
  max-width: 100%;
  height: 30px;
  display: block;
  border: 1px solid #C0C0C0; }

.shipping select.validation-failed {
  border-color: #DF280A; }

.shipping .shipping-desc {
  display: none; }

.shipping .buttons-set {
  border: none;
  margin: 0;
  padding: 0; }

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

.shipping .form-list li {
  float: left;
  margin: 5px 2% 10px 0; }

.shipping .form-list .shipping-country {
  width: 37%; }

.shipping .form-list .shipping-region {
  width: 41%; }

.shipping .form-list .shipping-postcode {
  margin-right: 0;
  width: 18%; }
  .shipping .form-list .shipping-postcode input {
    margin-top: 4px; }

.shipping .form-list .input-box {
  padding-top: 0; }

.shipping .form-list input {
  height: 30px;
  margin-top: 4px; }

.shipping .form-list label {
  font-family: "Lato", sans-serif;
  font-size: 13px;
  font-weight: 400;
  text-transform: uppercase;
  white-space: nowrap; }

.shipping .sp-methods {
  padding: 10px 0 0;
  text-align: left; }
  .shipping .sp-methods dd {
    margin-bottom: 10px; }
  .shipping .sp-methods label {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    font-style: italic;
    min-width: 100px; }
    .shipping .sp-methods label span {
      font-family: "Lato", sans-serif;
      font-weight: bold;
      font-style: normal; }

.shipping #co-shipping-method-form .buttons-set .button {
  float: left;
  margin-left: 0; }

.shipping #co-shipping-method-form .sp-methods dd label {
  border: 1px solid #CCCCCC;
  background-color: #ededed;
  min-width: 220px; }
  .shipping #co-shipping-method-form .sp-methods dd label:hover {
    background-color: gainsboro; }

@media only screen and (max-width: 770px) {
  .shipping .shipping-form .form-list > li {
    width: 100%;
    float: none; }
    .shipping .shipping-form .form-list > li label {
      display: block; }
    .shipping .shipping-form .form-list > li input,
    .shipping .shipping-form .form-list > li select {
      width: 100%; } }

.cart .cart-totals {
  text-align: right; }
  .cart .cart-totals:after {
    content: '';
    display: table;
    clear: both; }
  .cart .cart-totals table {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    margin-bottom: 20px;
    text-transform: uppercase;
    width: 100%; }
    .cart .cart-totals table td {
      padding: 2px 0px; }
    .cart .cart-totals table td:first-child {
      padding-right: 10px;
      min-width: 120px; }
    .cart .cart-totals table tbody tr:last-child td,
    .cart .cart-totals table tbody tr:last-child th {
      padding-bottom: 10px; }
    .cart .cart-totals table tfoot {
      border-top: 1px solid #E6E6E6;
      border-bottom: 1px solid #E6E6E6; }
      .cart .cart-totals table tfoot td {
        font-size: 24px;
        padding: 2px 5px;
        vertical-align: top; }
      .cart .cart-totals table tfoot strong span,
      .cart .cart-totals table tfoot span.price {
        font-family: "Lato", sans-serif; }
      .cart .cart-totals table tfoot strong {
        font-weight: 400; }

@media only screen and (max-width: 600px) {
  .cart-totals {
    text-align: right; } }

@media only screen and (max-width: 770px) {
  .cart .cart-totals table tfoot td {
    font-size: 18px; } }

.discount-form:after,
#giftcard-form:after {
  content: '';
  display: table;
  clear: both; }

#discount-coupon-form,
.cart .giftcard {
  width: 100%; }
  #discount-coupon-form h2,
  .cart .giftcard h2 {
    display: none; }
  #discount-coupon-form label,
  .cart .giftcard label {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    font-weight: 400;
    text-align: left;
    text-transform: uppercase;
    min-width: 105px;
    display: inline-block;
    margin-right: 10px; }
  #discount-coupon-form .field-wrapper,
  .cart .giftcard .field-wrapper {
    display: inline-block; }
  #discount-coupon-form .validation-advice,
  .cart .giftcard .validation-advice {
    display: inline; }
  #discount-coupon-form .button-wrapper,
  .cart .giftcard .button-wrapper {
    display: inline-block;
    vertical-align: bottom; }
    #discount-coupon-form .button-wrapper > button,
    .cart .giftcard .button-wrapper > button {
      float: left; }
  #discount-coupon-form .input-text,
  .cart .giftcard .input-text {
    border-radius: 0;
    height: 30px;
    margin: 4px 10px 0 0;
    width: 190px; }

.cart .giftcard p {
  margin-bottom: 7px; }

.cart .giftcard .check-gc-status {
  float: left;
  padding: 0px; }
  .cart .giftcard .check-gc-status > span > span {
    font-size: 14px;
    text-transform: none; }

/* ============================================ *
 * Checkout - Cart Cross sell
 * ============================================ */
.crosssell h2 {
  color: #fdb813; }

.crosssell .item a.product-image {
  width: auto;
  float: left; }

/* Change the layout to 2 columns at a breakpoint that is higher than a 3 columns layout would normally break */
@media only screen and (max-width: 979px) {
  .crosssell {
    /* Undo three-column config */ }
    .crosssell .products-grid > li:nth-child(even),
    .crosssell .products-grid > li:nth-child(3n),
    .crosssell .products-grid > li {
      width: 47.72727%;
      margin-right: 4.54545%; }
    .crosssell .products-grid > li:nth-child(odd) {
      clear: left; }
    .crosssell .products-grid > li:nth-child(even) {
      margin-right: 0; }
    .crosssell .products-grid > li:nth-child(3n+1) {
      clear: none; } }

@media only screen and (max-width: 599px) {
  .cart-table .cart-tax-total:after {
    right: -9px; }
  .cart-table .cart-tax-total.cart-tax-total-expanded:after {
    right: -13px; } }

@media only screen and (max-width: 320px) {
  .crosssell ul .item {
    padding: 0 0px 40px; }
  .crosssell ul .product-details .crosssell-actions {
    padding: 0 5px; } }

/* ============================================ *
 * Checkout - One Page
 * ============================================ */
.checkout-onepage-index .col-right,
.checkout-onepage-index .col-left {
  display: none; }

.checkout-onepage-index .col-main {
  width: auto;
  float: none; }

@media only screen and (min-width: 980px) {
  .checkout-onepage-index .col-main {
    float: left;
    width: 68.75%;
    padding-right: 20px; }
  .checkout-onepage-index .col-right,
  .checkout-onepage-index .col-left {
    width: 31.25%;
    display: block; }
  .checkout-onepage-index .col-right {
    padding-left: 0; } }

.opc select {
  width: 365px; }

/* -------------------------------------------- *
 * Section Styling - Default
 */
.opc .section .step-title {
  width: 100%;
  border-top: 1px solid #ECECEC;
  position: relative;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none; }
  .opc .section .step-title:after {
    content: '';
    display: table;
    clear: both; }

.opc .section.allow:not(.active) .step-title {
  cursor: pointer; }

/* Using .no-touch since touch devices emulate hover, thereby making steps look active that are not */
.no-touch .opc .section.allow:not(.active) .step-title:hover {
  background-color: #F4F4F4; }

.opc .section.active .step-title {
  border-bottom: 1px solid #ECECEC; }

.opc .section .step-title a {
  display: none; }

.opc .section.allow:not(.active) .step-title a {
  display: block;
  float: right;
  line-height: 40px;
  height: 40px;
  padding: 0px 10px; }

.no-touch .opc .section .step-title a:hover {
  text-decoration: none; }

.opc .section .step-title .number,
.opc .section.allow.active .step-title .number,
.no-touch .opc .section.allow:hover .step-title .number {
  width: 26px;
  height: 26px;
  text-align: center;
  color: #FFFFFF;
  line-height: 26px;
  background-color: #fdb813;
  display: block;
  position: absolute;
  top: 50%;
  left: 10px;
  margin-top: -13px; }

.opc .section.allow .step-title .number {
  background-color: #fedc89; }

.opc .section.allow .step-title h2 {
  color: #A0A0A0; }

.opc .section.allow .step-title:hover h2,
.opc .section.active .step-title h2 {
  color: #fdb813; }

.opc .section .step-title h2 {
  font-size: 16px;
  font-weight: 400;
  line-height: 40px;
  height: 40px;
  float: left;
  margin: 0px 4px 0px 45px; }

.opc .section .step {
  padding: 20px; }
  .opc .section .step:after {
    content: '';
    display: table;
    clear: both; }
  @media only screen and (max-width: 979px) {
    .opc .section .step {
      padding: 10px; } }

.opc select {
  max-width: 365px;
  width: 100%; }

.opc h3 {
  font-weight: 500; }

.opc .buttons-set {
  text-align: left; }
  .opc .buttons-set button.button {
    float: left;
    margin-left: 0;
    margin-right: 10px;
    margin-bottom: 0; }
  .opc .buttons-set p.required {
    float: right;
    margin-left: 5px;
    margin-bottom: 0; }
  .opc .buttons-set .back-link {
    float: right;
    margin: 0; }
  .opc .buttons-set a {
    line-height: 20px;
    display: inline-block;
    padding: 5px 5px 5px 0; }

@media only screen and (max-width: 479px) {
  .opc .buttons-set .button + .buttons-set .button,
  .paypal-express-review .buttons-set .button + .buttons-set .button {
    margin-left: 0; } }

.opc #opc-login .step {
  padding: 0px; }

.opc #opc-login .buttons-set {
  border-top: 0;
  padding-top: 5px; }

@media only screen and (max-width: 770px) {
  .opc #opc-login .description,
  .opc #opc-login p.required {
    display: none; } }

#opc-payment .note {
  padding: 10px; }

/* -------------------------------------------- *
 * This section hides everything but the "Checkout Method" step of the checkout process and fades in the content
 * once the customer progresses to the next step. The purpose of this is to simplify what the customer has to focus on.
 * It is limited to larger viewports since smaller devices are inherently going to be focused solely on the
 * "Checkout Method" step.
 */
.opc.opc-firststep-login .section:not(#opc-login) .step-title,
.opc-block-progress-step-login {
  -webkit-transition: opacity 300ms linear 0;
  -moz-transition: opacity 300ms linear 0;
  transition: opacity 300ms linear 0; }

.opc.opc-firststep-login .section#opc-login .step-title .number {
  -webkit-transition: width 80ms linear 0;
  -moz-transition: width 80ms linear 0;
  transition: width 80ms linear 0; }

.opc.opc-firststep-login .section#opc-login .step-title h2 {
  -webkit-transition: margin-left 80ms linear 0;
  -moz-transition: margin-left 80ms linear 0;
  transition: margin-left 80ms linear 0; }

/* When a user progresses from the "Checkout Method" to "Billing Information" for the first time, the              */
/* "opc-has-progressed-from-login" class gets added to the body. Also, the .opc element will only have the         */
/* "opc-firststep-login" class if the first step of the checkout is the "Checkout Method" (eg, not when logged in) */
body:not(.opc-has-progressed-from-login) .opc.opc-firststep-login .section:not(#opc-login) .step-title,
body:not(.opc-has-progressed-from-login) .opc-block-progress-step-login {
  opacity: 0; }

body:not(.opc-has-progressed-from-login) .opc.opc-firststep-login .section#opc-login .step-title .number {
  width: 0px;
  overflow: hidden; }

body:not(.opc-has-progressed-from-login) .opc.opc-firststep-login .section#opc-login .step-title h2 {
  margin-left: 0px; }

/* -------------------------------------------- *
 * Shipping and Payment methods
 */
.sp-methods {
  margin: 0 0 8px; }
  .sp-methods dt {
    margin: 13px 0 5px;
    font-weight: bold; }
    .sp-methods dt:first-child {
      margin: 0 0 5px; }
  .sp-methods dd li {
    margin: 5px 0; }
  .sp-methods label img {
    float: left; }
  .sp-methods label a {
    margin-top: 6px;
    float: right;
    margin-left: 10px; }
  .sp-methods .price {
    font-weight: bold; }
  .sp-methods .form-list {
    padding-left: 20px; }
    .sp-methods .form-list li {
      margin: 0 0 8px; }
  .sp-methods select.month {
    width: 120px;
    margin-right: 10px; }
  .sp-methods select.year {
    width: 96px; }
  .sp-methods input.cvv {
    width: 4em !important; }
  .sp-methods #advice-validate-cc-exp-ccsave_expiration {
    max-width: 130px; }
  .sp-methods .checkmo-list li {
    margin: 0 0 5px;
    content: '';
    display: table;
    clear: both; }
  .sp-methods .checkmo-list label {
    width: 165px;
    padding-right: 15px;
    text-align: right;
    float: left; }
  .sp-methods .checkmo-list address {
    float: left; }
  @media only screen and (max-width: 479px) {
    .sp-methods .checkmo-list {
      padding-left: 0; }
      .sp-methods .checkmo-list label {
        width: 135px; } }
  .sp-methods .release-amounts {
    margin: 0.5em 0; }
  .sp-methods .release-amounts button {
    float: left;
    margin: 5px 10px 0 0; }

/* One Page Checkout */
.block-progress {
  border: 0;
  margin: 0;
  border-left: 1px solid #CCCCCC;
  padding-left: 20px; }
  .block-progress .block-content {
    font-size: 13px; }
  .block-progress dt {
    padding-top: 6px;
    margin: 0;
    margin-bottom: 10px;
    color: #f7b340;
    font-family: "Lato", sans-serif;
    font-size: 14px;
    font-weight: bold;
    font-style: normal;
    line-height: 1.4;
    text-rendering: optimizeSpeed;
    margin-bottom: 6px;
    text-transform: uppercase;
    font-weight: normal;
    color: #A0A0A0; }
  .block-progress dt.complete {
    color: #f7b340; }
  .block-progress dd {
    padding-left: 15px;
    margin-bottom: 10px;
    font-family: "Lato", sans-serif;
    font-style: italic; }
    .block-progress dd address {
      font-style: italic; }
  .block-progress #payment-progress-opcheckout .subtitle {
    margin-bottom: 3px; }
  .block-progress .payment-info dt {
    padding: 0;
    margin: 0 0 3px 0;
    color: #636363;
    font-family: "Lato", sans-serif;
    text-transform: none;
    font-style: italic;
    float: left;
    clear: both;
    font-size: 13px; }
    .block-progress .payment-info dt:after {
      content: ': '; }
  .block-progress .payment-info dd {
    float: left;
    margin-bottom: 3px;
    font-size: 13px; }
  .block-progress .payment-info:after {
    content: '';
    display: table;
    clear: both; }

/* review step */
#checkout-review-table .btn-remove img {
  display: none; }

#checkout-review-table-wrapper {
  clear: both; }

#review-buttons-container {
  width: 100%;
  margin-top: 15px;
  margin-bottom: 15px; }
  #review-buttons-container .btn-checkout {
    min-width: 220px; }
  #review-buttons-container .please-wait {
    float: left;
    margin-right: 10px; }
  #review-buttons-container .f-left {
    float: right; }

@media only screen and (max-width: 599px) {
  .linearize-table-large.checkout-review-table thead tr:nth-child(1n+2) {
    display: none; } }

@media only screen and (max-width: 479px) {
  .linearize-table.checkout-review-table thead tr:nth-child(1n+2) {
    display: none; } }

/* show/hide "change" link for progress step depend on complete status
 * should be placed in .css file */
.opc-block-progress dt.complete a,
.opc-block-progress dt.complete .separator {
  display: inline; }

.opc-block-progress dt a,
.opc-block-progress dt .separator {
  display: none; }

/* On small screens, the progress review content will be moved to the review step via JS. Styled via this CSS: */
#checkout-step-review .opc-block-progress {
  border-left: none;
  padding-left: 0; }
  #checkout-step-review .opc-block-progress .block-title {
    display: none; }
  #checkout-step-review .opc-block-progress .block-content {
    display: block !important;
    padding: 0; }
    #checkout-step-review .opc-block-progress .block-content > dl > div {
      float: left;
      width: 50%; }
    @media only screen and (max-width: 479px) {
      #checkout-step-review .opc-block-progress .block-content > dl > div {
        float: none;
        width: auto; } }
    #checkout-step-review .opc-block-progress .block-content .changelink {
      display: none; }

@media only screen and (max-width: 479px) {
  #checkout-review-table thead > tr > th {
    display: none; }
    #checkout-review-table thead > tr > th:first-child {
      display: block; }
  #checkout-review-table thead > tr > th:first-child {
    display: block; } }

#checkout-step-review .centinel > p {
  margin-bottom: 10px; }

#checkout-step-review .centinel iframe {
  width: 100%;
  min-height: 400px; }

/* Gift options */
.gift-messages-form .item {
  content: '';
  display: table;
  clear: both;
  margin-top: 30px; }
  .gift-messages-form .item h5 {
    font-weight: bold; }
  .gift-messages-form .item .product-img-box {
    width: auto;
    float: left;
    padding-right: 15px; }
  .gift-messages-form .item .details {
    float: left; }

.gift-message-form .inner-box > div {
  content: '';
  display: table;
  clear: both;
  width: 100%;
  margin-top: 15px;
  display: block; }
  .gift-message-form .inner-box > div.extra-options-container p {
    margin-bottom: 15px; }

.gift-message-form .gift-wrapping-form label {
  margin-right: 10px; }

.gift-message-form .gift-wrapping-form img {
  float: left; }

.gift-message-form .gift-wrapping-form .gift-wrapping-design {
  height: 75px; }
  .gift-message-form .gift-wrapping-form .gift-wrapping-design:after {
    content: '';
    display: table;
    clear: both; }
  .gift-message-form .gift-wrapping-form .gift-wrapping-design .image-box {
    margin-right: 5px; }

.gift-message-form .gift-item {
  padding-bottom: 10px;
  margin-bottom: 10px;
  border-bottom: solid 1px #ECECEC; }
  .gift-message-form .gift-item:after {
    content: '';
    display: table;
    clear: both; }
  .gift-message-form .gift-item .product-img-box {
    width: 200px; }
    .gift-message-form .gift-item .product-img-box .product-image {
      width: 75px;
      margin-left: auto;
      margin-right: auto; }
    .gift-message-form .gift-item .product-img-box .product-name {
      display: block; }
  .gift-message-form .gift-item .fieldset {
    margin-left: 200px; }

@media only screen and (max-width: 770px) {
  .gift-message-form .giftmessage-area {
    max-width: 100%; }
  .gift-message-form .gift-item .product-img-box {
    width: 100%;
    float: none; }
  .gift-message-form .gift-item .fieldset {
    margin-left: 0px; }
    .gift-message-form .gift-item .fieldset textarea {
      width: 100%; } }

/* ============================================ *
 * Checkout - Success
 * ============================================ */
.checkout-onepage-success .col-main {
  padding: 0;
  text-align: center; }

.checkout-onepage-success .buttons-set {
  margin: 10px 0;
  text-align: center; }
  .checkout-onepage-success .buttons-set button {
    float: none; }

/* ============================================ *
 * Configurable Swatches
 * ============================================ */
/* Clears */
.clearfix:after,
.configurable-swatch-list:after,
.product-view .product-options .swatch-attr:after {
  content: '';
  display: table;
  clear: both; }

/* General Swatch Styling */
.swatch-link,
.swatch-label {
  display: block;
  border-radius: 3px;
  font-size: 14px;
  text-align: center;
  color: #f7b340;
  text-decoration: none;
  box-sizing: content-box; }

.swatch-link {
  border: 1px solid #CCCCCC;
  margin: 0 0 3px; }
  .swatch-link img {
    border-radius: 2px; }
  .swatch-link:hover {
    cursor: pointer;
    text-decoration: none; }
  .swatch-link .x {
    display: none;
    text-indent: -999em;
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    background: url(../images/bg_x.png) center no-repeat transparent;
    z-index: 10; }
  .swatch-link.has-image .swatch-label {
    position: relative; }
  .swatch-link.has-image img {
    position: absolute;
    top: 0;
    left: 0; }

.swatch-label {
  border: 1px solid #fff;
  margin: 0;
  white-space: nowrap;
  background: #F4F4F4; }

.configurable-swatch-list {
  margin-left: -3px;
  zoom: 1;
  clear: both;
  -webkit-transform: translateZ(0px); }
  .configurable-swatch-list li {
    float: left;
    zoom: 1;
    margin: 0 0 0 3px; }
  .products-grid .configurable-swatch-list li {
    display: inline-block;
    float: none;
    margin: 0;
    vertical-align: top; }
  .configurable-swatch-list .not-available .x {
    display: block; }
  .configurable-swatch-list .not-available .swatch-link {
    border-color: #EDEDED;
    position: relative; }
    .configurable-swatch-list .not-available .swatch-link.has-image img {
      opacity: 0.4;
      filter: alpha(opacity=40); }
  .configurable-swatch-list .not-available .swatch-label {
    color: #aaa;
    background: #fff; }
  .configurable-swatch-list .wide-swatch .swatch-label {
    padding: 0 6px; }
  .configurable-swatch-list .not-available a:focus {
    outline: 0; }

#narrow-by-list dd .configurable-swatch-list li {
  margin: 0 0 0 3px;
  width: 47%; }

#narrow-by-list dd .swatch-link {
  border: none;
  line-height: 25px;
  margin-right: 2px;
  text-align: left; }
  #narrow-by-list dd .swatch-link.has-image {
    line-height: inherit; }
  #narrow-by-list dd .swatch-link:hover .swatch-label {
    border-color: #fdb813; }

#narrow-by-list dd .swatch-label {
  background: #F4F4F4;
  border: 1px solid #CCCCCC;
  border-radius: 3px;
  display: block;
  float: left;
  line-height: 1.5em;
  margin: 0 5px 0 0;
  padding: 1px 5px;
  white-space: nowrap; }
  #narrow-by-list dd .swatch-label img {
    border: 1px solid #fff;
    border-radius: 3px;
    box-sizing: content-box; }

#narrow-by-list dd .has-image .swatch-label {
  padding: 0; }

@media only screen and (max-width: 770px) {
  #narrow-by-list dd .configurable-swatch-list li:nth-child(odd) {
    clear: left; } }

.currently .swatch-current {
  position: relative; }
  .currently .swatch-current .btn-remove {
    margin-top: -10px;
    position: absolute;
    right: 0;
    top: 50%; }
  .currently .swatch-current span {
    display: block;
    float: left; }

.currently .swatch-link {
  display: inline-block;
  margin: 0 0 0 3px; }
  .currently .swatch-link:hover {
    border-color: #CCCCCC;
    cursor: default; }

/* Other Swatch States */
.configurable-swatch-list .hover .swatch-link,
.configurable-swatch-list .selected .swatch-link,
.swatch-link:hover {
  border-color: #fdb813; }

.configurable-swatch-box {
  background: none !important; }
  .configurable-swatch-box select.swatch-select {
    display: none; }
  .configurable-swatch-box .validation-advice {
    margin: 0 0 5px;
    background: #DF280A;
    padding: 2px 5px !important;
    font-weight: bold;
    color: #fff !important;
    float: left;
    display: block;
    border-radius: 3px; }

/* CUSTOM */
.availability.out-of-stock span {
  color: #A0A0A0; }

.product-view .product-options .swatch-attr {
  float: none;
  display: block;
  clear: both;
  border: 0; }
  .product-view .product-options .swatch-attr label,
  .product-view .product-options .swatch-attr .select-label {
    font-size: 12px; }
  .product-view .product-options .swatch-attr label {
    display: block;
    line-height: 1.3; }
  .product-view .product-options .swatch-attr .select-label {
    display: inline;
    font-weight: normal;
    color: #fdb813;
    padding-left: 5px; }

.product-view .product-options dd .input-box {
  width: auto;
  height: auto; }

.product-view .product-options .select-label {
  display: none; }

.product-view .add-to-cart button.out-of-stock {
  background-position: -80px -362px;
  cursor: default; }

/* ============================================ *
 * Customer
 * ============================================ */
.customer-account-login .scaffold-form label:first-child {
  width: 115px; }

.customer-account-login .col2-set .buttons-set {
  text-align: left;
  border-top: 0; }
  .customer-account-login .col2-set .buttons-set button,
  .customer-account-login .col2-set .buttons-set .button {
    float: none;
    min-width: 50%;
    margin: 0; }

.customer-account-login .col2-set .col-1 ul {
  list-style: disc;
  padding-left: 20px;
  margin: 10px 0 20px 0; }

@media only screen and (min-width: 480px) {
  .customer-account-login .col2-set .col-1,
  .customer-account-login .col2-set .col-2 {
    padding-top: 0;
    margin-top: 20px; }
  .customer-account-login .col2-set .col-1 {
    padding-right: 20px; }
  .customer-account-login .col2-set .col-2 {
    padding-left: 20px;
    border-left: 1px solid #EDEDED; } }

@media only screen and (min-width: 770px) {
  .customer-account-login .col2-set .col-1 {
    padding-right: 0; }
  .customer-account-login .col2-set .col-2 {
    padding-left: 60px;
    border-left: 1px solid #EDEDED; } }

@media only screen and (max-width: 479px) {
  .customer-account-login .col2-set .col-1 {
    padding-bottom: 30px; }
  .customer-account-login .col2-set .col-2 {
    padding-top: 30px;
    border-top: 1px solid #EDEDED; } }

@media only screen and (max-width: 770px) {
  .customer-account-login .col2-set p.required {
    display: none; } }

.customer-account-create .scaffold-form label:first-child {
  width: 140px; }

.opc #opc-login p:not(.required) {
  font-style: italic;
  font-family: "Lato", sans-serif;
  font-size: 13px;
  color: #A0A0A0; }

.remember-me-box a.hide {
  display: none; }

.remember-me-box .link-tip {
  font-size: 13px;
  padding-left: 10px; }

.remember-me-popup {
  display: none;
  border: 1px solid #CCCCCC;
  padding: 10px;
  position: relative; }
  .remember-me-popup.show {
    display: block; }
  .remember-me-popup p {
    font-family: "Lato", sans-serif; }
  .remember-me-popup .remember-me-popup-close {
    position: absolute;
    top: 0;
    right: 0;
    padding: 10px;
    font-size: 12px; }
  .remember-me-popup .remember-me-popup-close-button {
    display: none; }

.customer-account-create .buttons-set {
  max-width: 455px; }

.customer-account-create .fieldset,
.customer-account-create .buttons-set {
  margin-left: 30px; }
  @media only screen and (max-width: 479px) {
    .customer-account-create .fieldset,
    .customer-account-create .buttons-set {
      margin-left: 0; } }

.customer-account-create .fieldset .hidden {
  display: none; }

.customer-account-create #remember-me-popup {
  max-width: 455px; }

.customer-account-forgotpassword .fieldset,
.customer-account-forgotpassword .buttons-set {
  margin-left: 30px;
  max-width: 400px; }
  @media only screen and (max-width: 479px) {
    .customer-account-forgotpassword .fieldset,
    .customer-account-forgotpassword .buttons-set {
      margin-left: 0; } }

.customer-account-forgotpassword .fieldset .input-box input.input-text {
  width: 100%; }

/* ============================================ *
 * My Account Global Styles
 * ============================================ */
body.customer-account .my-account .page-title h1 {
  border: 0;
  text-align: left; }

body.customer-account .my-account .title-buttons {
  position: relative;
  text-align: right; }
  body.customer-account .my-account .title-buttons h1 {
    text-align: left; }
  body.customer-account .my-account .title-buttons .button {
    position: absolute;
    right: 0;
    top: 0; }
  body.customer-account .my-account .title-buttons a,
  body.customer-account .my-account .title-buttons span.separator {
    position: relative;
    top: -42px; }

body.customer-account .my-account .fieldset h2,
body.customer-account .my-account .addresses-list h2,
body.customer-account .my-account .order-details h2 {
  width: 100%;
  display: inline-block; }

body.customer-account .my-account .addresses-list h3 {
  font-size: 14px;
  font-weight: 600; }

body.customer-account .my-account .fieldset {
  margin-top: 30px;
  margin-bottom: 30px; }

body.customer-account .data-table {
  margin-top: 5px; }
  body.customer-account .data-table td a {
    font-family: "Lato", sans-serif;
    text-transform: uppercase;
    font-style: normal;
    font-size: 13px; }
  body.customer-account .data-table span.nobr {
    white-space: normal; }
    body.customer-account .data-table span.nobr a {
      white-space: nowrap; }
  body.customer-account .data-table td.view a {
    display: block; }
  body.customer-account .data-table .separator {
    display: none; }

body.customer-account .sidebar .block ol#compare-items li {
  margin: 10px 0; }

body.customer-account .sidebar .block .block-content p.block-subtitle {
  margin-bottom: 15px; }

body.customer-account .sidebar .block .block-content .actions {
  margin-top: 30px; }

body.customer-account .sidebar ol#cart-sidebar-reorder li {
  margin-top: 10px;
  margin-bottom: 0; }

body.customer-account .sidebar ol#cart-sidebar-reorder p.product-name {
  display: inline-block;
  margin-bottom: 0; }

body.customer-account .sidebar .block-cart .summary {
  margin-bottom: 15px; }

body.customer-account .sidebar .block-reorder ol#cart-sidebar-reorder li {
  margin-top: 10px;
  margin-bottom: 0; }
  body.customer-account .sidebar .block-reorder ol#cart-sidebar-reorder li input {
    margin-right: 10px; }

body.customer-account .sidebar .block-reorder ol#cart-sidebar-reorder p.product-name {
  display: inline;
  margin-bottom: 0; }

.form-list .customer-dob .dob-month,
.form-list .customer-dob .dob-day {
  width: 40px;
  float: left;
  margin-right: 10px; }

.form-list .customer-dob .dob-year {
  width: 80px;
  float: left; }

/* ============================================ *
 * Dashboard
 * ============================================ */
.dashboard .box-head {
  margin-top: 30px;
  border-bottom: 1px solid #CCCCCC;
  padding-bottom: 7px; }
  .dashboard .box-head h2 {
    font-size: 15px;
    font-weight: 600;
    display: inline-block;
    margin-bottom: 0; }
  .dashboard .box-head a {
    padding: 10px; }

.dashboard .box-title a,
.dashboard .box-head a {
  text-transform: uppercase;
  font-size: 12px; }

.dashboard .box-account {
  padding-bottom: 40px;
  border-bottom: 1px solid #CCCCCC;
  margin-bottom: 45px; }
  .dashboard .box-account p,
  .dashboard .box-account address {
    font-family: "Lato", sans-serif;
    font-style: italic; }

.dashboard .col2-set .col-1,
.dashboard .col2-set .col-2 {
  padding-right: 12.09677%;
  padding-bottom: 0; }
  .dashboard .col2-set .col-1 .box-title,
  .dashboard .col2-set .col-2 .box-title {
    position: relative;
    padding-bottom: 10px; }
    .dashboard .col2-set .col-1 .box-title h2,
    .dashboard .col2-set .col-1 .box-title h3,
    .dashboard .col2-set .col-2 .box-title h2,
    .dashboard .col2-set .col-2 .box-title h3 {
      font-weight: 600;
      font-size: 14px;
      margin-bottom: 0; }
    .dashboard .col2-set .col-1 .box-title a,
    .dashboard .col2-set .col-2 .box-title a {
      line-height: 19.6px; }

.dashboard .box-reviews.box-account {
  padding-bottom: 0; }

.dashboard .box-reviews li {
  padding: 10px 0;
  border-top: 1px solid #EDEDED; }
  .dashboard .box-reviews li:first-child {
    border-top: 0; }
  .dashboard .box-reviews li .number {
    margin-right: -20px;
    float: left;
    line-height: 1.4;
    font-size: 13px; }
  .dashboard .box-reviews li .details {
    margin-left: 20px; }
    .dashboard .box-reviews li .details .ratings {
      content: '';
      display: table;
      clear: both;
      margin-bottom: 0; }
      .dashboard .box-reviews li .details .ratings strong {
        float: left;
        font-family: "Lato", sans-serif;
        font-size: 13px;
        margin-right: 5px; }
      .dashboard .box-reviews li .details .ratings .rating-box {
        float: left;
        margin: 3px 0 0 0; }

/* ============================================ *
 * Address Book
 * ============================================ */
.my-account .addresses-list {
  font-family: "Lato", sans-serif; }
  .my-account .addresses-list .col-1,
  .my-account .addresses-list .col-2 {
    padding-bottom: 0; }
  .my-account .addresses-list .item {
    margin: 0 0 30px 0; }
    .my-account .addresses-list .item p {
      margin-top: 10px; }
  @media only screen and (max-width: 770px) {
    .my-account .addresses-list .col-1,
    .my-account .addresses-list .col-2 {
      width: 100%;
      padding-left: 0;
      padding-right: 0; }
      .my-account .addresses-list .col-1 li.empty,
      .my-account .addresses-list .col-2 li.empty {
        width: 100%; } }
  @media only screen and (max-width: 599px) {
    .my-account .addresses-list .addresses-additional p a {
      white-space: nowrap; } }

/* ============================================ *
 * Order View
 * ============================================ */
.order-info {
  padding-bottom: 10px;
  border-bottom: 1px solid #EDEDED;
  width: 100%;
  margin-bottom: 30px; }
  .order-info dt,
  .order-info dd,
  .order-info ul,
  .order-info li {
    display: inline; }
  .order-info dt {
    margin-right: 20px; }
  .order-info li {
    margin: 0 0 0 20px; }
    .order-info li.current {
      font-weight: 600; }
    .order-info li:first-child {
      margin-left: 0; }

.order-date {
  font-family: "Lato", sans-serif;
  text-transform: uppercase; }

.order-info-box {
  margin-bottom: 40px;
  margin-top: 20px; }
  .order-info-box + .order-info-box {
    padding-bottom: 40px;
    border-bottom: 1px solid #EDEDED; }
  .order-info-box .col-1 {
    padding-right: 0;
    width: 48%; }
  .order-info-box .col-2 {
    width: 52%; }
  .order-info-box .col-1,
  .order-info-box .col-2 {
    overflow: hidden;
    padding-top: 0;
    padding-bottom: 0; }
  .order-info-box .box-title {
    width: 150px;
    padding-right: 10px;
    float: left; }
    .order-info-box .box-title h2 {
      font-size: 14px;
      font-family: "Lato", sans-serif;
      font-weight: bold;
      line-height: 1.5; }
      .order-info-box .box-title h2:after {
        content: ':'; }
  .order-info-box .box-content {
    float: left;
    font-family: "Lato", sans-serif; }
    .order-info-box .box-content td,
    .order-info-box .box-content th {
      font-family: "Lato", sans-serif;
      line-height: 1.3; }
    .order-info-box .box-content th {
      padding-top: 10px; }
    .order-info-box .box-content td {
      padding-left: 15px; }
    .order-info-box .box-content strong {
      font-family: "Lato", sans-serif;
      font-weight: normal;
      text-transform: uppercase; }

#my-orders-table .option-label {
  margin-left: 10px;
  font-weight: 600;
  font-style: italic; }

#my-orders-table .option-value {
  margin-left: 20px; }

#my-orders-table tr.bundle:not(:last-child) td {
  border-bottom: none;
  border-top: none; }

ol#cart-sidebar-reorder li {
  margin-top: 10px;
  margin-bottom: 0; }
  ol#cart-sidebar-reorder li input {
    margin-right: 10px; }

ol#cart-sidebar-reorder p.product-name {
  display: inline; }

@media only screen and (max-width: 599px) {
  #my-orders-table .option-label {
    margin-left: 20px; }
  #my-orders-table .option-value {
    margin-left: 35px; }
  #my-orders-table td[data-rwd-label=Qty] .nobr br {
    display: none; }
  #my-orders-table td[data-rwd-label=Qty] .nobr strong {
    margin-right: 10px; }
  #my-orders-table tr.bundle {
    border-color: #EDEDED; }
  #my-orders-table tr.bundle.child td[data-rwd-label] {
    padding-left: 60px; }
  #my-orders-table tbody:last-child tr:last-child td {
    padding-bottom: 10px;
    border-bottom: 0; }
    #my-orders-table tbody:last-child tr:last-child td:last-child {
      padding-bottom: 15px; }
  #my-orders-table tfoot tr.shipping {
    margin-top: 0; } }

.order-additional {
  margin: 40px 0; }

.order-gift-message dd {
  margin-top: 10px; }

@media only screen and (max-width: 1199px) {
  .dashboard .col2-set .col-1,
  .dashboard .col2-set .col-2 {
    padding-right: 30px;
    padding-bottom: 0; }
  body.customer-account .data-table td.view a {
    white-space: normal; } }

@media only screen and (max-width: 979px) {
  body.customer-account .my-account .title-buttons {
    text-align: left; }
    body.customer-account .my-account .title-buttons span.separator,
    body.customer-account .my-account .title-buttons a {
      top: -12px; } }

@media only screen and (max-width: 770px) {
  body.customer-account .data-table.orders th.ship,
  body.customer-account .data-table.orders td.ship,
  body.customer-account .data-table.orders td.status,
  body.customer-account .data-table.orders th.status {
    display: none; }
  .order-info-box .box-content {
    clear: left; }
  .addresses-list .item {
    float: left;
    width: 50%;
    padding-right: 30px; }
  .order-info dt {
    display: none; }
  .dashboard .page-title {
    margin-top: 20px; }
    .dashboard .page-title h1 {
      margin-top: 0; }
  .dashboard .welcome-msg {
    font-family: "Lato", sans-serif; }
    .dashboard .welcome-msg .hello {
      font-style: italic; }
  .dashboard .box-account {
    padding-bottom: 15px;
    margin-bottom: 30px; }
  .dashboard .col2-set .col-1,
  .dashboard .col2-set .col-2 {
    width: 48%;
    padding-right: 0;
    padding-left: 0; }
  .dashboard .col2-set .col-1 {
    float: left;
    margin-right: 4%; }
  .dashboard .col2-set .col-2 {
    float: right; } }

@media only screen and (max-width: 599px) {
  body.customer-account .my-account .form-list .control {
    padding-left: 0; } }

@media only screen and (max-width: 479px) {
  body.customer-account .my-account .page-title h1 {
    text-align: center; }
  body.customer-account .my-account .title-buttons {
    text-align: center; }
    body.customer-account .my-account .title-buttons .button {
      width: 100%;
      position: static;
      margin-bottom: 15px; }
      body.customer-account .my-account .title-buttons .button + .button {
        margin-left: 0px; }
  body.customer-account .my-account .fieldset h2 {
    margin-bottom: 15px; }
  body.customer-account .my-account .order-details h2 {
    margin-bottom: 15px; }
  body.customer-account .my-account .buttons-set {
    border-top: 0; }
  body.customer-account .my-account .addresses-list .item {
    margin-bottom: 15px;
    padding-right: 0;
    float: none;
    width: auto; }
  body.customer-account .my-account .addresses-list h2 {
    margin-bottom: 15px; }
  .order-info {
    margin-top: 15px; }
  .data-table.orders .link-reorder,
  .data-table.orders .date {
    display: none; }
  .data-table.orders td.view {
    text-align: right; }
  .dashboard .col2-set .col-1,
  .dashboard .col2-set .col-2 {
    width: 100%;
    margin-top: 15px; }
  .order-info-box {
    margin: 0; }
    .order-info-box .col-1,
    .order-info-box .col-2 {
      width: 100%;
      border-bottom: 1px solid #EDEDED;
      padding: 15px 0; }
    .order-info-box + .order-info-box {
      padding-bottom: 0;
      border-bottom: 0;
      margin-bottom: 30px; }
  #my-reviews-table .nobr {
    white-space: normal; } }

/* ============================================ *
 * Newsletter Subscriptions
 * ============================================ */
body.newsletter-manage-index .my-account .fieldset {
  margin-bottom: 20px; }

body.newsletter-manage-index .my-account .fieldset h2 {
  display: none; }

body.newsletter-manage-index .my-account .form-list {
  border-top: 1px solid #EDEDED;
  padding-top: 10px; }

/* ============================================ *
 * Contacts
 * ============================================ */
.contacts-index-index .col-main {
  padding: 20px;
  width: 100%; }

.contacts-index-index .left-form .page-title h1 {
  color: #fdb813; }

.contacts-index-index .left-form p {
  padding-bottom: 20px;
  border-bottom: 1px solid #A0A0A0;
  margin-bottom: 30px; }

.contacts-index-index .right-form h1 {
  color: #fdb813;
  font-size: 20px; }

.contacts-index-index .right-form p {
  padding-bottom: 15px; }

.contacts-index-index .right-form .map-container {
  margin-top: 2em; }

@media screen and (max-width: 450px) {
  .contacts-index-index .right-form {
    clear: both; } }

.contacts-index-index #contactForm {
  padding-left: 0;
  padding-right: 80px; }
  .contacts-index-index #contactForm .input-box {
    display: inline-block;
    width: 60%;
    vertical-align: top; }
  .contacts-index-index #contactForm label {
    color: #636363;
    font-weight: normal;
    width: 35%;
    vertical-align: top; }
    .contacts-index-index #contactForm label em {
      color: #990000; }

.contacts-index-index .buttons-set {
  margin-left: 30px;
  max-width: 435px;
  border-top: 0; }
  .contacts-index-index .buttons-set p.required {
    float: left; }
  @media only screen and (max-width: 599px) {
    .contacts-index-index .buttons-set {
      max-width: 330px;
      margin-left: 0; }
      .contacts-index-index .buttons-set button {
        float: left;
        margin-left: 0px; }
      .contacts-index-index .buttons-set p.required {
        float: right; } }

@media only screen and (max-width: 599px) {
  .contacts-index-index #contactForm {
    padding-right: 0;
    margin-bottom: 3em; } }

.find-a-rep-view {
  margin: 1em;
  padding-bottom: 2em; }
  .find-a-rep-view .breadcrumbs {
    margin-bottom: 0;
    border-bottom: 0; }
  .find-a-rep-view .button {
    margin: 0 .5em .5em;
    padding: 15px; }
  .find-a-rep-view .form-group {
    margin-bottom: 0; }

.find-a-rep-title {
  border-top: 0;
  text-align: left;
  overflow: auto;
  padding: 1.5em 0em;
  margin-top: 1em;
  border-top: 2px dotted #A0A0A0;
  border-bottom: 2px dotted #A0A0A0;
  position: relative;
  margin-bottom: 1em; }
  .find-a-rep-title h1 {
    border-bottom: none;
    margin-top: 0;
    display: inline-block;
    vertical-align: middle;
    margin-bottom: 15px;
    color: #fdb813;
    font-weight: 400; }
  .find-a-rep-title .form-group {
    margin-bottom: 10px; }
    .find-a-rep-title .form-group button {
      font-size: 13px;
      background-color: #fff;
      border: 1px #646463 solid;
      transition: all .25s ease-in-out; }
    .find-a-rep-title .form-group button.btn-warning {
      background-color: #fdb813; }
    .find-a-rep-title .form-group select {
      max-width: 100%; }

.card-container {
  display: -webkit-box;
  display: -moz-box;
  display: box;
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  box-orient: vertical;
  -webkit-box-direction: normal;
  -moz-box-direction: normal;
  box-direction: normal;
  -webkit-flex-direction: column;
  -moz-flex-direction: column;
  flex-direction: column;
  -ms-flex-direction: column;
  -webkit-box-lines: multiple;
  -moz-box-lines: multiple;
  box-lines: multiple;
  -webkit-flex-wrap: wrap;
  -moz-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  -webkit-justify-content: flex-start;
  -moz-justify-content: flex-start;
  -ms-justify-content: flex-start;
  -o-justify-content: flex-start;
  justify-content: flex-start;
  -ms-flex-pack: start; }

.ennis-rep {
  margin: 0 auto 1em;
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -moz-flex: 1;
  -ms-flex: 1;
  flex: 1;
  /*@include flex-basis(100%);*/
  margin-bottom: 2em;
  max-width: 245px; }
  .ennis-rep h3 {
    font-size: 1.25em;
    text-transform: none; }
  .ennis-rep h4 {
    color: #161616;
    text-transform: none;
    font-weight: bold; }

.rep-image {
  width: 100%;
  margin-bottom: 1em; }

.rep-contact {
  border: 1px solid #ccc;
  padding: 1em;
  min-height: 400px;
  flex-shrink: 0;
  margin-bottom: 1em; }
  .rep-contact p {
    margin: 0; }
  .rep-contact a {
    text-decoration: underline; }

@media only screen and (min-width: 599px) {
  .card-container {
    -webkit-box-orient: horizontal;
    -moz-box-orient: horizontal;
    box-orient: horizontal;
    -webkit-box-direction: normal;
    -moz-box-direction: normal;
    box-direction: normal;
    -webkit-flex-direction: row;
    -moz-flex-direction: row;
    flex-direction: row;
    -ms-flex-direction: row; }
  .find-a-rep-view .button:first-child {
    margin-left: 0; }
  .ennis-rep {
    -webkit-box-flex: 1;
    -moz-box-flex: 1;
    box-flex: 1;
    -webkit-flex: 1;
    -moz-flex: 1;
    -ms-flex: 1;
    flex: 1;
    /*@include flex-basis(50%);*/ } }

@media only screen and (min-width: 770px) {
  .ennis-rep {
    /*@include flex-basis(25%);*/
    margin: 0 2.8% 1em 0;
    display: block; }
    .ennis-rep:nth-of-type(4n) {
      margin-right: 0; } }

/* ============================================ *
 * PayPal
 * ============================================ */
@media only screen and (max-width: 870px) and (min-width: 771px) {
  .paypal-review-order .col2-set .col-1,
  .paypal-review-order .col2-set .col-2 {
    padding: 0px; } }

.paypal-review-order .info-set {
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid #EDEDED; }

.paypal-review-order .buttons-set {
  margin-top: 0px;
  padding-top: 0px;
  border: 0; }
  .paypal-review-order .buttons-set button {
    margin-bottom: 10px; }

@media only screen and (max-width: 770px) {
  .paypal-review-order .col-1 {
    padding-bottom: 0; }
  .paypal-review-order .field.inactive {
    display: none; } }

.top-container .bml-ad {
  margin-top: 7px;
  margin-bottom: 7px;
  text-align: center; }
  .top-container .bml-ad span {
    display: inline-block; }
    .top-container .bml-ad span a {
      display: block; }

.bml-ad {
  display: none;
  text-align: center;
  margin-bottom: 5px; }
  .bml-ad span {
    display: block;
    line-height: 0; }
  .bml-ad a {
    display: inline-block;
    max-width: 100%; }
  .bml-ad a:hover {
    opacity: 0.7; }
  .bml-ad img {
    height: auto !important;
    max-width: 100%; }

.cart-totals-wrapper .bml-ad.large img {
  display: block;
  margin: 0; }

@media only screen and (max-width: 770px) {
  .bml-ad.small {
    display: block; } }

@media only screen and (min-width: 771px) {
  .bml-ad.large {
    display: block; } }

div.paypal-logo {
  text-align: center;
  margin: 15px 0;
  max-width: 100%; }
  div.paypal-logo span {
    display: block;
    width: 100%; }
    div.paypal-logo span a {
      display: inline-block;
      max-width: 100%; }
      div.paypal-logo span a img {
        max-width: 100%; }
  div.paypal-logo span > img {
    display: none; }

.checkout-types div.paypal-logo {
  text-align: right; }

.bml-checkout-type {
  list-style-type: none; }

.sidebar .paypal-logo {
  text-align: center;
  line-height: 0; }
  .sidebar .paypal-logo > a {
    display: inline-block;
    max-width: 100%; }
    .sidebar .paypal-logo > a:hover {
      opacity: 0.8; }
    .sidebar .paypal-logo > a img {
      display: block; }
  .sidebar .paypal-logo .label {
    margin-top: 4px; }
    .sidebar .paypal-logo .label a {
      font-size: 12px;
      line-height: 1.5; }

/* ============================================ *
 * Review - Customer
 * ============================================ */
#customer-reviews {
  width: auto;
  float: none; }
  #customer-reviews .review-heading {
    border-top: 1px solid #CCCCCC;
    border-bottom: 1px solid #CCCCCC;
    padding: 10px 0 5px; }
    #customer-reviews .review-heading:after {
      content: '';
      display: table;
      clear: both; }
    #customer-reviews .review-heading h2 {
      float: left;
      display: block; }
    #customer-reviews .review-heading .pager {
      clear: none;
      float: right;
      width: auto; }
      #customer-reviews .review-heading .pager .count-container .limiter {
        margin-bottom: 0; }
        #customer-reviews .review-heading .pager .count-container .limiter label {
          font-family: "Lato", sans-serif;
          font-size: 10px;
          text-transform: uppercase; }
      #customer-reviews .review-heading .pager .amount {
        display: none; }
  #customer-reviews h2 {
    color: #fdb813;
    font-size: 12px;
    text-transform: uppercase; }
    #customer-reviews h2 span {
      color: #636363; }
  #customer-reviews h3 {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    font-weight: normal;
    text-transform: uppercase; }
    #customer-reviews h3 span {
      color: #fdb813; }
  #customer-reviews .fieldset {
    padding-top: 25px;
    width: 470px; }
    #customer-reviews .fieldset h4 {
      border-bottom: 1px solid #CCCCCC;
      font-family: "Lato", sans-serif;
      font-size: 12px;
      font-weight: normal;
      padding-bottom: 5px;
      text-transform: uppercase; }
      #customer-reviews .fieldset h4 em {
        display: none; }
    #customer-reviews .fieldset .form-list {
      font-family: "Lato", sans-serif;
      font-size: 12px;
      font-weight: normal;
      margin: 10px 0;
      text-transform: uppercase;
      width: 470px; }
      #customer-reviews .fieldset .form-list .inline-label:after {
        content: '';
        display: table;
        clear: both; }
      #customer-reviews .fieldset .form-list label {
        font-size: 12px;
        font-weight: normal; }
      #customer-reviews .fieldset .form-list textarea {
        border: 1px solid #CCCCCC;
        border-radius: 0;
        min-width: 100%;
        -webkit-appearance: none; }
      #customer-reviews .fieldset .form-list input {
        border: 1px solid #CCCCCC;
        border-radius: 0; }
        #customer-reviews .fieldset .form-list input[type="text"] {
          width: 100%; }
  #customer-reviews .buttons-set {
    border: none;
    margin: 0;
    width: 470px; }
  #customer-reviews dl {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    font-weight: normal;
    margin-bottom: 10px; }
    #customer-reviews dl dt {
      margin: 10px 0;
      text-transform: uppercase; }
    #customer-reviews dl dd {
      font-family: "Lato", sans-serif;
      font-size: 14px;
      margin: 10px 0; }
      #customer-reviews dl dd .ratings-table {
        font-family: "Lato", sans-serif;
        font-size: 12px;
        width: 100%; }
        #customer-reviews dl dd .ratings-table tr {
          margin-right: 15px; }
        #customer-reviews dl dd .ratings-table .review-label {
          width: 300px;
          max-width: 70%; }
      #customer-reviews dl dd table {
        margin: 15px 0; }
      #customer-reviews dl dd .review-meta {
        color: #fdb813;
        font-family: "Lato", sans-serif;
        font-size: 10px;
        font-weight: normal;
        text-transform: uppercase; }

.review-summary-table {
  border-bottom: 1px solid #CCCCCC;
  margin: 0 0 10px; }
  .review-summary-table thead {
    background: transparent; }
    .review-summary-table thead th {
      background: transparent;
      border: none;
      padding: 15px 7px 10px 8px; }
  .review-summary-table tbody th {
    background: #FFFFFF;
    font-size: 12px; }
  .review-summary-table tbody td {
    border: none;
    text-align: center;
    padding: 0; }
    .review-summary-table tbody td label {
      width: 100%;
      display: block;
      padding: 11px 0; }
  .review-summary-table .rating-box .rating-number {
    display: none; }
    .review-summary-table .rating-box .rating-number:after {
      content: "";
      display: inline-block;
      background-position: 0px -599px;
      width: 13px;
      height: 14px;
      margin-left: 5px;
      position: relative;
      top: 2px; }

/* ============================================ *
 * Ratings - Global
 * ============================================ */
.ratings-table {
  font-family: "Lato", sans-serif;
  font-size: 12px;
  text-transform: uppercase; }
  .ratings-table th {
    padding-right: 10px; }
  .ratings-table .rating-box {
    background-position: 0 -615px;
    background-repeat: repeat-x;
    height: 13px;
    overflow: hidden;
    text-indent: -9999px;
    width: 65px; }
    .ratings-table .rating-box .rating {
      background-position: 0 -600px;
      background-repeat: repeat-x;
      float: left;
      height: 13px;
      text-indent: -9999px; }

@media only screen and (max-width: 770px) {
  body.review-product-list .product-view .product-shop .price-info {
    padding-left: 0; }
  body.review-product-list .product-view .product-shop .extra-info {
    padding: 0;
    min-width: 84%; }
    body.review-product-list .product-view .product-shop .extra-info .ratings-table {
      margin: 10px 0;
      width: 100%; }
      body.review-product-list .product-view .product-shop .extra-info .ratings-table tr {
        margin-right: 15px; } }

@media only screen and (max-width: 535px) {
  body.review-product-list .product-view .product-shop .extra-info {
    min-width: 0; }
    body.review-product-list .product-view .product-shop .extra-info .ratings-table tr {
      float: none;
      margin-right: 0; } }

@media only screen and (max-width: 520px) {
  #customer-reviews .fieldset {
    width: 100%; }
    #customer-reviews .fieldset .form-list {
      width: 100%; }
      #customer-reviews .fieldset .form-list .inline-label label,
      #customer-reviews .fieldset .form-list .inline-label .input-box {
        float: none; }
  #customer-reviews .buttons-set {
    width: 100%; }
  #customer-reviews .review-summary-table thead th {
    padding-left: 0px;
    padding-right: 0px; }
  #customer-reviews .review-summary-table tbody th {
    padding-left: 0px;
    padding-right: 0px; }
  #customer-reviews .review-summary-table tbody td {
    width: 20%;
    padding: 0px; }
  #customer-reviews .review-summary-table .rating-box {
    text-indent: 0px;
    text-align: center;
    background: none;
    height: 19.6px;
    width: 100%; }
    #customer-reviews .review-summary-table .rating-box .rating {
      display: none; }
    #customer-reviews .review-summary-table .rating-box .rating-number {
      display: inline-block; } }

@media only screen and (max-width: 450px) {
  #customer-reviews dl dd .ratings-table tr {
    float: none; } }

/* ============================================ *
 * Review View Page
 * ============================================ */
.review-product-view .product-review .product-details h2 {
  border-bottom: none; }

.review-product-view .product-review .product-img-box {
  width: auto;
  max-width: 50%; }
  .review-product-view .product-review .product-img-box > a {
    width: 100%; }
  .review-product-view .product-review .product-img-box .product-image {
    width: 100%; }

@media only screen and (max-width: 770px) {
  .review-product-view .product-review .product-img-box {
    max-width: 100%; } }

/* ============================================ *
 * Slideshow
 * ============================================ */
.slideshow-container {
  position: relative;
  display: block;
  width: 100%;
  margin: 10px 0;
  border: 1px solid #EDEDED; }
  .slideshow-container .slideshow {
    width: 100%;
    padding: 0;
    position: relative;
    margin: 0;
    border: 10px solid #FFFFFF; }
    .slideshow-container .slideshow > li {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      padding: 0;
      display: block;
      margin: 0; }
      .slideshow-container .slideshow > li:first-child {
        position: static;
        z-index: 100; }
      .slideshow-container .slideshow > li img {
        max-width: 100%;
        width: 100%; }

.slideshow-pager {
  text-align: center;
  width: 100%;
  z-index: 115;
  position: absolute;
  bottom: 0px;
  top: auto;
  overflow: hidden;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none; }
  .slideshow-pager span {
    font-family: arial;
    width: 44px;
    height: 44px;
    display: inline-block;
    color: #DDDDDD;
    cursor: pointer; }
    .slideshow-pager span:before {
      content: '';
      display: block;
      width: 16px;
      height: 16px;
      left: 50%;
      top: 50%;
      margin-left: -8px;
      margin-top: -8px;
      border-radius: 1px;
      background-color: #FFFFFF;
      position: relative; }
    .slideshow-pager span:hover:before {
      background-color: #f4ad02; }
    .slideshow-pager span.cycle-pager-active:before {
      background-color: #db9b02; }
  .slideshow-pager > * {
    cursor: pointer; }

.slideshow-prev,
.slideshow-next {
  position: absolute;
  top: 0;
  width: 15%;
  max-width: 80px;
  height: 100%;
  opacity: 0.6;
  z-index: 110;
  cursor: pointer;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none; }
  .slideshow-prev:before,
  .slideshow-next:before {
    content: '';
    width: 0;
    height: 0;
    font-size: 0;
    position: absolute;
    border-style: solid;
    display: block;
    top: 50%;
    margin-top: -15px; }
  .slideshow-prev:hover,
  .slideshow-next:hover {
    opacity: 1; }
  .slideshow-prev.disabled,
  .slideshow-next.disabled {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
    opacity: 0.5;
    cursor: default; }

.slideshow-prev {
  left: 8px; }
  .slideshow-prev:before {
    border-width: 15px 15px 15px 0;
    border-color: transparent #FFFFFF transparent transparent;
    top: 50%;
    left: 10px; }
  .slideshow-prev:hover:before {
    border-color: transparent #f4ad02 transparent transparent; }

.slideshow-next {
  right: 8px; }
  .slideshow-next:before {
    border-width: 15px 0 15px 15px;
    border-color: transparent transparent transparent #FFFFFF;
    top: 50%;
    right: 10px; }
  .slideshow-next:hover:before {
    border-color: transparent transparent transparent #f4ad02; }

.cycle-caption {
  position: absolute;
  color: white;
  bottom: 15px;
  right: 15px;
  z-index: 110; }

.cycle-overlay {
  font-family: tahoma, arial;
  position: absolute;
  bottom: 0;
  width: 100%;
  z-index: 120;
  background: black;
  color: white;
  padding: 15px;
  opacity: .5; }

/* ============================================ *
 * Wishlist
 * ============================================ */
#wishlist-table th {
  text-align: center; }

#wishlist-table.clean-table {
  font-family: "Lato", sans-serif;
  font-size: 12px;
  text-transform: uppercase;
  width: 100%; }
  #wishlist-table.clean-table th {
    border-bottom: 1px solid #C0C0C0; }
  #wishlist-table.clean-table td {
    padding: 15px;
    vertical-align: top; }
  #wishlist-table.clean-table thead th {
    font-family: "Lato", sans-serif;
    font-size: 12px;
    text-transform: uppercase; }

#wishlist-table .product-name {
  font-size: 16px;
  font-family: "Lato", sans-serif;
  margin-bottom: 0;
  text-transform: uppercase; }
  #wishlist-table .product-name a {
    color: #fdb813; }

#wishlist-table .wishlist-sku {
  font-size: 11px;
  font-family: "Lato", sans-serif;
  margin: 5px 0; }

#wishlist-table textarea {
  border: 1px solid #C0C0C0;
  width: 100%;
  height: 45px;
  font-size: 11px;
  font-family: "Lato", sans-serif; }
  #wishlist-table textarea::-webkit-input-placeholder {
    text-transform: uppercase; }
  #wishlist-table textarea:-moz-placeholder {
    text-transform: uppercase; }
  #wishlist-table textarea::-moz-placeholder {
    text-transform: uppercase; }
  #wishlist-table textarea:-ms-input-placeholder {
    text-transform: uppercase; }
  #wishlist-table textarea:focus {
    border: 1px solid #fdb813; }

#wishlist-table .item-manage {
  text-align: right;
  max-width: 450px;
  padding-top: 5px; }
  #wishlist-table .item-manage .button {
    font-size: 11px;
    padding: 3px 5px; }

#wishlist-table .cart-cell {
  text-align: center; }

#wishlist-table td.customer-wishlist-item-image {
  width: 113px; }

#wishlist-table td.customer-wishlist-item-quantity {
  width: 3em; }

#wishlist-table td.customer-wishlist-item-price {
  width: 120px;
  text-align: center; }

#wishlist-table td.customer-wishlist-item-cart {
  width: 150px; }
  #wishlist-table td.customer-wishlist-item-cart .button {
    font-size: 12px;
    margin-bottom: 10px;
    padding: 3px 5px;
    width: 100%; }
  #wishlist-table td.customer-wishlist-item-cart .truncated {
    margin-bottom: 10px; }
  #wishlist-table td.customer-wishlist-item-cart > p {
    margin-bottom: 0; }
  #wishlist-table td.customer-wishlist-item-cart .remove-whishlist-item {
    text-align: center; }
  #wishlist-table td.customer-wishlist-item-cart .btn-remove {
    vertical-align: top; }

#wishlist-table td.customer-wishlist-item-remove {
  width: 20px; }

#wishlist-table td .button,
#wishlist-table td button {
  white-space: normal; }

#wishlist-table .price-box {
  font-family: "Lato", sans-serif;
  font-size: 12px; }
  #wishlist-table .price-box .price {
    color: #636363; }

#wishlist-table .giftregisty-add {
  margin-top: 5px; }
  #wishlist-table .giftregisty-add .change {
    display: none; }
  #wishlist-table .giftregisty-add li {
    cursor: pointer;
    color: #fdb813;
    margin-bottom: 3px; }

#wishlist-table .truncated .details {
  background: none;
  color: #fdb813; }

#wishlist-table td[data-rwd-label]:before {
  font-weight: 600; }

@media only screen and (max-width: 1199px) {
  #wishlist-table.clean-table td {
    padding-left: 10px;
    padding-right: 10px; } }

@media only screen and (max-width: 979px) {
  #wishlist-table.clean-table td {
    padding-left: 5px;
    padding-right: 5px; }
    #wishlist-table.clean-table td textarea {
      height: 100px; }
    #wishlist-table.clean-table td.customer-wishlist-item-cart {
      width: 110px; }
  #wishlist-table .product-name {
    font-size: 13px; } }

@media only screen and (max-width: 770px) {
  #wishlist-table:after {
    content: '';
    display: table;
    clear: both; }
  #wishlist-table .product-name {
    font-size: 16px; }
  #wishlist-table textarea {
    height: 68px;
    max-width: 100%; }
  #wishlist-table .item-manage {
    max-width: 100%; }
  #wishlist-table tr {
    position: relative; }
    #wishlist-table tr:after {
      content: '';
      display: table;
      clear: both; }
  #wishlist-table td.customer-wishlist-item-image {
    width: 70px; }
    #wishlist-table td.customer-wishlist-item-image img {
      width: 70px;
      height: 70px; }
  #wishlist-table td.customer-wishlist-item-cart p {
    margin-bottom: 0; }
  #wishlist-table td.customer-wishlist-item-cart .remove-whishlist-item {
    margin-right: 0;
    padding-top: 4px; }
  #wishlist-table td.customer-wishlist-item-cart {
    padding-right: 15px; } }

@media only screen and (max-width: 599px) {
  #wishlist-table td.customer-wishlist-item-quantity {
    padding-left: 0; }
  #wishlist-table td.customer-wishlist-item-image,
  #wishlist-table th.customer-wishlist-item-image {
    display: none; } }

@media only screen and (max-width: 479px) {
  #wishlist-table tr {
    position: relative; }
  #wishlist-table th.customer-wishlist-item-image {
    display: block; }
  #wishlist-table td.customer-wishlist-item-image, #wishlist-table td.customer-wishlist-item-info, #wishlist-table td.customer-wishlist-item-quantity, #wishlist-table td.customer-wishlist-item-price, #wishlist-table td.customer-wishlist-item-cart {
    width: 100%;
    padding-left: 0;
    padding-right: 0;
    empty-cells: hide; }
  #wishlist-table td.customer-wishlist-item-image {
    display: block;
    overflow: hidden; }
    #wishlist-table td.customer-wishlist-item-image a {
      float: left; }
      #wishlist-table td.customer-wishlist-item-image a img {
        width: 113px;
        height: 113px; }
  #wishlist-table td.customer-wishlist-item-quantity, #wishlist-table td.customer-wishlist-item-price {
    text-align: left; }
    #wishlist-table td.customer-wishlist-item-quantity:before, #wishlist-table td.customer-wishlist-item-price:before {
      float: left;
      margin-right: 15px; }
    #wishlist-table td.customer-wishlist-item-quantity .cart-cell, #wishlist-table td.customer-wishlist-item-price .cart-cell {
      text-align: left; }
    #wishlist-table td.customer-wishlist-item-quantity .price-box, #wishlist-table td.customer-wishlist-item-price .price-box {
      margin-top: 0; }
  #wishlist-table td.customer-wishlist-item-cart .cart-cell {
    float: left;
    width: 48%; }
  #wishlist-table td.customer-wishlist-item-cart > p {
    float: right;
    width: 48%; }
  #wishlist-table td.customer-wishlist-item-remove {
    position: absolute;
    top: 15px;
    right: 0px;
    display: block;
    padding: 0px;
    height: 20px; }
  #wishlist-table.clean-table td.customer-wishlist-item-cart {
    width: 100%; } }

/* ============================================ *
 * Wishlist Sidebar
 * ============================================ */
.block-wishlist .mini-products-list > li:not(:last-child) {
  padding-bottom: 5px; }

.block-wishlist .product-details .product-name {
  padding-top: 0;
  margin-bottom: 5px; }

.block-wishlist .price-box {
  float: left;
  margin: 0; }

.block-wishlist .price-box,
.block-wishlist .price-box .price,
.block-wishlist .link-cart {
  font-size: 12px; }

.block-wishlist .link-cart {
  float: left;
  text-transform: uppercase;
  margin-right: 7px;
  padding-right: 7px;
  border-right: 1px solid #EDEDED; }

/* ============================================ *
 * Checkout - Mini cart
 * ============================================ */
.header-minicart {
  display: inline-block; }
  @media only screen and (max-width: 770px) {
    .header-minicart {
      display: block; } }
  .header-minicart .minicart-message {
    display: block;
    padding: 10px; }
  .header-minicart .empty {
    padding: 10px;
    text-align: center; }
  .header-minicart .minicart-wrapper {
    clear: both;
    position: relative; }
    .header-minicart .minicart-wrapper:before, .header-minicart .minicart-wrapper:after {
      content: '';
      position: absolute;
      top: 0px;
      left: 0px;
      width: 100%;
      height: 100%;
      display: none; }
    .header-minicart .minicart-wrapper:before {
      background-color: white;
      opacity: 0.8;
      z-index: 2; }
    .header-minicart .minicart-wrapper:after {
      background-image: url("../images/opc-ajax-loader.gif");
      background-repeat: no-repeat;
      background-position: center;
      z-index: 3; }
    .header-minicart .minicart-wrapper.loading {
      position: relative; }
      .header-minicart .minicart-wrapper.loading:before, .header-minicart .minicart-wrapper.loading:after {
        display: block; }
  .header-minicart .block-cart {
    display: none; }
  .header-minicart .block-subtitle {
    color: #50A4CF;
    font-family: "Lato", sans-serif;
    font-size: 10px;
    font-weight: bold;
    line-height: 1.4;
    padding: 5px;
    text-align: center;
    text-transform: uppercase;
    margin-bottom: 0px; }
    .header-minicart .block-subtitle .close {
      width: 40px;
      float: right;
      display: block;
      color: #636363;
      text-decoration: none;
      font-weight: normal;
      font-size: 30px;
      position: absolute;
      top: -8px;
      right: -3px; }
  .header-minicart .mini-products-list {
    padding: 10px;
    padding-top: 0px; }
    .header-minicart .mini-products-list li {
      padding: 8px 5px 8px 11px;
      border-bottom: 1px solid #DDDDDD;
      position: relative; }
      .header-minicart .mini-products-list li.last {
        border: none; }
      .header-minicart .mini-products-list li .product-details {
        position: relative; }
  .header-minicart .product-details .product-name {
    padding-top: 0px;
    font-weight: bold; }
    .header-minicart .product-details .product-name a {
      color: #fdb813; }
  .header-minicart .info-wrapper {
    margin-bottom: 0.5em; }
    .header-minicart .info-wrapper th {
      text-transform: uppercase;
      padding-right: 10px; }
    .header-minicart .info-wrapper td {
      color: #fdb813;
      clear: right; }
    .header-minicart .info-wrapper .qty-wrapper td {
      height: 33px;
      line-height: 33px; }
    .header-minicart .info-wrapper .qty {
      padding-left: 4px;
      padding-right: 4px;
      margin-right: 2px;
      width: 3.2em;
      text-align: center;
      height: 30px; }
    .header-minicart .info-wrapper .quantity-button {
      opacity: 0;
      -webkit-transition-property: opacity;
      -moz-transition-property: opacity;
      transition-property: opacity;
      -webkit-transition-duration: 100ms;
      -moz-transition-duration: 100ms;
      transition-duration: 100ms; }
      .header-minicart .info-wrapper .quantity-button[disabled] {
        cursor: default; }
      .header-minicart .info-wrapper .quantity-button.visible {
        opacity: 1; }
  .header-minicart .subtotal {
    background-color: #DDDDDD;
    text-align: center;
    line-height: 2em; }
    .header-minicart .subtotal .label {
      color: white;
      text-transform: uppercase; }
    .header-minicart .subtotal .price {
      color: #fdb813; }
  .header-minicart .minicart-actions {
    padding: 10px;
    margin-top: 0px;
    overflow: hidden;
    position: relative;
    text-align: center; }
    .header-minicart .minicart-actions .checkout-button {
      min-width: 145px; }
    .header-minicart .minicart-actions .cart-link {
      height: 33px;
      line-height: 39px;
      text-transform: uppercase;
      font-size: 13px; }
    .header-minicart .minicart-actions .paypal-logo .paypal-or {
      line-height: 1.6; }
  .header-minicart #minicart-error-message {
    text-align: center;
    color: red;
    display: none; }
  .header-minicart #minicart-success-message {
    text-align: center;
    color: green;
    display: none; }
  .header-minicart .jcarousel-control-prev,
  .header-minicart .jcarousel-control-next {
    display: none; }

.header-minicart.skip-active .block-cart,
.block-cart.skip-active {
  display: block; }

@media only screen and (min-width: 771px) {
  .checkout-types.minicart {
    float: none;
    text-align: center; } }

@media only screen and (max-width: 479px) {
  .header-minicart a.skip-cart {
    z-index: 1; } }

@media only screen and (max-width: 770px) {
  .header-minicart .subtotal .label {
    color: #636363; }
  .header-minicart .minicart-wrapper:before {
    background-color: #EDEDED; }
  .header-minicart .quantity-button {
    float: none; }
  .header-minicart .header-minicart .block-cart {
    padding: 15px; }
  .header-minicart .header-minicart .block-subtitle {
    padding-top: 59px; }
  .header-minicart .minicart-actions {
    padding-bottom: 33px; }
    .header-minicart .minicart-actions .cart-link {
      bottom: 0;
      right: 10px;
      position: absolute; }
    .header-minicart .minicart-actions .checkout-types.minicart li {
      display: inline-block; }
      .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo > a {
        display: inline; }
      .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo .bml_button {
        display: inline-block;
        vertical-align: top; }
      .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo .paypal-or {
        width: auto;
        float: none;
        display: inline;
        margin: 0 10px 5px 10px;
        line-height: 40px; } }

@media only screen and (max-width: 740px) {
  .header-minicart .minicart-actions .cart-link {
    right: auto;
    left: 0;
    text-align: center;
    width: 100%; }
  .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo .paypal-or,
  .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo .paypal-button {
    width: 100%;
    display: block;
    margin-left: 0; }
  .header-minicart .minicart-actions .checkout-types.minicart li .paypal-logo .paypal-or {
    line-height: 1.6; } }

@media only screen and (max-width: 599px) {
  .header-minicart .minicart-actions .checkout-button {
    width: 100%; } }

/* ============================================ *
 * Search - Auto Suggest
 * ============================================ */
.search-autocomplete {
  left: 0 !important;
  overflow: visible !important;
  position: relative !important;
  top: 15px !important;
  width: 100% !important;
  z-index: 200; }
  .search-autocomplete:before {
    display: none; }
  .search-autocomplete ul {
    -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
    -ms-border-radius: 2px;
    -o-border-radius: 2px;
    border-radius: 2px;
    background-color: #FFFFFF;
    border: 1px solid #fdb813;
    left: 0;
    padding-left: 0;
    position: absolute;
    top: 0;
    width: 100%; }
    .search-autocomplete ul li {
      border-bottom: 1px solid #F4F4F4;
      color: #fdb813;
      cursor: pointer;
      font-size: 12px;
      padding: 4px 6px;
      text-align: left; }
      .search-autocomplete ul li:hover {
        color: #f4ad02; }
      .search-autocomplete ul li.selected {
        background-color: #fdb813;
        color: white; }
      .search-autocomplete ul li .amount {
        float: right;
        font-weight: bold; }
      .search-autocomplete ul li:last-child {
        border-bottom: none; }
  .search-autocomplete:before {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 7px solid transparent;
    border-left: 7px solid transparent;
    border-bottom: 7px solid #fdb813;
    border-top: none;
    left: 50%;
    top: -7px; }

/* ============================================ *
 * Search - Advanced
 * ============================================ */
.advanced-search {
  background: #F4F4F4;
  border: 1px solid #EDEDED;
  padding: 30px; }
  .advanced-search select.multiselect option {
    border-bottom: 1px solid #EDEDED;
    padding: 2px 5px; }

@media only screen and (max-width: 479px) {
  .advanced-search {
    padding: 15px; } }

.gallery-results {
  min-height: 70px; }
  .gallery-results h2 {
    color: #636363;
    font-size: 15px;
    margin-bottom: 15px; }
  .gallery-results a {
    font-size: 15px;
    font-weight: bold;
    padding-bottom: 5px;
    text-decoration: underline;
    display: block; }

/* ============================================ *
 * Account - Reviews
 * ============================================ */
.product-review .product-img-box p.label {
  border-bottom: 1px solid #CCCCCC;
  font-size: 16px;
  font-family: "Lato", sans-serif;
  margin-top: 20px;
  padding-bottom: 10px;
  text-transform: uppercase; }

.product-review .product-img-box .rating-box {
  margin: 15px 0; }

.product-review .product-details h2 {
  border-bottom: 1px solid #CCCCCC;
  color: #3399CC;
  font-size: 16px;
  font-weight: 600;
  font-family: "Lato", sans-serif;
  padding-bottom: 10px; }

.product-review .ratings-table {
  font-family: "Lato", sans-serif; }
  .product-review .ratings-table th {
    padding-right: 10px; }
  .product-review .ratings-table tr {
    float: left;
    font-size: 12px;
    margin-right: 10px;
    text-transform: uppercase; }

.product-review .ratings-description dt {
  border-bottom: 1px solid #CCCCCC;
  font-size: 16px;
  font-weight: 400;
  font-family: "Lato", sans-serif;
  margin-top: 20px;
  padding: 10px 0;
  text-transform: uppercase; }

.product-review .ratings-description dd {
  color: #737373;
  font-family: "Lato", sans-serif;
  font-size: 13px; }

@media only screen and (min-width: 771px) {
  .product-review .ratings-table tr {
    float: none; } }

@media only screen and (min-width: 1126px) {
  .product-review .ratings-table tr {
    float: left;
    margin-right: 15px; } }

@media only screen and (max-width: 320px) {
  .product-review .ratings-table tr {
    float: none; } }

/* ============================================ *
 * CMS Pages
 * ============================================ */
.cms-page-view .page-title h1,
.cms-page-view .page-title h3,
.cms-page-view .page-head h1,
.cms-page-view .page-head h3,
.cms-no-route .page-title h1,
.cms-no-route .page-title h3,
.cms-no-route .page-head h1,
.cms-no-route .page-head h3 {
  border: none; }

.cms-page-view .std img,
.cms-no-route .std img {
  max-width: 100%; }

.cms-page-view .std p,
.cms-no-route .std p {
  color: #636363;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  line-height: 24px; }

.cms-page-view .std h1,
.cms-no-route .std h1 {
  color: #fdb813; }

.cms-page-view .std h2,
.cms-no-route .std h2 {
  color: #fdb813; }

.cms-page-view .std li,
.cms-no-route .std li {
  color: #636363;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  line-height: 24px; }

.cms-page-view .col-left:after,
.cms-no-route .col-left:after {
  content: '';
  display: table;
  clear: both; }

.cms-page-view .std .messages,
.cms-home .std .messages,
.cms-no-route .std .messages {
  margin-bottom: 10px; }
  .cms-page-view .std .messages ul,
  .cms-home .std .messages ul,
  .cms-no-route .std .messages ul {
    margin-bottom: 0; }
  .cms-page-view .std .messages li,
  .cms-home .std .messages li,
  .cms-no-route .std .messages li {
    list-style: none;
    margin-left: 0;
    font-style: normal;
    font-family: "Lato", sans-serif; }

#accordion .toggle-tabs {
  display: none; }

#accordion > dl > dt {
  margin: 0;
  margin-bottom: 10px;
  color: #f7b340;
  font-family: "Lato", sans-serif;
  font-size: 14px;
  font-weight: bold;
  font-style: normal;
  line-height: 1.4;
  text-rendering: optimizeSpeed;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
  -o-user-select: none;
  user-select: none;
  font-weight: normal;
  margin-bottom: 0px;
  padding: 7px 10px 7px 24px;
  border-width: 1px;
  border-style: solid;
  border-color: #CCCCCC;
  position: relative;
  background-color: #F4F4F4;
  display: block; }
  #accordion > dl > dt:after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    display: block;
    border-right: 4px solid transparent;
    border-left: 4px solid transparent;
    border-top: 4px solid #fdb813;
    border-bottom: none;
    left: 10px;
    top: 50%;
    margin-top: -3px; }
  #accordion > dl > dt:hover {
    background-color: #ededed; }

#accordion > dl > dd {
  padding: 10px;
  margin: 0;
  border-width: 0 1px;
  border-style: solid;
  border-color: #CCCCCC; }

#accordion > dl > dd:last-child {
  border-width: 0 1px 1px 1px; }

#accordion li {
  position: relative;
  overflow: hidden; }
  #accordion li .plusimage h2 {
    margin-right: 10px; }

.page-sitemap .links {
  display: block;
  text-align: right;
  margin: 0 20px 0 0; }
  .page-sitemap .links a {
    position: relative; }

.page-sitemap .sitemap {
  padding: 0 20px;
  margin: 15px 0;
  font-size: 12px; }
  .page-sitemap .sitemap li {
    margin: 3px 0; }

.contacts-index-index h1 {
  border: none; }

#contactForm {
  padding-left: 40px; }
  #contactForm h2 {
    display: none; }
  #contactForm:after {
    content: '';
    display: table;
    clear: both; }
  #contactForm .fieldset .legend + .required {
    margin: 0; }

@media only screen and (max-width: 770px) {
  #contactForm {
    padding-left: 0; } }

/* ============================================ *
 * Pricing Conditions
 * ============================================ */
.price-box .minimal-price-link .label {
  color: #CF5050;
  font-family: "Lato", sans-serif;
  font-size: 12px;
  text-transform: uppercase; }

.map-info {
  white-space: nowrap; }

.catalog-product-view .map-info {
  white-space: normal; }
  .catalog-product-view .map-info > span {
    float: right;
    margin-bottom: 5px; }
  .catalog-product-view .map-info .price-box.map-info > a {
    float: right;
    width: 100%; }

/* ============================================ *
 * Cookies
 * ============================================ */
.notice-cookie .notice-inner {
  padding-bottom: 0; }
  .notice-cookie .notice-inner:after {
    content: '';
    display: table;
    clear: both; }

.notice-cookie .notice-text {
  float: left;
  max-width: 90%;
  padding-top: 4px;
  text-align: left; }
  .notice-cookie .notice-text p {
    padding-bottom: 14.5px;
    line-height: 1.3; }

.notice-cookie .actions {
  float: left;
  text-align: right;
  padding-bottom: 14.5px; }

@media only screen and (max-width: 979px) {
  .notice-cookie .notice-text {
    max-width: 86%; } }

@media only screen and (max-width: 770px) {
  .notice-cookie {
    padding: 0 20px; }
    .notice-cookie .notice-text {
      max-width: 82%;
      padding-top: 0; } }

@media only screen and (max-width: 620px) {
  .notice-cookie {
    padding: 0 20px; }
    .notice-cookie .notice-inner {
      background-position: left 10px; }
      .notice-cookie .notice-inner:after {
        content: '';
        display: table;
        clear: both; }
    .notice-cookie .notice-text {
      float: none;
      max-width: 100%;
      padding-top: 0; }
    .notice-cookie .actions {
      text-align: left; } }

/* ============================================ *
 * Tags
 * ============================================ */
#addTagForm button {
  margin-top: 5px;
  margin-bottom: 10px; }

#addTagForm .form-add {
  margin-top: 10px; }

.product-tags {
  background-color: #F4F4F4;
  border: 1px solid #CCCCCC;
  float: left;
  margin-bottom: 10px;
  padding: 5px 1% 10px;
  width: 98%; }

.product-tags li {
  float: left;
  margin-right: 15px; }

.product-tags li.last {
  margin-right: 0px; }

.tags-list {
  float: left;
  width: 100%;
  margin-bottom: 10px; }

.tags-list > li {
  float: left;
  margin-right: 10px; }

.block-tags .actions > a {
  font-size: 12px; }

.my-tag-edit .button.btn-remove {
  padding: 0; }
  .my-tag-edit .button.btn-remove:after {
    color: white; }

@media only screen and (max-width: 770px) {
  .tags-list > li,
  .tags-list {
    float: none; } }

/* ============================================ *
 * Captcha
 * ============================================ */
.captcha-note {
  clear: left;
  padding-top: 5px; }

.captcha-image {
  float: left;
  display: inline;
  max-width: 100%;
  position: relative;
  width: 258px;
  margin-bottom: 10px; }

.captcha-image .captcha-img {
  border: 1px solid #b6b6b6;
  vertical-align: bottom;
  width: 100%; }

.registered-users .captcha-image {
  margin: 0; }

.captcha-reload {
  cursor: pointer;
  position: absolute;
  top: 2px;
  right: 2px; }

.captcha-reload.refreshing {
  animation: rotate 1.5s infinite linear;
  -webkit-animation: rotate 1.5s infinite linear;
  -moz-animation: rotate 1.5s infinite linear; }

.customer-account-create .scaffold-form .captcha-input-container label:first-child {
  width: 100%; }

.captcha-reload {
  position: absolute;
  right: 4px;
  top: 4px; }

.captcha-img {
  border: 20px solid #bbb; }

.captcha-input-container {
  margin-bottom: 10px; }

.control.newsletter-box, .captcha-input-container, .captcha-img-container {
  float: none;
  clear: both; }
  .control.newsletter-box:after, .captcha-input-container:after, .captcha-img-container:after {
    content: '';
    content: '';
    display: table;
    clear: both; }

/* ============================================ *
 * Checkout Billing Fix to place the Captcha properly
 * ============================================ */
#co-billing-form ul.form-list > .control {
  float: left;
  margin: 0 0 5px;
  width: 100%; }

/* ============================================ *
 * Account - Orders, Invoices, Credit Memos.
 * ============================================ */
@media only screen and (max-width: 479px) {
  .sales-order-invoice .sub-title,
  .sales-order-creditmemo .sub-title,
  .sales-order-shipment .sub-title {
    float: left;
    font-size: 15px;
    text-align: center;
    width: 100%; }
  .sales-order-invoice .order-links,
  .sales-order-creditmemo .order-links,
  .sales-order-shipment .order-links {
    text-align: center;
    width: 100%; } }

/* ============================================ *
 * Recurring Profiles
 * ============================================ */
#recurring_profile_list_view th {
  white-space: normal; }
  #recurring_profile_list_view th span {
    white-space: inherit; }

@media only screen and (max-width: 479px) {
  #recurring_profile_list_view {
    font-size: 12px; }
    #recurring_profile_list_view a {
      font-size: inherit; }
    #recurring_profile_list_view th,
    #recurring_profile_list_view td {
      padding: 2px; } }

.recurring-profiles-title {
  float: left; }
  .recurring-profiles-title h1 {
    margin-bottom: 7px; }

body.customer-account .my-account .title-buttons.recurring-profiles-title-buttons {
  float: right;
  text-align: right;
  margin-bottom: 30px; }
  @media only screen and (max-width: 479px) {
    body.customer-account .my-account .title-buttons.recurring-profiles-title-buttons {
      text-align: center;
      float: none; } }
  body.customer-account .my-account .title-buttons.recurring-profiles-title-buttons .button {
    position: static; }

.recurring-profiles-messages:after {
  content: '';
  display: table;
  clear: both; }

#recurring_start_date_trig {
  display: inline; }

/* ============================================ *
 * Billing Agreements
 * ============================================ */
.billing-agreements .info-box {
  margin-bottom: 30px; }
  .billing-agreements .info-box:after {
    content: '';
    display: table;
    clear: both; }
  .billing-agreements .info-box .form-list {
    max-width: 400px;
    width: 100%; }
  .billing-agreements .info-box .box-title {
    margin-top: 20px;
    margin-bottom: 7px; }
  .billing-agreements .info-box .button {
    float: right;
    margin-top: 7px; }
    @media only screen and (max-width: 479px) {
      .billing-agreements .info-box .button {
        width: 100%;
        float: none; } }

.billing-agreements #payment_method {
  width: 100%;
  margin-top: 7px;
  margin-bottom: 7px; }

.billing-agreement-view-header-wrapper .heading {
  max-width: 80%; }
  @media only screen and (max-width: 479px) {
    .billing-agreement-view-header-wrapper .heading {
      max-width: 100%; } }

.billing-agreement-details td, .billing-agreement-details th {
  padding: 3.5px; }

@media only screen and (max-width: 979px) {
  .billing-agreements .data-table .created-at,
  .billing-agreements .data-table .updated-at {
    display: none; } }

/* ============================================ *
 * Popular Search Terms Cloud
 * ============================================ */
.catalogsearch-term-popular .tags-list {
  float: left;
  width: 100%; }

.catalogsearch-term-popular .tags-list > li {
  float: left;
  height: 40px;
  margin-right: 25px; }

/* ============================================ *
 * Widgets
 * ============================================ */
/* -------------------------------------------- *
 * Add to cart by SKU
 */
.sidebar .widget-addbysku .sku-table .input-text:not(.qty) {
  width: 100%; }
  @media only screen and (min-width: 771px) {
    .sidebar .widget-addbysku .sku-table .input-text:not(.qty) {
      max-width: 100px; } }

.widget {
  clear: both; }

.widget .pager {
  float: none;
  width: 100%; }

@media only screen and (min-width: 1199px) {
  .col2-left-layout .col-main .widget,
  .col2-right-layout .col-main .widget,
  .col3-layout .col-main .widget {
    /* Config: Columns + flexible gutter */
    /* Undo three-column config */
    /* Set column config */
    /* Config: Columns + flexible gutter */
    /* Undo three-column config */
    /* Set column config */ }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(odd),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(odd),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(odd) {
      clear: none; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n+1),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n+1),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n+1) {
      clear: none; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(even),
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(even),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(even),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n) {
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li,
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li,
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li {
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li,
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li,
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li {
      width: 23.33333%;
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n+1),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n+1),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n+1) {
      clear: left; }
    .col2-left-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n),
    .col2-right-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n),
    .col3-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n) {
      margin-right: 0; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(odd),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(odd),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(odd) {
      clear: none; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n+1),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n+1),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n+1) {
      clear: none; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(even),
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(even),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(even),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n) {
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li,
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li,
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li {
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li,
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li,
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li {
      width: 18.22222%;
      margin-right: 2.22222%; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n+1),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n+1),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n+1) {
      clear: left; }
    .col2-left-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n),
    .col2-right-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n),
    .col3-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n) {
      margin-right: 0; } }

@media only screen and (min-width: 770px) {
  .col1-layout .col-main .widget {
    /* Config: Columns + flexible gutter */
    /* Undo three-column config */
    /* Set column config */
    /* Config: Columns + flexible gutter */
    /* Undo three-column config */
    /* Set column config */ }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(odd) {
      clear: none; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n+1) {
      clear: none; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(even),
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(3n) {
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li {
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li {
      width: 23.33333%;
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n+1) {
      clear: left; }
    .col1-layout .col-main .widget .products-grid--max-4-col-widget > li:nth-child(4n) {
      margin-right: 0; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(odd) {
      clear: none; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n+1) {
      clear: none; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(even),
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(3n) {
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li {
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li {
      width: 18.22222%;
      margin-right: 2.22222%; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n+1) {
      clear: left; }
    .col1-layout .col-main .widget .products-grid--max-5-col-widget > li:nth-child(5n) {
      margin-right: 0; } }

/* ============================================ *
 * Checkout - Multiple Addresses
 * ============================================ */
body[class*="checkout-multishipping-"] .checkout-progress {
  width: 100%;
  float: left;
  margin-bottom: 25px; }
  body[class*="checkout-multishipping-"] .checkout-progress > li {
    float: left;
    width: 20%;
    text-align: center;
    padding: 8px 1% 6px;
    background: #F4F4F4;
    text-transform: uppercase;
    border-bottom: 1px solid #CCCCCC;
    border-right: 1px solid #CCCCCC;
    margin-bottom: 10px;
    font-family: "Lato", sans-serif; }
    body[class*="checkout-multishipping-"] .checkout-progress > li.active {
      background-color: #DDDDDD; }
    body[class*="checkout-multishipping-"] .checkout-progress > li.last {
      border-right: 0px; }

body[class*="checkout-multishipping-"] .page-title {
  float: left;
  width: 100%;
  margin-bottom: 15px; }
  body[class*="checkout-multishipping-"] .page-title h1 {
    border: 0 none;
    float: left;
    margin-top: 2px;
    margin-right: 2%; }
  body[class*="checkout-multishipping-"] .page-title .button {
    float: right; }

body[class*="checkout-multishipping-"] .multiple-checkout > h2 {
  text-transform: none;
  font-size: 17px;
  margin-bottom: 15px; }

body[class*="checkout-multishipping-"] .messages {
  float: left;
  width: 100%; }

body[class*="checkout-multishipping-"] .col-2.col-wide {
  width: 66%; }

body[class*="checkout-multishipping-"] .col-1.col-narrow {
  width: 30%; }

body[class*="checkout-multishipping-"] .actions {
  margin-bottom: 10px; }

body[class*="checkout-multishipping-"] .grand-total {
  text-align: right;
  font-size: 16px;
  font-weight: bold; }

body[class*="checkout-multishipping-"] #checkout-review-submit {
  float: right; }

body[class*="checkout-multishipping-"] #review-buttons-container {
  float: right;
  text-align: right; }

.checkout-multishipping-addresses .btn-remove2 {
  text-indent: -5555px;
  display: block;
  width: 22px;
  height: 22px; }

.checkout-multishipping-shipping .gift-messages {
  margin-top: 20px; }

.checkout-multishipping-shipping .gift-messages-form {
  margin-top: 15px; }
  .checkout-multishipping-shipping .gift-messages-form h4 {
    margin-top: 15px;
    margin-bottom: 5px; }
  .checkout-multishipping-shipping .gift-messages-form .form-list {
    margin-top: 10px;
    margin-bottom: 25px; }
  .checkout-multishipping-shipping .gift-messages-form .item {
    margin-top: 15px; }

.checkout-multishipping-shipping .col-1 .box-title h2, .checkout-multishipping-shipping .col-1 .box-title h3, .checkout-multishipping-shipping .col-1 .box-title h4, .checkout-multishipping-shipping .col-2 .box-title h2, .checkout-multishipping-shipping .col-2 .box-title h3, .checkout-multishipping-shipping .col-2 .box-title h4,
.checkout-multishipping-billing .col-1 .box-title h2,
.checkout-multishipping-billing .col-1 .box-title h3,
.checkout-multishipping-billing .col-1 .box-title h4,
.checkout-multishipping-billing .col-2 .box-title h2,
.checkout-multishipping-billing .col-2 .box-title h3,
.checkout-multishipping-billing .col-2 .box-title h4,
.checkout-multishipping-overview .col-1 .box-title h2,
.checkout-multishipping-overview .col-1 .box-title h3,
.checkout-multishipping-overview .col-1 .box-title h4,
.checkout-multishipping-overview .col-2 .box-title h2,
.checkout-multishipping-overview .col-2 .box-title h3,
.checkout-multishipping-overview .col-2 .box-title h4 {
  font-weight: normal;
  width: 100%;
  background: #F4F4F4;
  border-bottom: 1px solid #CCCCCC;
  padding: 10px;
  font-size: 14px; }

.checkout-multishipping-shipping .col-1 > h4, .checkout-multishipping-shipping .col-2 > h4,
.checkout-multishipping-billing .col-1 > h4,
.checkout-multishipping-billing .col-2 > h4,
.checkout-multishipping-overview .col-1 > h4,
.checkout-multishipping-overview .col-2 > h4 {
  font-weight: normal;
  width: 100%;
  background: #F4F4F4;
  border-bottom: 1px solid #CCCCCC;
  padding: 10px;
  font-size: 14px; }

.checkout-multishipping-shipping .col-1 .box-content, .checkout-multishipping-shipping .col-2 .box-content,
.checkout-multishipping-billing .col-1 .box-content,
.checkout-multishipping-billing .col-2 .box-content,
.checkout-multishipping-overview .col-1 .box-content,
.checkout-multishipping-overview .col-2 .box-content {
  margin-bottom: 25px;
  padding-left: 10px;
  margin-top: 10px; }

.checkout-multishipping-billing .sp-methods dt {
  float: left;
  width: 100%; }

#multiship-addresses-table > tbody > tr > td.a-center.last > a {
  background-image: none; }

#review-order-form > div:nth-child(3) > div.divider {
  width: 100%;
  clear: both; }

@media only screen and (max-width: 979px) {
  body[class*="checkout-multishipping-"] .checkout-progress span {
    word-spacing: 300px; }
  #review-order-form .col-1,
  #review-order-form .col-2 {
    float: none;
    width: auto;
    border: 0;
    padding-right: 0;
    padding-left: 0; } }

@media only screen and (max-width: 770px) {
  body[class*="checkout-multishipping-"] .checkout-progress span {
    width: 12px; }
  body[class*="checkout-multishipping-"] .checkout-progress li {
    width: 100%;
    margin: 0;
    text-align: left;
    padding-left: 3%;
    border-right: 0px; }
  body[class*="checkout-multishipping-"] .checkout-progress span {
    word-spacing: 1px;
    width: 12px; }
  body[class*="checkout-multishipping-"] .box-title {
    float: left;
    width: 100%; }
  body[class*="checkout-multishipping-"] .page-title .button {
    float: left;
    margin-bottom: 10px; }
  body[class*="checkout-multishipping-"] .linearize-table tfoot td {
    text-align: right; }
  body[class*="checkout-multishipping-"] .linearize-table select {
    width: 100%;
    min-width: 200px; }
  body[class*="checkout-multishipping-"] .col-1.col-narrow, body[class*="checkout-multishipping-"] .col-2.col-wide {
    width: 100%;
    padding: 0; } }

@media only screen and (max-width: 599px) {
  .checkout-multishipping-addresses .linearize-table tbody td[data-rwd-label] {
    text-align: left;
    padding-left: 10px;
    margin-top: 12px; } }

@media only screen and (max-width: 479px) {
  body[class*="checkout-multishipping-"] .buttons-set .back-link {
    display: block; } }

@font-face {
  font-family: "ennis-flint";
  src: url("../fonts/ennis-flint-icon.eot");
  src: url("../fonts/ennis-flint-icon.eot?#iefix") format("embedded-opentype"), url("../fonts/ennis-flint-icon.woff") format("woff"), url("../fonts/ennis-flint-icon.ttf") format("truetype"), url("../fonts/ennis-flint-icon.svg#ennis-flint-icon") format("svg");
  font-weight: normal;
  font-style: normal; }

[data-icon]:before {
  font-family: "ennis-flint" !important;
  content: attr(data-icon);
  font-style: normal !important;
  font-weight: normal !important;
  font-variant: normal !important;
  text-transform: none !important;
  speak: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

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

.icon-facebook:before {
  content: "a"; }

.icon-linkedin:before {
  content: "b"; }

.icon-pinterest:before {
  content: "c"; }

.icon-tumblr:before {
  content: "d"; }

.icon-twitter:before {
  content: "e"; }

.icon-youtube-play:before {
  content: "f"; }

.icon-tablet:before {
  content: "g"; }

.icon-letter-mail:before {
  content: "h"; }

.icon-heart:before {
  content: "i"; }

.icon-heart-empty:before {
  content: "j"; }

.icon-google-plus:before {
  content: "k"; }

.icon-arrow-right:before {
  content: "l"; }

.icon-arrow-up:before {
  content: "m"; }

.icon-arrow-left:before {
  content: "n"; }

.icon-arrow-down:before {
  content: "o"; }

.icon-star-two:before {
  content: "p"; }

.icon-instagram:before {
  content: "q"; }

.icon-gears-setting:before {
  content: "r"; }

.cwsRwdSlider .slides {
  height: 400px; }
  .cwsRwdSlider .slides li {
    position: relative;
    overflow: auto; }
    .cwsRwdSlider .slides li img {
      top: 0;
      right: 0;
      left: 0; }

.sliderdecs {
  top: 0px;
  right: 30px;
  left: 30px;
  width: auto;
  border-left: 0;
  text-align: center;
  padding: 10px 5px; }
  .sliderdecs p {
    display: none; }
  .sliderdecs h3 {
    font-size: 1em; }

.cws-viewport {
  max-height: 120px; }

@media only screen and (min-width: 480px) {
  .cws-viewport {
    max-height: 180px; }
  .sliderdecs {
    padding: 20px;
    text-align: left; }
    .sliderdecs h3 {
      font-size: 2em; }
    .sliderdecs p {
      display: block; } }

@media only screen and (min-width: 768px) {
  .cws-viewport {
    max-height: 299px; }
  .sliderdecs {
    max-width: 25em;
    top: 55px;
    right: auto;
    left: 15%; }
    .sliderdecs h3 {
      margin-bottom: .5em; } }

@media only screen and (min-width: 1400px) {
  .cws-viewport {
    max-height: 400px; }
  .sliderdecs {
    top: 75px;
    left: 18%; } }

.filter-news {
  font-size: 11px;
  border-bottom: 2px dotted #a0a0a0;
  padding-bottom: 2em;
  margin-bottom: 1em;
  line-height: 1.8em; }
  .filter-news button {
    font-size: 13px;
    background-color: #fff;
    border: 1px #646463 solid;
    transition: all .25s ease-in-out; }
  .filter-news button.news-selected {
    background-color: #fdb813; }

.menu-categories h5 {
  color: #636363; }

.block.news-categories {
  border: none; }
  .block.news-categories .block-title {
    border-top: none; }
    .block.news-categories .block-title strong {
      color: #fdb813; }

.news_image {
  margin-top: 7px; }

#news-parent .news-item {
  background-color: #f5f5f5;
  padding: 6px 15px; }
  #news-parent .news-item p {
    font-size: 16px; }
  #news-parent .news-item .date {
    color: #999; }

.news-item-content {
  padding: 2em 1em; }
  .news-item-content a {
    color: #fdb813; }
    .news-item-content a:hover {
      color: #f4ad02; }
    .news-item-content a:focus {
      color: #fdb813; }
    .news-item-content a:active {
      color: #fdb406; }
    .news-item-content a:visited {
      outline: none; }
  .news-item-content .back {
    font-size: 1.25em; }
  .news-item-content .social,
  .news-item-content .news {
    clear: both; }
  .news-item-content .date {
    text-align: center;
    font-size: 14px; }
    .news-item-content .date i {
      font-size: 20px;
      text-align: center;
      display: block;
      width: 100%; }
  .news-item-content .news {
    font-size: 1.1em;
    line-height: 1.6;
    text-align: left; }
    .news-item-content .news p {
      margin-bottom: 1.5em; }
  .news-item-content .news_title, .news-item-content h4 {
    font-size: 1.5em;
    line-height: 1.1;
    text-transform: none; }
  .news-item-content .news_image img {
    max-height: 350px;
    max-width: 100%; }

.loadfile {
  font-size: 14px; }

@media only screen and (min-width: 1080px) {
  .news-item-content {
    padding: 0 0 2em; } }

/* ============================================ *
 * Calendar styles (restore styles from /js/calendar)
 * ============================================ */
div.calendar table {
  border-collapse: separate; }
  div.calendar table td.button {
    display: table-cell;
    background: inherit;
    color: inherit;
    text-transform: none; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXMiOlsic3R5bGVzLnNjc3MiLCJfZnJhbWV3b3JrLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL19jb21wYXNzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX2Z1bmN0aW9ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fbGlzdHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZ3JhZGllbnRfc3VwcG9ydC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29uc3RhbnRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19kaXNwbGF5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb2xvcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fdXRpbGl0aWVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19jb2xvci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9jb2xvci9fY29udHJhc3Quc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2dlbmVyYWwuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fcmVzZXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9yZXNldC9fdXRpbGl0aWVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2NsZWFyZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fZmxvYXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fdGFnLWNsb3VkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX21pbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fc3ByaXRlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9zcHJpdGVzL19iYXNlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX3Nwcml0ZS1pbWcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX3RhYmxlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19ib3JkZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fc2NhZmZvbGRpbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saW5rcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2hvdmVyLWxpbmsuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpbmtzL19saW5rLWNvbG9ycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX3Vuc3R5bGVkLWxpbmsuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L19saXN0cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2hvcml6b250YWwtbGlzdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2J1bGxldHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19pbmxpbmUtbGlzdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1ibG9jay1saXN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9faW5saW5lLWJsb2NrLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZWxsaXBzaXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3ZlcnRpY2FsX3JoeXRobS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2xheW91dC9fZ3JpZC1iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9faW1hZ2VzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1zaXplLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX2NzczMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fb3BhY2l0eS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190ZXh0LXNoYWRvdy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2NvbHVtbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm94LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1jbGlwLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1vcmlnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mb250LWZhY2Uuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYXBwZWFyYW5jZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3JlZ2lvbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19oeXBoZW5hdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ZpbHRlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3BpZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3VzZXItaW50ZXJmYWNlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZmxleGJveC5zY3NzIiwiYm91cmJvbi9fYm91cmJvbi5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19hc3NldC1waXBlbGluZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2NvbnRhaW5zLWZhbHN5LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1udW1iZXIuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX21vZHVsYXItc2NhbGUuc2NzcyIsImJvdXJib24vaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsImJvdXJib24vaGVscGVycy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsImJvdXJib24vaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsImJvdXJib24vaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCJib3VyYm9uL2NzczMvX2FuaW1hdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2dyb3VuZC5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiYm91cmJvbi9jc3MzL19jYWxjLnNjc3MiLCJib3VyYm9uL2NzczMvX2NvbHVtbnMuc2NzcyIsImJvdXJib24vY3NzMy9fZmlsdGVyLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJib3VyYm9uL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiYm91cmJvbi9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsImJvdXJib24vY3NzMy9faGlkcGktbWVkaWEtcXVlcnkuc2NzcyIsImJvdXJib24vY3NzMy9faHlwaGVucy5zY3NzIiwiYm91cmJvbi9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsImJvdXJib24vY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJib3VyYm9uL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiYm91cmJvbi9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiYm91cmJvbi9jc3MzL19wbGFjZWhvbGRlci5zY3NzIiwiYm91cmJvbi9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsImJvdXJib24vY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL190cmFuc2Zvcm0uc2NzcyIsImJvdXJib24vY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItc3R5bGUuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsImJvdXJib24vYWRkb25zL19idXR0b25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fY2xlYXJmaXguc2NzcyIsImJvdXJib24vYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9faGlkZS10ZXh0LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3Bvc2l0aW9uLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsImJvdXJib24vYWRkb25zL19zaXplLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsImJvdXJib24vYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdHJpYW5nbGUuc2NzcyIsImJvdXJib24vYWRkb25zL193b3JkLXdyYXAuc2NzcyIsImJvdXJib24vX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwiLi4vbmVhdC9fbmVhdC5zY3NzIiwiLi4vbmVhdC9fbmVhdC1oZWxwZXJzLnNjc3MiLCIuLi9uZWF0L2Z1bmN0aW9ucy9fcHJpdmF0ZS5zY3NzIiwiLi4vbmVhdC9mdW5jdGlvbnMvX25ldy1icmVha3BvaW50LnNjc3MiLCIuLi9uZWF0L3NldHRpbmdzL19ncmlkLnNjc3MiLCIuLi9uZWF0L3NldHRpbmdzL192aXN1YWwtZ3JpZC5zY3NzIiwiLi4vbmVhdC9zZXR0aW5ncy9fZGlzYWJsZS13YXJuaW5ncy5zY3NzIiwiLi4vbmVhdC9ncmlkL19wcml2YXRlLnNjc3MiLCIuLi9uZWF0L2dyaWQvX2JveC1zaXppbmcuc2NzcyIsIi4uL25lYXQvZ3JpZC9fb21lZ2Euc2NzcyIsIi4uL25lYXQvZ3JpZC9fb3V0ZXItY29udGFpbmVyLnNjc3MiLCIuLi9uZWF0L2dyaWQvX3NwYW4tY29sdW1ucy5zY3NzIiwiLi4vbmVhdC9ncmlkL19yb3cuc2NzcyIsIi4uL25lYXQvZ3JpZC9fc2hpZnQuc2NzcyIsIi4uL25lYXQvZ3JpZC9fcGFkLnNjc3MiLCIuLi9uZWF0L2dyaWQvX2ZpbGwtcGFyZW50LnNjc3MiLCIuLi9uZWF0L2dyaWQvX21lZGlhLnNjc3MiLCIuLi9uZWF0L2dyaWQvX3RvLWRlcHJlY2F0ZS5zY3NzIiwiLi4vbmVhdC9ncmlkL192aXN1YWwtZ3JpZC5zY3NzIiwiLi4vbmVhdC9ncmlkL19kaXNwbGF5LWNvbnRleHQuc2NzcyIsIi4uL25lYXQvZ3JpZC9fZGlyZWN0aW9uLWNvbnRleHQuc2NzcyIsIl92YXIuc2NzcyIsImZ1bmN0aW9uL19ibGFjay5zY3NzIiwiZnVuY3Rpb24vX3doaXRlLnNjc3MiLCJtaXhpbi9fbmF2LWFuaW1hdGlvbnMuc2NzcyIsIm1peGluL19icmVha3BvaW50LnNjc3MiLCJtaXhpbi9fY2xlYXJmaXguc2NzcyIsIm1peGluL19pbWFnZS1yZXBsYWNlbWVudC5zY3NzIiwibWl4aW4vX21lbnUuc2NzcyIsIm1peGluL19ub3Qtc2VsZWN0YWJsZS5zY3NzIiwibWl4aW4vX2lmLXJlc29sdXRpb24uc2NzcyIsIm1peGluL190b2dnbGUtY29udGVudC5zY3NzIiwibWl4aW4vX3RyaWFuZ2xlLnNjc3MiLCJtaXhpbi9fdHlwb2dyYXBoeS5zY3NzIiwibWl4aW4vX2xvYWRpbmctb3ZlcmxheS5zY3NzIiwiX2NvcmUuc2NzcyIsInZlbmRvci9fbm9ybWFsaXplLnNjc3MiLCJjb3JlL19yZXNldC5zY3NzIiwiY29yZS9fY29tbW9uLnNjc3MiLCJjb3JlL19mb3JtLnNjc3MiLCJjb3JlL190YWJsZS5zY3NzIiwibGF5b3V0L19nbG9iYWwuc2NzcyIsImxheW91dC9faGVhZGVyLnNjc3MiLCJsYXlvdXQvX2hlYWRlci1uYXYuc2NzcyIsImxheW91dC9faGVhZGVyLXNlYXJjaC5zY3NzIiwibGF5b3V0L19oZWFkZXItYWNjb3VudC5zY3NzIiwibGF5b3V0L19oZWFkZXItY2FydC5zY3NzIiwibGF5b3V0L19mb290ZXIuc2NzcyIsIm1vZHVsZS9fYW5pbWF0aW9ucy5zY3NzIiwibW9kdWxlL19wcm9kdWN0LWxpc3Quc2NzcyIsIm1vZHVsZS9fY2FsZW5kYXIuc2NzcyIsIm1vZHVsZS9fY2F0YWxvZy1wcm9kdWN0LnNjc3MiLCJtb2R1bGUvX2NhdGFsb2ctbXNycC5zY3NzIiwibW9kdWxlL19jYXRhbG9nLWNvbXBhcmUuc2NzcyIsIm1vZHVsZS9fY2hlY2tvdXQtY2FydC5zY3NzIiwibW9kdWxlL19jaGVja291dC1vbmVwYWdlLnNjc3MiLCJtb2R1bGUvX2NoZWNrb3V0LXN1Y2Nlc3Muc2NzcyIsIm1vZHVsZS9fY29uZmlndXJhYmxlc3dhdGNoZXMuc2NzcyIsIm1vZHVsZS9fY3VzdG9tZXIuc2NzcyIsIm1vZHVsZS9fY29udGFjdHMuc2NzcyIsIm1vZHVsZS9fZmluZC1hLXJlcC5zY3NzIiwibW9kdWxlL19wYXlwYWwuc2NzcyIsIm1vZHVsZS9fcmV2aWV3LnNjc3MiLCJtb2R1bGUvX3NsaWRlc2hvdy5zY3NzIiwibW9kdWxlL193aXNobGlzdC5zY3NzIiwibW9kdWxlL19jaGVja291dC1jYXJ0LW1pbmljYXJ0LnNjc3MiLCJtb2R1bGUvX3NlYXJjaC5zY3NzIiwibW9kdWxlL19hY2NvdW50LXJldmlld3Muc2NzcyIsIm1vZHVsZS9fY21zLnNjc3MiLCJtb2R1bGUvX3ByaWNpbmdfY29uZGl0aW9ucy5zY3NzIiwibW9kdWxlL19jb29raWVzLnNjc3MiLCJtb2R1bGUvX3RhZ3Muc2NzcyIsIm1vZHVsZS9fY2FwdGNoYS5zY3NzIiwibW9kdWxlL19hY2NvdW50LW9yZGVycy5zY3NzIiwibW9kdWxlL19yZWN1cnJpbmctcHJvZmlsZXMuc2NzcyIsIm1vZHVsZS9fYmlsbGluZy1hZ3JlZW1lbnRzLnNjc3MiLCJtb2R1bGUvX3BvcHVsYXItdGVybXMuc2NzcyIsIm1vZHVsZS9fd2lkZ2V0LnNjc3MiLCJtb2R1bGUvX2NoZWNrb3V0LW11bHRpLWFkZHJlc3Muc2NzcyIsIm1vZHVsZS9faWNvbnMuc2NzcyIsIm1vZHVsZS9fcmVzcG9uc2l2ZWJhbm5lcnNsaWRlci5zY3NzIiwibW9kdWxlL19uZXdzLnNjc3MiLCJvdmVycmlkZS9fcGx1Z2luLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb3JlIEFwcGxpY2F0aW9uIC8gRnVsbCBNUSBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRtcS1zdXBwb3J0OiB0cnVlO1xuJG1xLWZpeGVkLXZhbHVlOiBmYWxzZTtcblxuQGltcG9ydCBcImZyYW1ld29ya1wiO1xuQGltcG9ydCBcImNvcmVcIjtcbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0FTUyAvIENvbXBhc3MgRnJhbWV3b3JrXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBhc3NcblxuLy8gVW5jb21tZW50IG1lIHRvIHVzZSBHdWxwIFxuQGltcG9ydCBcIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzc1wiO1xuXG4vLyBDb21tZW50IDIgbGluZXMgYmVsb3cgdG8gdXNlIEd1bHBcbi8vICBAaW1wb3J0IFwiY29tcGFzc1wiO1xuLy8gIEBpbXBvcnQgXCJjb21wYXNzL2NzczNcIjtcblxuLy8gQm91cmJvblxuQGltcG9ydCBcImJvdXJib24vYm91cmJvblwiO1xuQGltcG9ydCBcIm5lYXQvbmVhdFwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBWYXJzXG5cbkBpbXBvcnQgXCJ2YXJcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRnVuY3Rpb25zXG5cbkBpbXBvcnQgXCJmdW5jdGlvbi9ibGFja1wiO1xuQGltcG9ydCBcImZ1bmN0aW9uL3doaXRlXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1peGluc1xuXG5AaW1wb3J0IFwibWl4aW4vbmF2LWFuaW1hdGlvbnNcIjtcbkBpbXBvcnQgXCJtaXhpbi9icmVha3BvaW50XCI7XG5AaW1wb3J0IFwibWl4aW4vY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJtaXhpbi9pbWFnZS1yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcIm1peGluL21lbnVcIjtcbkBpbXBvcnQgXCJtaXhpbi9ub3Qtc2VsZWN0YWJsZVwiO1xuQGltcG9ydCBcIm1peGluL2lmLXJlc29sdXRpb25cIjtcbkBpbXBvcnQgXCJtaXhpbi90b2dnbGUtY29udGVudFwiO1xuQGltcG9ydCBcIm1peGluL3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwibWl4aW4vdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcIm1peGluL2xvYWRpbmctb3ZlcmxheVwiO1xuLy8gIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcbiIsIkBpbXBvcnQgXCJjb21wYXNzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwiY29tcGFzcy90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AaWYgbm90KGZ1bmN0aW9uLWV4aXN0cyhjb21wYWN0KSkge1xuICBAZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAgICRsaXN0OiAoKTtcbiAgICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICAgICAgQGlmICR2YXIge1xuICAgICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgY29tbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGxpc3Q7XG4gIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7IiwiJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0OiAgICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAgI2ZmZiAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQ6IDMwJSAhZGVmYXVsdDtcblxuLy8gUmV0dXJucyB0aGUgYCRsaWdodGAgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgZGFya1xuLy8gYW5kIHRoZSBgJGRhcmtgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8gVGhlIGAkdGhyZXNob2xkYCBpcyBhIHBlcmNlbnQgYmV0d2VlbiBgMCVgIGFuZCBgMTAwJWAgYW5kIGl0IGRldGVybWluZXNcbi8vIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBgJGNvbG9yYCBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLlxuQGZ1bmN0aW9uIGNvbnRyYXN0LWNvbG9yKFxuICAkY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIEByZXR1cm4gaWYobGlnaHRuZXNzKCRjb2xvcikgPCAkdGhyZXNob2xkLCAkbGlnaHQsICRkYXJrKVxufVxuXG4vLyBTZXRzIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgY2FsY3VsYXRlcyBhIGRhcmsgb3IgbGlnaHQgY29udHJhc3RlZCB0ZXh0IGNvbG9yLlxuLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFtjb250cmFzdC1jb2xvciBmdW5jdGlvbl0oI2Z1bmN0aW9uLWNvbnRyYXN0LWNvbG9yKS5cbkBtaXhpbiBjb250cmFzdGVkKFxuICAkYmFja2dyb3VuZC1jb2xvcixcbiAgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCxcbiAgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LFxuICAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkXG4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiBjb250cmFzdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgJGRhcmssICRsaWdodCwgJHRocmVzaG9sZCk7XG59IiwiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIEVtaXRzIHN0eWxlcyBmb3IgYSB0YWcgY2xvdWRcbkBtaXhpbiB0YWctY2xvdWQoJGJhc2Utc2l6ZTogMWVtKSB7XG4gIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7XG4gIC54eHMsIC54cywgLnMsIC5sLCAueGwsIC54eGwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplOyB9XG4gIC54eHMge1xuICAgIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnhzIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAucyB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDQ7IH1cbiAgLmwge1xuICAgIGZvbnQtc2l6ZTogNCAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC54bCB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnh4bCB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZTsgfSB9XG4iLCJAaW1wb3J0IFwiaGFja3NcIjtcblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4taGVpZ2h0IG1peGluLlxuQG1peGluIG1pbi1oZWlnaHQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKGhlaWdodCwgJHZhbHVlKTsgfVxuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi13aWR0aCBtaXhpbi5cbkBtaXhpbiBtaW4td2lkdGgoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGhhY2tlZC1taW5pbXVtKHdpZHRoLCAkdmFsdWUpOyB9XG5cbi8vIEBwcml2YXRlIFRoaXMgbWl4aW4gaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgZGlyZWN0bHkuXG5AbWl4aW4gaGFja2VkLW1pbmltdW0oJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgbWluLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICBAaW5jbHVkZSBiYW5nLWhhY2soJHByb3BlcnR5LCBhdXRvLCAkdmFsdWUpOyB9XG4iLCJAaW1wb3J0IFwic3ByaXRlcy9iYXNlXCI7XG5AaW1wb3J0IFwic3ByaXRlcy9zcHJpdGUtaW1nXCI7XG4iLCIvLyBEZXRlcm1pbmVzIHRob3NlIHN0YXRlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZW5hYmxlIG1hZ2ljIHNwcml0ZSBzZWxlY3RvcnNcbiRzcHJpdGUtc2VsZWN0b3JzOiBob3ZlciwgdGFyZ2V0LCBhY3RpdmUgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhbiBlbGVtZW50IHRvIHRoZSBvcmlnaW5hbFxuLy8gZGltZW5zaW9ucyBvZiBhbiBpbWFnZSBiZWZvcmUgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBzcHJpdGUuXG5AbWl4aW4gc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSkge1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG59XG5cbi8vIFNldCB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYCB0byBkaXNwbGF5IHRoZVxuLy8gc3ByaXRlIG9mIHRoZSBnaXZlbiBgJHNwcml0ZWAgbmFtZS4gWW91IGNhbiBtb3ZlIHRoZSBpbWFnZSByZWxhdGl2ZSB0byBpdHNcbi8vIG5hdHVyYWwgcG9zaXRpb24gYnkgcGFzc2luZyBgJG9mZnNldC14YCBhbmQgYCRvZmZzZXQteWAuXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogc3ByaXRlLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgIFxufVxuXG5cbi8vIERldGVybWluZXMgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYWdpYyBzZWxlY3RvcnMgaW4geW91ciBzcHJpdGVzXG4kZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzOmZhbHNlICFkZWZhdWx0O1xuXG4vLyBJbmNsdWRlIHRoZSBwb3NpdGlvbiBhbmQgKG9wdGlvbmFsbHkpIGRpbWVuc2lvbnMgb2YgdGhpcyBgJHNwcml0ZWBcbi8vIGluIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgLiBUaGUgc3ByaXRlIHVybCBzaG91bGQgY29tZSBmcm9tIGVpdGhlciBhIGJhc2Vcbi8vIGNsYXNzIG9yIHlvdSBjYW4gc3BlY2lmeSB0aGUgYHNwcml0ZS11cmxgIGV4cGxpY2l0bHkgbGlrZSB0aGlzOlxuLy9cbi8vICAgICBiYWNrZ3JvdW5kOiAkbWFwIG5vLXJlcGVhdDtcbkBtaXhpbiBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIEBpZiAkZGltZW5zaW9ucyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSk7XG4gIH1cbiAgQGlmIG5vdCgkZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzKSB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIH1cbn1cblxuLy8gSW5jbHVkZSB0aGUgc2VsZWN0b3JzIGZvciB0aGUgYCRzcHJpdGVgIGdpdmVuIHRoZSBgJG1hcGAgYW5kIHRoZSBcbi8vIGAkZnVsbC1zcHJpdGUtbmFtZWBcbi8vIEBwcml2YXRlXG5AbWl4aW4gc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLW5hbWUsICRmdWxsLXNwcml0ZS1uYW1lLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHNwcml0ZS1zZWxlY3RvcnMge1xuICAgIEBpZiBzcHJpdGVfaGFzX3NlbGVjdG9yKCRtYXAsICRzcHJpdGUtbmFtZSwgJHNlbGVjdG9yKSB7XG4gICAgICAmOiN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX0tI3skc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCBcIiN7JHNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn1cIiwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBHZW5lcmF0ZXMgYSBjbGFzcyBmb3IgZWFjaCBzcGFjZSBzZXBhcmF0ZWQgbmFtZSBpbiBgJHNwcml0ZS1uYW1lc2AuXG4vLyBUaGUgY2xhc3Mgd2lsbCBiZSBvZiB0aGUgZm9ybSAuPG1hcC1uYW1lPi08c3ByaXRlLW5hbWU+LlxuLy9cbi8vIElmIGEgYmFzZSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlbiBlYWNoIGNsYXNzIHdpbGwgZXh0ZW5kIGl0LlxuLy9cbi8vIElmIGAkZGltZW5zaW9uc2AgaXMgYHRydWVgLCB0aGUgc3ByaXRlIGRpbWVuc2lvbnMgd2lsbCBzcGVjaWZpZWQuXG5AbWl4aW4gc3ByaXRlcygkbWFwLCAkc3ByaXRlLW5hbWVzLCAkYmFzZS1jbGFzczogZmFsc2UsICRkaW1lbnNpb25zOiBmYWxzZSwgJHByZWZpeDogc3ByaXRlLW1hcC1uYW1lKCRtYXApLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc3ByaXRlLW5hbWUgaW4gJHNwcml0ZS1uYW1lcyB7XG4gICAgQGlmIHNwcml0ZV9kb2VzX25vdF9oYXZlX3BhcmVudCgkbWFwLCAkc3ByaXRlLW5hbWUpIHtcbiAgICAgICRmdWxsLXNwcml0ZS1uYW1lOiBcIiN7JHByZWZpeH0tI3skc3ByaXRlLW5hbWV9XCI7XG4gICAgICAuI3skZnVsbC1zcHJpdGUtbmFtZX0ge1xuICAgICAgICBAaWYgJGJhc2UtY2xhc3MgeyBAZXh0ZW5kICN7JGJhc2UtY2xhc3N9OyB9XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLW5hbWUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8gQGRvYyBvZmZcbi8vIEV4YW1wbGUgMTpcbi8vXG4vLyAgICAgYS50d2l0dGVyXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMyLnBuZ1wiLCAxKVxuLy8gICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzJwbmdcIiwgMilcbi8vXG4vLyBFeGFtcGxlIDI6XG4vL1xuLy8gICAgIGFcbi8vICAgICAgICtzcHJpdGUtYmFja2dyb3VuZChcImljb25zLTMyLnBuZ1wiKVxuLy8gICAgICAgYS50d2l0dGVyXG4vLyAgICAgICAgICtzcHJpdGUtY29sdW1uKDEpXG4vLyAgICAgICBhLmZhY2Vib29rXG4vLyAgICAgICAgICtzcHJpdGUtcm93KDIpXG4vLyBAZG9jIG9uXG5cbiRzcHJpdGUtZGVmYXVsdC1zaXplOiAzMnB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWRlZmF1bHQtbWFyZ2luOiAwcHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQ6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4vLyBTZXRzIGFsbCB0aGUgcnVsZXMgZm9yIGEgc3ByaXRlIGZyb20gYSBnaXZlbiBzcHJpdGUgaW1hZ2UgdG8gc2hvdyBqdXN0IG9uZSBvZiB0aGUgc3ByaXRlcy5cbi8vIFRvIHJlZHVjZSBkdXBsaWNhdGlvbiB1c2UgYSBzcHJpdGUtYmcgbWl4aW4gZm9yIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCBhIHNwcml0ZS1zZWxlY3QgbWl4aW4gZm9yIHBvc2l0aW9uaW5nLlxuQG1peGluIHNwcml0ZS1pbWcoJGltZywgJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3csICR3aWR0aCwgJGhlaWdodCwgJG1hcmdpbik7IFxufVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgeW91IHdhbnQgYSBzcXVhcmUsIGJ1dCBhbGxvd3MgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSwgJGhlaWdodDogJHdpZHRoKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGgsICRoZWlnaHQpOyBcbn1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCkge1xuICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZykgbm8tcmVwZWF0O1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IFxufVxuXG4vLyBBbGxvd3MgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSByb3cgb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtY29sdW1uKCRjb2wsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAxLCAkd2lkdGgsIDBweCwgJG1hcmdpbik7IFxufVxuXG4vLyBBbGxvd3MgdmVydGljYWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgY29sdW1uIG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXJvdygkcm93LCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigxLCAkcm93LCAwcHgsICRoZWlnaHQsICRtYXJnaW4pOyBcbn1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBmcm9tIGEgZ3JpZCBvZiBlcXVhbCBkaW1lbnNpb25lZCBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICAkeDogKCRjb2wgLSAxKSAqIC0kd2lkdGggLSAoJGNvbCAtIDEpICogJG1hcmdpbjtcbiAgJHk6ICgkcm93IC0gMSkgKiAtJGhlaWdodCAtICgkcm93IC0gMSkgKiAkbWFyZ2luO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkeCAkeTsgXG59XG5cblxuXG4vLyBTaW1pbGFyIHRvICdzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IGRvZXMgbm90IGF1dG1hdGljbHkgc2V0IHRoZSBkZW1lbnNpb25zXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dCAoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkgeyAgICBcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgYmFja2dyb3VuZC1pbWFnZTogJG1hcDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLy8gU2ltaWxhciB0byAncmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IHdpdGggc3ByaXRlc1xuLy8gVG8gdXNlLCBjcmVhdGUgeW91ciBzcHJpdGUgYW5kIHRoZW4gcGFzcyBpdCBpbiB0aGUgYCRtYXBgIHBhcmFtXG4vLyBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgaW4gdGhlIHNwcml0ZSBmb2xkZXIgc2hvdWxkIGJlIGAkaW1nLW5hbWVgXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMgKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKXsgICAgXG4gIEBpbmNsdWRlIHNwcml0ZS1yZXBsYWNlLXRleHQgKCRtYXAsICRzcHJpdGUsIHRydWUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbn0iLCJAaW1wb3J0IFwidGFibGVzL2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvYm9yZGVyc1wiO1xuQGltcG9ydCBcInRhYmxlcy9zY2FmZm9sZGluZ1wiO1xuIiwiQG1peGluIGFsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMoJGV2ZW4tcm93LWNvbG9yLCAkb2RkLXJvdy1jb2xvciwgJGRhcmstaW50ZXJzZWN0aW9uLCAkaGVhZGVyLWNvbG9yOiB3aGl0ZSwgJGZvb3Rlci1jb2xvcjogd2hpdGUpIHtcbiAgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9XG4gIHRyIHtcbiAgICAmLm9kZCwgJjpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgdGQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yO1xuICAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfVxuICAgIH1cbiAgdHIuZXZlbiB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuIiwiQG1peGluIG91dGVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgYm9yZGVyOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICB0aGVhZCB7XG4gICAgdGgge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRoIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9IH1cblxuQG1peGluIGlubmVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgdGgsIHRkIHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgbGVmdC13aWR0aDogMHB4O1xuICAgICAgdG9wLXdpZHRoOiAwcHg7IH07XG4gICAgJjpsYXN0LWNoaWxkLFxuICAgICYubGFzdCB7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDBweDsgfSB9XG5cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG4gIHRib2R5LCB0Zm9vdCB7XG4gICAgdHI6bGFzdC1jaGlsZCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfVxuICAgIHRyLmxhc3Qge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH0gfSB9XG4iLCJAbWl4aW4gdGFibGUtc2NhZmZvbGRpbmcge1xuICB0aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMnB4O1xuICAgICYubnVtZXJpYyB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDsgfSB9IH1cbiIsIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLCIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLCIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLCJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gbWFrZXMgYSBsaXN0IGlubGluZS5cblxuQG1peGluIGlubGluZS1saXN0IHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAmLCAmIGxpIHtcbiAgICBtYXJnaW46IDBweDtcbiAgICBwYWRkaW5nOiAwcHg7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG59XG5cbi8vIG1ha2VzIGFuIGlubGluZSBsaXN0IGRlbGltaXRlZCB3aXRoIHRoZSBwYXNzZWQgc3RyaW5nLlxuLy8gRGVmYXVsdHMgdG8gbWFraW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuXG4vL1xuLy8gUGxlYXNlIG1ha2Ugbm90ZSBvZiB0aGUgYnJvd3NlciBzdXBwb3J0IGlzc3VlcyBiZWZvcmUgdXNpbmcgdGhpcyBtaXhpbjpcbi8vXG4vLyB1c2Ugb2YgYGNvbnRlbnRgIGFuZCBgOmFmdGVyYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkIGluIGFsbCBicm93c2Vycy5cbi8vIFNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QxNSlcbi8vXG4vLyBgOmxhc3QtY2hpbGRgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQuXG4vLyBzZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkpLlxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG5AbWl4aW4gZGVsaW1pdGVkLWxpc3QoJHNlcGFyYXRvcjogXCIsIFwiKSB7XG4gIEBpbmNsdWRlIGlubGluZS1saXN0O1xuICBsaSB7XG4gICAgJjphZnRlciB7IGNvbnRlbnQ6ICRzZXBhcmF0b3I7IH1cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgJjphZnRlciB7IGNvbnRlbnQ6IFwiXCI7IH1cbiAgICB9XG4gICAgJi5sYXN0IHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICB9XG59XG5cbi8vIFNlZSBbZGVsaW1pdGVkLWxpc3RdKCNtaXhpbi1kZWxpbWl0ZWQtbGlzdClcbi8vIEBkZXByZWNhdGVkXG5AbWl4aW4gY29tbWEtZGVsaW1pdGVkLWxpc3Qge1xuICBAd2FybiBcImNvbW1hLWRlbGltaXRlZC1saXN0IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgZGVsaW1pdGVkLWxpc3QgaW5zdGVhZC5cIjtcbiAgQGluY2x1ZGUgZGVsaW1pdGVkLWxpc3Q7XG59XG4iLCIvLyBJbmxpbmUtQmxvY2sgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW1wb3J0IGlubGluZS1ibG9jay1saXN0O1xuLy8gICAgIH1cbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyYCBvbiB5b3VyIHVsL29sIGFuZFxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW1gIG9uIHlvdXIgbGkuIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nXG4vLyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuLy8gICAgICAgPiBsaSB7XG4vLyAgICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW07XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcImhvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5AaW1wb3J0IFwiLi4vLi4vY3NzMy9pbmxpbmUtYmxvY2tcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhbiBpbmxpbmUtYmxvY2sgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfTtcbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGlubGluZS1ibG9jayBhbmQgd29uJ3Qgd3JhcC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdCgkcGFkZGluZzogZmFsc2UpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbSgkcGFkZGluZyk7IH0gfVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjaztcbiAgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50O1xuICB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCIvLyBXaGVuIHJlbWVtYmVyaW5nIHdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBoeXBoZW4gaW4gd2hpdGUtc3BhY2UgaXMgdG9vIGhhcmRcbkBtaXhpbiBub3dyYXAgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG4iLCIvLyBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiB5b3UgcHJlZmVyIHRvIG1vdmUgeW91ciB0ZXh0XG4vLyB3aGVuIGhpZGluZyBpdC5cbi8vXG4vLyBgbGVmdGAgaXMgbW9yZSByb2J1c3QsIGVzcGVjaWFsbHkgaW4gb2xkZXIgYnJvd3NlcnMuXG4vLyBgcmlnaHRgIHNlZW1zIGhhdmUgYmV0dGVyIHJ1bnRpbWUgcGVyZm9ybWFuY2UuXG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogbGVmdCAhZGVmYXVsdDtcblxuLy8gSGlkZXMgaHRtbCB0ZXh0IGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGltYWdlLlxuLy8gSWYgeW91IHVzZSB0aGlzIG9uIGFuIGlubGluZSBlbGVtZW50LCB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgZGlzcGxheSB0byBibG9jayBvciBpbmxpbmUtYmxvY2suXG4vLyBBbHNvLCBpZiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgZGlmZmVycyBzaWduaWZpY2FudGx5IGZyb20gdGhlIGZvbnQgc2l6ZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSB3aWR0aCBhbmQvb3IgaGVpZ2h0LlxuLy9cbi8vIFBhcmFtZXRlcnM6XG4vL1xuLy8gKiBgaW1nYCAtLSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IGltYWdlIGRpcmVjdG9yeSB0byB0aGUgaW1hZ2UsIG9yIGEgdXJsIGxpdGVyYWwuXG4vLyAqIGB4YCAtLSB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbi8vICogYHlgIC0tIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuQG1peGluIHJlcGxhY2UtdGV4dCgkaW1nLCAkeDogNTAlLCAkeTogNTAlKSB7XG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgYmFja2dyb3VuZDoge1xuICAgIEBpZiBpcy11cmwoJGltZykge1xuICAgICAgaW1hZ2U6IHVybCgkaW1nKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIGltYWdlOiBpbWFnZS11cmwoJGltZyk7XG4gICAgfVxuICAgIHJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHBvc2l0aW9uOiAkeCAkeTtcbiAgfTtcbn1cblxuLy8gTGlrZSB0aGUgYHJlcGxhY2UtdGV4dGAgbWl4aW4sIGJ1dCBhbHNvIHNldHMgdGhlIHdpZHRoXG4vLyBhbmQgaGVpZ2h0IG9mIHRoZSBlbGVtZW50IGFjY29yZGluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UuXG4vL1xuLy8gSWYgeW91IHNldCBgJGlubGluZWAgdG8gdHJ1ZSwgdGhlbiBhbiBpbmxpbmUgaW1hZ2UgKGRhdGEgdXJpKSB3aWxsIGJlIHVzZWQuXG5AbWl4aW4gcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucygkaW1nLCAkeDogNTAlLCAkeTogNTAlLCAkaW5saW5lOiBmYWxzZSkge1xuICBAaW5jbHVkZSByZXBsYWNlLXRleHQoaWYoJGlubGluZSwgaW5saW5lLWltYWdlKCRpbWcpLCAkaW1nKSwgJHgsICR5KTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKCRpbWcpO1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodCgkaW1nKTtcbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IHNvIHlvdSBjYW4gc2VlIHRoZSBiYWNrZ3JvdW5kLlxuLy9cbi8vIFRoZSBkaXJlY3Rpb24gaW5kaWNhdGVzIGhvdyB0aGUgdGV4dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gU2VlIGAkaGlkZS10ZXh0LWRpcmVjdGlvbmAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRvIHNldCB0aGlzIGdsb2JhbGx5XG4vLyBmb3IgeW91ciBhcHBsaWNhdGlvbi5cbkBtaXhpbiBoaWRlLXRleHQoJGRpcmVjdGlvbjogJGhpZGUtdGV4dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJGFwcHJveGltYXRlLWVtLXZhbHVlOiAxMnB4O1xuICAgICR3aWRlci10aGFuLWFueS1zY3JlZW46IC05OTk5O1xuICAgIHRleHQtaW5kZW50OiAkd2lkZXItdGhhbi1hbnktc2NyZWVuICogJGFwcHJveGltYXRlLWVtLXZhbHVlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfSBAZWxzZSB7XG4gICAgLy8gc2xpZ2h0bHkgd2lkZXIgdGhhbiB0aGUgYm94IHByZXZlbnRzIGlzc3VlcyB3aXRoIGlubGluZS1ibG9jayBlbGVtZW50c1xuICAgIHRleHQtaW5kZW50OiAxMTAlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgYnkgc3F1aXNoaW5nIHRoZSB0ZXh0IGludG8gb2JsaXZpb24uXG4vLyBVc2UgdGhpcyBpZiB5b3UgbmVlZCB0byBoaWRlIHRleHQgY29udGFpbmVkIGluIGFuIGlubGluZSBlbGVtZW50XG4vLyBidXQgc3RpbGwgaGF2ZSBpdCByZWFkIGJ5IGEgc2NyZWVuIHJlYWRlci5cbkBtaXhpbiBzcXVpc2gtdGV4dCB7XG4gIGZvbnQ6IDAvMCBzZXJpZjtcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbiIsIi8vIFByZXZlbnQgbG9uZyB1cmxzIGFuZCB0ZXh0IGZyb20gYnJlYWtpbmcgbGF5b3V0c1xuLy8gW29yaWdpbmFsbHkgZnJvbSBwZXJpc2hhYmxlcHJlc3MuY29tXShodHRwOi8vcGVyaXNoYWJsZXByZXNzLmNvbS9wcmVzcy8yMDEwLzA2LzAxL3dyYXBwaW5nLWNvbnRlbnQvKVxuQG1peGluIGZvcmNlLXdyYXAge1xuICB3aGl0ZS1zcGFjZTogcHJlOyAgICAgICAgICAgLy8gQ1NTIDIuMFxuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7ICAgICAgLy8gQ1NTIDIuMVxuICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7ICAgICAgLy8gQ1NTIDMuMFxuICB3aGl0ZS1zcGFjZTogLXByZS13cmFwOyAgICAgLy8gT3BlcmEgNC02XG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAvLyBPcGVyYSA3XG4gIHdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwOyAvLyBNb3ppbGxhXG4gIHdoaXRlLXNwYWNlOiAtaHAtcHJlLXdyYXA7ICAvLyBIUCBQcmludGVyc1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7ICAgICAgLy8gSUUgNStcbn1cbiIsIkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdmVydGljYWxfcmh5dGhtXCI7XG4iLCJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIlxufVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTtcbn1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90KHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiO1xufVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICgkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemUpO1xuICB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTtcbiAgfVxufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkb2Zmc2V0OiAwXG4pIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiO1xuICB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLFxuICAgICAgICAgICAgICBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7XG4gIH1cbiAgYm9yZGVyLSN7JHNpZGV9LXN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICBib3JkZXItI3skc2lkZX0td2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpO1xufVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiO1xuICB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgfTtcbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuIiwiQGltcG9ydCBcIi4uL2NzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiLi4vY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yICAgICA6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciAgICAgOiByZ2JhKDAsIDAsIDAsIDApICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMgICAgOiAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGggICAgIDogMzBweCAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoICAgICA6IDEwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgb2Zmc2V0LCBpZiB5b3VyIGNvbHVtbnMgYXJlIHBhZGRlZCBpbiBmcm9tIHRoZSBjb250YWluZXIgZWRnZVxuJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQgICAgICAgICAgIDogMHB4ICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgYmFzZWxpbmVcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IgICA6IHJnYmEoMCwgMCwgMCwgMC41KSAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgaGVpZ2h0IG9mIHlvdXIgYmFzZWxpbmUgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQgIDogMS41ZW0gICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciBjb2x1bW5zIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzICAgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSB5b3VyIHZlcnRpY2FsIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSBhbGwgeW91ciBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1ncmlkLWJhY2tncm91bmRzICAgICAgICAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCAgICAgIDogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudChcbiAgJGNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGNvbG9yIDUlLCByZ2JhKCRjb2xvciwwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50O1xufVxuXG4vLyBDcmVhdGUgdGhlIGNvbG9yLXN0b3BzIG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGJ1aWxkLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkZ3JpZDogY29tcGFjdCgpO1xuICAkZ3JpZDogYXBwZW5kKCRncmlkLCAkZ3V0dGVyLWNvbG9yICRvZmZzZXQsIGNvbW1hKTtcbiAgQGZvciAkaSBmcm9tIDAgdG8gJHRvdGFsIHtcblxuICAgIC8vICRhIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgY29sdW1uLCBpbml0aWFsbHkgZXF1YWwgdG8gdGhlIG9mZnNldFxuICAgICRhOiAkb2Zmc2V0O1xuICAgIEBpZiAkaSA+IDAgeyAkYTogJGEgKyAoKCRjb2x1bW4gKyAkZ3V0dGVyKSAqICRpKTsgfVxuXG4gICAgLy8gJGcgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBndXR0ZXIsIGVxdWFsIHRvICRhIHBsdXMgb25lIGNvbHVtbi13aWR0aFxuICAgICRnOiAkYSArICRjb2x1bW47XG5cbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG5cbiAgICBAaWYgKHVuaXQoJGEpID09IFwiJVwiKSBhbmQgKCRpID09ICgkdG90YWwgLSAxKSkge1xuICAgICAgJHo6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpO1xuICB9XG5cbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gICRncmlkOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIGRvbid0IGZvcmNlIGZsdWlkIGdyaWRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBmbHVpZC5cbiAgQGlmIHVuaXQoJGNvbHVtbikgPT0gXCIlXCIgeyAkZm9yY2UtZmx1aWQ6IGZhbHNlOyB9XG5cbiAgQGlmICRmb3JjZS1mbHVpZCB7XG4gICAgJGdyaWQ6IGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfSBAZWxzZSB7XG4gICAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgZ3JhZGllbnRcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQobGVmdCwgJGdyaWQpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkY29udGV4dDogKCRjb2x1bW4gKiAkdG90YWwpICsgKCRndXR0ZXIgKiAoJHRvdGFsIC0gMSkgKyAoJG9mZnNldCAqIDIpKTtcbiAgJG9mZnNldDogJG9mZnNldCAvICRjb250ZXh0ICogMTAwJTtcbiAgJGNvbHVtbjogJGNvbHVtbiAvICRjb250ZXh0ICogMTAwJTtcbiAgJGd1dHRlcjogJGd1dHRlciAvICRjb250ZXh0ICogMTAwJTtcblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IpO1xuICBAcmV0dXJuICRncmlkO1xufVxuXG5cbi8vIEFkZCBqdXN0IHRoZSBiYXNlbGluZSBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKFxuICAkYmFzZWxpbmUgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJGNvbG9yICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBqdXN0IHRoZSBob3Jpem9udGFsIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gIH1cbn1cblxuLy8gQWRkIGJvdGggaG9yaXpvbnRhbCBhbmQgYmFzZWxpbmUgZ3JpZHMgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkYmFzZWxpbmUgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGJhc2VsaW5lLWNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaWYgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgICAgZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksXG4gICAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZShcbiAgJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLFxuICAkc2l6ZS0yOiBmYWxzZSxcbiAgJHNpemUtMzogZmFsc2UsXG4gICRzaXplLTQ6IGZhbHNlLFxuICAkc2l6ZS01OiBmYWxzZSxcbiAgJHNpemUtNjogZmFsc2UsXG4gICRzaXplLTc6IGZhbHNlLFxuICAkc2l6ZS04OiBmYWxzZSxcbiAgJHNpemUtOTogZmFsc2UsXG4gICRzaXplLTEwOiBmYWxzZVxuKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpKTtcbn1cbiIsIkBpbXBvcnQgXCJjc3MzL2JvcmRlci1yYWRpdXNcIjtcbkBpbXBvcnQgXCJjc3MzL2lubGluZS1ibG9ja1wiO1xuQGltcG9ydCBcImNzczMvb3BhY2l0eVwiO1xuQGltcG9ydCBcImNzczMvYm94LXNoYWRvd1wiO1xuQGltcG9ydCBcImNzczMvdGV4dC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL2NvbHVtbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2JveFwiO1xuQGltcG9ydCBcImNzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLWNsaXBcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtb3JpZ2luXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy9hcHBlYXJhbmNlXCI7XG5AaW1wb3J0IFwiY3NzMy9yZWdpb25zXCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5hdGlvblwiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9waWVcIjtcbkBpbXBvcnQgXCJjc3MzL3VzZXItaW50ZXJmYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4Ym94XCI7IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA1cHggIWRlZmF1bHQ7XG5cbi8vIFJvdW5kIGFsbCBjb3JuZXJzIGJ5IGEgc3BlY2lmaWMgYW1vdW50LCBkZWZhdWx0cyB0byB2YWx1ZSBvZiBgJGRlZmF1bHQtYm9yZGVyLXJhZGl1c2AuXG4vL1xuLy8gV2hlbiB0d28gdmFsdWVzIGFyZSBwYXNzZWQsIHRoZSBmaXJzdCBpcyB0aGUgaG9yaXpvbnRhbCByYWRpdXNcbi8vIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSB2ZXJ0aWNhbCByYWRpdXMuXG4vL1xuLy8gTm90ZTogd2Via2l0IGRvZXMgbm90IHN1cHBvcnQgc2hvcnRoYW5kIHN5bnRheCBmb3Igc2V2ZXJhbCBjb3JuZXJzIGF0IG9uY2UuXG4vLyBTbyBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgcGFzcyBzZXZlcmFsIHZhbHVlcyBvbmx5IHRoZSBmaXJzdCB3aWxsIGJlIHBhc3NlZCB0byB3ZWJraXQuXG4vL1xuLy8gRXhhbXBsZXM6XG4vL1xuLy8gICAgIC5zaW1wbGUgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4LCA0cHgpOyB9XG4vLyAgICAgLmNvbXBvdW5kIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHggNXB4LCAzcHggNnB4KTsgfVxuLy8gICAgIC5jcmF6eSAgICB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMXB4IDNweCA1cHggN3B4LCAycHggNHB4IDZweCA4cHgpfVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vXG4vLyAgICAuc2ltcGxlIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHggNHB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDRweCAvIDRweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4OyB9XG4vLyAgICBcbi8vICAgIC5jb21wb3VuZCB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4IDNweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDsgfVxuLy8gICAgXG4vLyAgICAuY3Jhenkge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDFweCAycHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7IH1cblxuQG1peGluIGJvcmRlci1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cywgJHZlcnRpY2FsLXJhZGl1czogZmFsc2UpIHtcblxuICBAaWYgJHZlcnRpY2FsLXJhZGl1cyB7XG4gICAgLy8gV2Via2l0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgb2ZmaWNpYWwgc2hvcnRoYW5kIHN5bnRheCBmb3Igc3BlY2lmeWluZ1xuICAgIC8vIGEgdmVydGljYWwgcmFkaXVzIHVubGVzcyBzbyBpbiBjYXNlIHRoZXJlJ3Mgc2V2ZXJhbCB3ZSBvbmx5IHRha2UgdGhlIGZpcnN0LlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCBmaXJzdC12YWx1ZS1vZigkcmFkaXVzKSBmaXJzdC12YWx1ZS1vZigkdmVydGljYWwtcmFkaXVzKSxcbiAgICAgIG5vdCgtbW96KSxcbiAgICAgIC13ZWJraXQsXG4gICAgICBub3QoLW8pLFxuICAgICAgbm90KC1tcyksXG4gICAgICBub3QoLWtodG1sKSxcbiAgICAgIG5vdChvZmZpY2lhbClcbiAgICApO1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXNcIiwgJHJhZGl1cyB1bnF1b3RlKFwiL1wiKSAkdmVydGljYWwtcmFkaXVzLFxuICAgICAgLW1veixcbiAgICAgIG5vdCgtd2Via2l0KSxcbiAgICAgIG5vdCgtbyksXG4gICAgICBub3QoLW1zKSxcbiAgICAgIC1raHRtbCxcbiAgICAgIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsICRyYWRpdXMpO1xuICB9XG59XG5cbi8vIFJvdW5kIHJhZGl1cyBhdCBwb3NpdGlvbiBieSBhbW91bnQuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkdmVydGA6IGB0b3BgLCBgYm90dG9tYFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yIGAkaG9yemA6IGBsZWZ0YCwgYHJpZ2h0YFxuXG5AbWl4aW4gYm9yZGVyLWNvcm5lci1yYWRpdXMoJHZlcnQsICRob3J6LCAkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIC8vIFN1cHBvcnQgZm9yIG1vemlsbGEncyBzeW50YXggZm9yIHNwZWNpZnlpbmcgYSBjb3JuZXJcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLXJhZGl1cy0jeyR2ZXJ0fSN7JGhvcnp9XCIsICRyYWRpdXMsXG4gICAgLW1veixcbiAgICBub3QoLXdlYmtpdCksXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qob2ZmaWNpYWwpXG4gICk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci0jeyR2ZXJ0fS0jeyRob3J6fS1yYWRpdXNcIiwgJHJhZGl1cyxcbiAgICBub3QoLW1veiksXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xuICBcbn1cblxuLy8gUm91bmQgdG9wLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIHRvcC1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyh0b3AsIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKGJvdHRvbSwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggdG9wIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHJpZ2h0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGJvdHRvbSBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBsZWZ0IGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cygkcmFkaXVzKTsgfVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIENTUyBvcGFjaXR5LiBUYWtlcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgYXMgdGhlIGFyZ3VtZW50LCBlLmcuIDAuNSBmb3IgNTAlIG9wYWNpdHkuXG4vL1xuLy8gICAgIEBwYXJhbSAkb3BhY2l0eVxuLy8gICAgICAgICBBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaXMgdHJhbnNwYXJlbnQgYW5kIDEgaXMgb3BhcXVlLlxuXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7XG4gIH1cbiAgb3BhY2l0eTogJG9wYWNpdHk7XG59XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IHRyYW5zcGFyZW50LlxuQG1peGluIHRyYW5zcGFyZW50IHsgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSBvcGFxdWUuXG5AbWl4aW4gb3BhcXVlIHsgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuIiwiLy8gQGRvYyBvZmZcbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgYmVmb3JlIGltcG9ydGluZy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc2hhZG93IGluc2V0OiBpbnNldCBvciBmYWxzZSAoZm9yIHN0YW5kYXJkIHNoYWRvdykuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0IDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgYm94XG4vLyBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMSA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7XG4gIH1cbiAgJHNoYWRvdyA6IGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2hhZG93LCAkc2hhZG93LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGNvbG9yIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdyhcbiAgJGhvZmYgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsXG4gICR2b2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LFxuICAkYmx1ciAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLFxuICAkc3ByZWFkIDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsXG4gICRjb2xvciAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLFxuICAkaW5zZXQgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldFxuKSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICAkZnVsbCAgIDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyICAgeyAkZnVsbDogJGZ1bGwgJGJsdXI7ICAgfVxuICAgIEBpZiAkc3ByZWFkIHsgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yICB7ICRmdWxsOiAkZnVsbCAkY29sb3I7ICB9XG4gICAgQGlmICRpbnNldCAgeyAkZnVsbDogaW5zZXQgJGZ1bGw7ICAgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgaW4geW91ciBwcm9qZWN0XG5cbiRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yOiAgICAjYWFhICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldDogMHB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXI6ICAgICAxcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkOiAgIGZhbHNlICAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciB0ZXh0IHNoYWRvd3Mgd2hlbiBvbmUgb3IgbW9yZSBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyB0ZXh0LXNoYWRvdyBwcm9wZXJ0eS5cbi8vXG4vLyBOb3RlOiBpZiBhbnkgc2hhZG93IGhhcyBhIHNwcmVhZCBwYXJhbWV0ZXIsIHRoaXMgd2lsbCBjYXVzZSB0aGUgbWl4aW5cbi8vIHRvIGVtaXQgdGhlIHNoYWRvdyBkZWNsYXJhdGlvbiB0d2ljZSwgZmlyc3Qgd2l0aG91dCB0aGUgc3ByZWFkLFxuLy8gdGhlbiB3aXRoIHRoZSBzcHJlYWQgaW5jbHVkZWQuIFRoaXMgYWxsb3dzIHlvdSB0byBwcm9ncmVzc2l2ZWx5XG4vLyBlbmhhbmNlIHRoZSBicm93c2VycyB0aGF0IGRvIHN1cHBvcnQgdGhlIHNwcmVhZCBwYXJhbWV0ZXIuXG5AbWl4aW4gdGV4dC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMTogY29tcGFjdCgkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcik7XG4gIH1cbiAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGpvaW4oKCksKCksY29tbWEpO1xuICAkc2hhZG93czogam9pbigoKSwoKSxjb21tYSk7XG4gICRoYXMtc3ByZWFkOiBmYWxzZTtcbiAgQGVhY2ggJHNoYWRvdyBpbiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNoYWRvdy02LCAkc2hhZG93LTcsICRzaGFkb3ctOCwgJHNoYWRvdy05LCAkc2hhZG93LTEwKSB7XG4gICAgQGlmIGxlbmd0aCgkc2hhZG93KSA+IDQge1xuICAgICAgJGhhcy1zcHJlYWQ6IHRydWU7XG4gICAgICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogYXBwZW5kKCRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkLCBudGgoJHNoYWRvdywxKSBudGgoJHNoYWRvdywyKSBudGgoJHNoYWRvdywzKSBudGgoJHNoYWRvdyw1KSk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgJHNoYWRvdyk7XG4gICAgICAkc2hhZG93czogYXBwZW5kKCRzaGFkb3dzLCAkc2hhZG93KTtcbiAgICB9XG4gIH1cbiAgQGlmICRoYXMtc3ByZWFkIHtcbiAgICB0ZXh0LXNoYWRvdzogJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ7XG4gIH1cbiAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzO1xufVxuXG4vLyBQcm92aWRlcyBhIHNpbmdsZSBjcm9zcy1icm93c2VyIENTUyB0ZXh0IHNoYWRvdy5cbi8vXG4vLyBQcm92aWRlcyBzZW5zaWJsZSBkZWZhdWx0cyBmb3IgdGhlIGNvbG9yLCBob3Jpem9udGFsIG9mZnNldCwgdmVydGljYWwgb2Zmc2V0LCBibHVyLCBhbmQgc3ByZWFkXG4vLyBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgYWJvdmUuXG5AbWl4aW4gc2luZ2xlLXRleHQtc2hhZG93KFxuICAkaG9mZjogZmFsc2UsXG4gICR2b2ZmOiBmYWxzZSxcbiAgJGJsdXI6IGZhbHNlLFxuICAkc3ByZWFkOiBmYWxzZSxcbiAgJGNvbG9yOiBmYWxzZVxuKSB7XG4gIC8vIEEgbG90IG9mIHBlb3BsZSB0aGluayB0aGUgY29sb3IgY29tZXMgZmlyc3QuIEl0IGRvZXNuJ3QuXG4gIEBpZiB0eXBlLW9mKCRob2ZmKSA9PSBjb2xvciB7XG4gICAgJHRlbXAtY29sb3I6ICRob2ZmO1xuICAgICRob2ZmOiAkdm9mZjtcbiAgICAkdm9mZjogJGJsdXI7XG4gICAgJGJsdXI6ICRzcHJlYWQ7XG4gICAgJHNwcmVhZDogJGNvbG9yO1xuICAgICRjb2xvcjogJHRlbXAtY29sb3I7XG4gIH1cbiAgLy8gQ2FuJ3QgcmVseSBvbiBkZWZhdWx0IGFzc2lnbm1lbnQgd2l0aCBtdWx0aXBsZSBzdXBwb3J0ZWQgYXJndW1lbnQgb3JkZXJzLlxuICAkaG9mZjogICBpZigkaG9mZiwgICAkaG9mZiwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldCk7XG4gICR2b2ZmOiAgIGlmKCR2b2ZmLCAgICR2b2ZmLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0KTtcbiAgJGJsdXI6ICAgaWYoJGJsdXIsICAgJGJsdXIsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAgICApO1xuICAkc3ByZWFkOiBpZigkc3ByZWFkLCAkc3ByZWFkLCAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgICk7XG4gICRjb2xvcjogIGlmKCRjb2xvciwgICRjb2xvciwgICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yICAgKTtcbiAgLy8gV2UgZG9uJ3QgbmVlZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgQGlmICRjb2xvciA9PSBub25lIG9yICRob2ZmID09IG5vbmUge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhjb21wYWN0KCRob2ZmICR2b2ZmICRibHVyICRzcHJlYWQgJGNvbG9yKSk7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU3BlY2lmeSB0aGUgc2hvcnRoYW5kIGBjb2x1bW5zYCBwcm9wZXJ0eS5cbi8vXG4vLyBFeGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW5zKDIwZW0gMilcbkBtaXhpbiBjb2x1bW5zKCR3aWR0aC1hbmQtY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbnMsICR3aWR0aC1hbmQtY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5AbWl4aW4gY29sdW1uLWNvdW50KCRjb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWNvdW50LCAkY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMjBweGBcbkBtaXhpbiBjb2x1bW4tZ2FwKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWdhcCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiBjb2x1bW5zIGUuZy4gYDEwMHB4YFxuQG1peGluIGNvbHVtbi13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi13aWR0aCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMXB4YFxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGRvdHRlZGAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLXN0eWxlLlxuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtc3R5bGUsIHVucXVvdGUoJHN0eWxlKSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGJsdWVgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1jb2xvci5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGVuY29tcGFzc2luZyBhbGwgY29sdW1uIHJ1bGUgcHJvcGVydGllc1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCwgc29saWQsICNjMDApXG4vL1xuLy8gT3IgdGhlIHZhbHVlcyBjYW4gYmUgc3BhY2Ugc2VwYXJhdGVkOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHggc29saWQgI2MwMClcbkBtaXhpbiBjb2x1bW4tcnVsZSgkd2lkdGgsICRzdHlsZTogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgJGZ1bGwgOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoJHdpZHRoLCAkc3R5bGUsICRjb2xvcikpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUsICRmdWxsLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYmVmb3JlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWJlZm9yZShhbHdheXMpO31cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYmVmb3JlIHsgICAgXG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWJlZm9yZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1iZWZvcmUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1hZnRlclxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWFmdGVyKGFsd2F5cyk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWFmdGVyKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWFmdGVyLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstaW5zaWRlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1pbnNpZGUoKTt9XG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vICBcbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWluc2lkZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1pbnNpZGUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIEFsbC1wdXJwb3NlIG1peGluIGZvciBzZXR0aW5nIGNvbHVtbiBicmVha3MuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYmVmb3JlLCBhZnRlciwgaW5zaWRlIFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICckdmFsdWUnIGFyZSBkZXBlbmRlbnQgb24gJHR5cGVcbi8vICAgICogd2hlbiAkdHlwZSA9IGJlZm9yZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGFmdGVyLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gaW5zaWRlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICBcbi8vICBFeGFtcGxlczogXG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhiZWZvcmUsIGFsd2F5cyk7fVxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhayhhZnRlciwgYWx3YXlzKTsgfVxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoaW5zaWRlKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy8gIGgyLmJlZm9yZSB7ICAgIFxuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuLy8gIFxuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG4gXG5AbWl4aW4gY29sdW1uLWJyZWFrKCR0eXBlOiBiZWZvcmUsICR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJjb2x1bW4tYnJlYWstI3skdHlwZX1cIiwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYm94IG1vZGVsIGZvciBNb3ppbGxhLCBXZWJraXQsIElFOCBhbmQgdGhlIGZ1dHVyZVxuLy9cbi8vIEBwYXJhbSAkYnNcbi8vICAgWyBjb250ZW50LWJveCB8IGJvcmRlci1ib3ggXVxuXG5AbWl4aW4gYm94LXNpemluZygkYnMpIHtcbiAgJGJzOiB1bnF1b3RlKCRicyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2l6aW5nLCAkYnMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBkaXNwbGF5OmJveDsgbXVzdCBiZSB1c2VkIGZvciBhbnkgb2YgdGhlIG90aGVyIGZsZXhib3ggbWl4aW5zIHRvIHdvcmsgcHJvcGVybHlcbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCBib3gsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBib3ggb3JpZW50YXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHVzZXIgd2FudHMgc29tZXRoaW5nIGxlc3MgYmxvY2stbGlrZVxuJGRlZmF1bHQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhZGVmYXVsdDtcblxuLy8gQm94IG9yaWVudGF0aW9uIFsgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LW9yaWVudChcbiAgJG9yaWVudGF0aW9uOiAkZGVmYXVsdC1ib3gtb3JpZW50XG4pIHtcbiAgJG9yaWVudGF0aW9uIDogdW5xdW90ZSgkb3JpZW50YXRpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yaWVudCwgJG9yaWVudGF0aW9uLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94LWFsaWduXG4kZGVmYXVsdC1ib3gtYWxpZ246IHN0cmV0Y2ggIWRlZmF1bHQ7XG5cbi8vIEJveCBhbGlnbiBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoIF1cbkBtaXhpbiBib3gtYWxpZ24oXG4gICRhbGlnbm1lbnQ6ICRkZWZhdWx0LWJveC1hbGlnblxuKSB7XG4gICRhbGlnbm1lbnQgOiB1bnF1b3RlKCRhbGlnbm1lbnQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWFsaWduLCAkYWxpZ25tZW50LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94IGZsZXhcbiRkZWZhdWx0LWJveC1mbGV4OiAwICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGJveCBmbGV4LiBBcHBseSB0aGlzIHRvIHRoZSBjaGlsZHJlbiBpbnNpZGUgdGhlIGJveC5cbi8vXG4vLyBGb3IgZXhhbXBsZTogXCJkaXYuZGlzcGxheS1ib3ggPiBkaXYuY2hpbGQtYm94XCIgd291bGQgZ2V0IHRoZSBib3ggZmxleCBtaXhpbi5cbkBtaXhpbiBib3gtZmxleChcbiAgJGZsZXg6ICRkZWZhdWx0LWJveC1mbGV4XG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LCAkZmxleCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGZsZXggZ3JvdXBcbiRkZWZhdWx0LWJveC1mbGV4LWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIGZsZXhpYmxlIGdyb3VwaW5nXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoXG4gICRncm91cDogJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXBcbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgtZ3JvdXAsICRncm91cCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBvcmRpbmFsIGdyb3VwXG4kZGVmYXVsdC1ib3gtb3JkaW5hbC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBvcmRpbmFsIGdyb3VwaW5nIGFuZCByZWFycmFuZ2luZyB0aGUgb3JkZXJcbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cChcbiAgJGdyb3VwOiAkZGVmYXVsdC1vcmRpbmFsLWZsZXgtZ3JvdXBcbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LW9yZGluYWwtZ3JvdXAsICRncm91cCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBCb3ggZGlyZWN0aW9uIGRlZmF1bHQgdmFsdWVcbiRkZWZhdWx0LWJveC1kaXJlY3Rpb246IG5vcm1hbCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveC1kaXJlY3Rpb24gWyBub3JtYWwgfCByZXZlcnNlIHwgaW5oZXJpdCBdXG5AbWl4aW4gYm94LWRpcmVjdGlvbihcbiAgJGRpcmVjdGlvbjogJGRlZmF1bHQtYm94LWRpcmVjdGlvblxuKSB7XG4gICRkaXJlY3Rpb246IHVucXVvdGUoJGRpcmVjdGlvbik7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBsaW5lc1xuJGRlZmF1bHQtYm94LWxpbmVzOiBzaW5nbGUgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggbGluZXMgWyBzaW5nbGUgfCBtdWx0aXBsZSBdXG5AbWl4aW4gYm94LWxpbmVzKFxuICAkbGluZXM6ICRkZWZhdWx0LWJveC1saW5lc1xuKSB7XG4gICRsaW5lczogdW5xdW90ZSgkbGluZXMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWxpbmVzLCAkbGluZXMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3IgYm94IHBhY2tcbiRkZWZhdWx0LWJveC1wYWNrOiBzdGFydCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBwYWNrIFsgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IF1cbkBtaXhpbiBib3gtcGFjayhcbiAgJHBhY2s6ICRkZWZhdWx0LWJveC1wYWNrXG4pIHtcbiAgJHBhY2s6IHVucXVvdGUoJHBhY2spO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXBhY2ssICRwYWNrLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgcGFkZGluZy1ib3hgIC0tIHRoZSBib3ggbW9kZWwgdXNlZCBieSBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29uc3RhbnQgd2l0aCBgYm9yZGVyLWJveGBcbi8vXG4vLyBUbyBvdmVycmlkZSB0byB0aGUgZGVmYXVsdCBib3JkZXItYm94IG1vZGVsLCB1c2UgdGhpcyBjb2RlOlxuLy8gICAgICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveFxuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94ICFkZWZhdWx0O1xuXG4vLyBDbGlwIHRoZSBiYWNrZ3JvdW5kIChpbWFnZSBhbmQgY29sb3IpIGF0IHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nIG9yIGJvcmRlci5cbi8vXG4vLyBMZWdhbCBWYWx1ZXM6XG4vL1xuLy8gICAqIHBhZGRpbmctYm94XG4vLyAgICogYm9yZGVyLWJveFxuLy8gICAqIHRleHRcblxuQG1peGluIGJhY2tncm91bmQtY2xpcCgkY2xpcDogJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwKSB7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmddXG4gICRjbGlwOiB1bnF1b3RlKCRjbGlwKTtcbiAgJGRlcHJlY2F0ZWQ6ICRjbGlwO1xuICBAaWYgJGNsaXAgPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJGNsaXAgPT0gYm9yZGVyLWJveCB7ICRkZXByZWNhdGVkOiBib3JkZXI7IH1cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGRlcHJlY2F0ZWQsXG4gICAgLW1veixcbiAgICAtd2Via2l0LFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90IG9mZmljaWFsXG4gICk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRjbGlwLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cblxuQG1peGluIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW46ICRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJG9yaWdpbik7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50XVxuICAkZGVwcmVjYXRlZDogJG9yaWdpbjtcbiAgQGlmICRvcmlnaW4gPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94ICB7ICRkZXByZWNhdGVkOiBib3JkZXI7ICB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHsgJGRlcHJlY2F0ZWQ6IGNvbnRlbnQ7IH1cblxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLFxuICAgIC1tb3osXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdCBvZmZpY2lhbFxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRvcmlnaW4sXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgQGZvbnQtZmFjZS4gU3VwcG9ydHMgSUUsIEdlY2tvLCBXZWJraXQsIE9wZXJhLlxuLy9cbi8vICogJG5hbWUgaXMgcmVxdWlyZWQsIGFyYml0cmFyeSwgYW5kIHdoYXQgeW91IHdpbGwgdXNlIGluIGZvbnQgc3RhY2tzLlxuLy8gKiAkZm9udC1maWxlcyBpcyByZXF1aXJlZCB1c2luZyBmb250LWZpbGVzKCdyZWxhdGl2ZS9sb2NhdGlvbicsICdmb3JtYXQnKS5cbi8vICAgZm9yIGJlc3QgcmVzdWx0cyB1c2UgdGhpcyBvcmRlcjogd29mZiwgb3BlbnR5cGUvdHJ1ZXR5cGUsIHN2Z1xuLy8gKiAkZW90IGlzIHJlcXVpcmVkIGJ5IElFLCBhbmQgaXMgYSByZWxhdGl2ZSBsb2NhdGlvbiBvZiB0aGUgZW90IGZpbGUuXG4vLyAqICR3ZWlnaHQgc2hvd3MgaWYgdGhlIGZvbnQgaXMgYm9sZCwgZGVmYXVsdHMgdG8gbm9ybWFsXG4vLyAqICRzdHlsZSBkZWZhdWx0cyB0byBub3JtYWwsIG1pZ2h0IGJlIGFsc28gaXRhbGljXG4vLyAqIEZvciBhbmRyb2lkIDIuMiBDb21wYXRpYmxpdHksIHBsZWFzZSBlbnN1cmUgdGhhdCB5b3VyIHdlYiBwYWdlIGhhc1xuLy8gICBhIG1ldGEgdmlld3BvcnQgdGFnLlxuLy8gKiBUbyBzdXBwb3J0IGlPUyA8IDQuMiwgYW4gU1ZHIGZpbGUgbXVzdCBiZSBwcm92aWRlZFxuLy9cbi8vIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG90aGVyIGZvcm1hdHMgY2hlY2sgb3V0IHRoZSBGb250IFNxdWlycmVsXG4vLyBbZm9udCBnZW5lcmF0b3JdKGh0dHA6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250ZmFjZS9nZW5lcmF0b3IpXG4vL1xuXG4vLyBJbiBvcmRlciB0byByZWZlciB0byBhIHNwZWNpZmljIHN0eWxlIG9mIHRoZSBmb250IGluIHlvdXIgc3R5bGVzaGVldHMgYXMgXG4vLyBlLmcuIFwiZm9udC1zdHlsZTogaXRhbGljO1wiLCAgeW91IG1heSBhZGQgYSBjb3VwbGUgb2YgQGZvbnQtZmFjZSBpbmNsdWRlc1xuLy8gY29udGFpbmluZyB0aGUgcmVzcGVjdGl2ZSBmb250IGZpbGVzIGZvciBlYWNoIHN0eWxlIGFuZCBzcGVjeWluZ1xuLy8gcmVzcGVjdGl2ZSB0aGUgJHN0eWxlIHBhcmFtZXRlci5cblxuLy8gT3JkZXIgb2YgdGhlIGluY2x1ZGVzIG1hdHRlcnMsIGFuZCBpdCBpczogbm9ybWFsLCBib2xkLCBpdGFsaWMsIGJvbGQraXRhbGljLlxuXG5AbWl4aW4gZm9udC1mYWNlKFxuICAkbmFtZSwgXG4gICRmb250LWZpbGVzLCBcbiAgJGVvdDogZmFsc2UsXG4gICR3ZWlnaHQ6IGZhbHNlLFxuICAkc3R5bGU6IGZhbHNlXG4pIHtcbiAgJGllZm9udDogdW5xdW90ZShcIiN7JGVvdH0/I2llZml4XCIpO1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogcXVvdGUoJG5hbWUpO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogZm9udC11cmwoJGVvdCk7XG4gICAgICAkZm9udC1maWxlczogZm9udC11cmwoJGllZm9udCkgdW5xdW90ZShcImZvcm1hdCgnZW90JylcIiksICRmb250LWZpbGVzOyBcbiAgICB9XG4gICAgc3JjOiAkZm9udC1maWxlcztcbiAgICBAaWYgJHdlaWdodCB7XG4gICAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICB9XG4gICAgQGlmICRzdHlsZSB7XG4gICAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIEBkb2Mgb2ZmXG4vLyBOb3RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNhZmFyaSwgQ2hyb21lLCBhbmQgRmlyZWZveCBhbGwgc3VwcG9ydCAzRCB0cmFuc2Zvcm1zLiBIb3dldmVyLFxuLy8gb25seSBpbiB0aGUgbW9zdCByZWNlbnQgYnVpbGRzLiBZb3Ugc2hvdWxkIGFsc28gcHJvdmlkZSBmYWxsYmFjayAyZCBzdXBwb3J0IGZvclxuLy8gT3BlcmEgYW5kIElFLiBJRTEwIGlzIHNsYXRlZCB0byBoYXZlIDNkIGVuYWJsZWQsIGJ1dCBpcyBjdXJyZW50bHkgdW5yZWxlYXNlZC5cbi8vIFRvIG1ha2UgdGhhdCBlYXN5LCBhbGwgMkQgdHJhbnNmb3JtcyBpbmNsdWRlIGFuIGJyb3dzZXItdGFyZ2V0aW5nIHRvZ2dsZSAoJG9ubHkzZClcbi8vIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZSB0d28gc3VwcG9ydCBsaXN0cy4gVGhlIHRvZ2dsZSBkZWZhdWx0cyB0byAnZmFsc2UnICgyRCksXG4vLyBhbmQgYWxzbyBhY2NlcHRzICd0cnVlJyAoM0QpLiBDdXJyZW50bHkgdGhlIGxpc3RzIGFyZSBhcyBmb2xsb3dzOlxuLy8gMkQ6IE1vemlsbGEsIFdlYmtpdCwgT3BlcmEsIE9mZmljaWFsXG4vLyAzRDogV2Via2l0LCBGaXJlZm94LlxuXG4vLyBBdmFpbGFibGUgVHJhbnNmb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gU2NhbGUgKDJkIGFuZCAzZClcbi8vIC0gUm90YXRlICgyZCBhbmQgM2QpXG4vLyAtIFRyYW5zbGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBTa2V3ICgyZCBvbmx5KVxuXG4vLyBUcmFuc2Zvcm0gUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gVHJhbnNmb3JtIE9yaWdpbiAoMmQgYW5kIDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSAoM2QpXG4vLyAtIFBlcnNwZWN0aXZlIE9yaWdpbiAoM2QpXG4vLyAtIFRyYW5zZm9ybSBTdHlsZSAoM2QpXG4vLyAtIEJhY2tmYWNlIFZpc2liaWxpdHkgKDNkKVxuXG4vLyBNaXhpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybS1vcmlnaW5cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybS1vcmlnaW4yZCwgdHJhbnNmb3JtLW9yaWdpbjNkXG4vLyAgLSBoZWxwZXJzOiAgICBhcHBseS1vcmlnaW5cbi8vIHRyYW5zZm9ybVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtMmQsIHRyYW5zZm9ybTNkXG4vLyAgLSBoZWxwZXJzOiAgICBzaW1wbGUtdHJhbnNmb3JtLCBjcmVhdGUtdHJhbnNmb3JtXG4vLyBwZXJzcGVjdGl2ZVxuLy8gIC0gaGVscGVyczogICAgcGVyc3BlY3RpdmUtb3JpZ2luXG4vLyB0cmFuc2Zvcm0tc3R5bGVcbi8vIGJhY2tmYWNlLXZpc2liaWxpdHlcbi8vIHNjYWxlXG4vLyAgLSBzaG9ydGN1dHM6ICBzY2FsZVgsIHNjYWxlWSwgc2NhbGVaLCBzY2FsZTNkXG4vLyByb3RhdGVcbi8vICAtIHNob3J0Y3V0czogIHJvdGF0ZVgsIHJvdGF0ZVksIHJvdGF0ZTNkXG4vLyB0cmFuc2xhdGVcbi8vICAtIHNob3J0Y3V0czogIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRyYW5zbGF0ZVosIHRyYW5zbGF0ZTNkXG4vLyBza2V3XG4vLyAgLSBzaG9ydGN1dHM6ICBza2V3WCwgc2tld1lcblxuLy8gRGVmYXVsdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFRoZSBkZWZhdWx0IHgtb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teCAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teSAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teiAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXggICAgIDogMS4yNSAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS15ICAgICA6ICRkZWZhdWx0LXNjYWxlLXggICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteiAgICAgOiAkZGVmYXVsdC1zY2FsZS14ICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgYW5nbGUgZm9yIHJvdGF0aW9uc1xuJGRlZmF1bHQtcm90YXRlICAgICAgOiA0NWRlZyAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXggICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteSAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci16ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS14IDogMWVtICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXkgOiAkZGVmYXVsdC10cmFuc2xhdGUteCAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteiA6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXggICAgICA6IDVkZWcgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteSAgICAgIDogNWRlZyAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vICoqVHJhbnNmb3JtLW9yaWdpbioqXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmdcbi8vXG4vLyAgICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCBvcmlnaW4gWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAnb3JpZ2luJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgMS0zICh4L3kveikgY29vcmRpbmF0ZXNcbi8vIGluIHBlcmNlbnRhZ2VzLCBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIG9yIHJlbGF0aXZlXG4vLyAobGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBjZW50ZXIpIHVuaXRzXG4vL1xuLy8gQHBhcmFtIG9ubHkzZCBTZXQgdGhpcyB0byB0cnVlIHRvIG9ubHkgYXBwbHkgdGhpc1xuLy8gbWl4aW4gd2hlcmUgYnJvd3NlcnMgaGF2ZSAzRCBzdXBwb3J0LlxuQG1peGluIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKSB7XG4gICRvbmx5M2Q6ICRvbmx5M2Qgb3IgLWNvbXBhc3MtbGlzdC1zaXplKC1jb21wYXNzLWxpc3QoJG9yaWdpbikpID4gMjtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbiggWyBvcmlnaW4teCwgb3JpZ2luLXksIG9yaWdpbi16LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAzICdvcmlnaW4tJyBhcmd1bWVudHMgcmVwcmVzZW50IHgveS96IGNvb3JkaW5hdGVzLlxuLy9cbi8vICoqTk9URToqKiBzZXR0aW5nIHogY29vcmRpbmF0ZXMgdHJpZ2dlcnMgM0Qgc3VwcG9ydCBsaXN0LCBsZWF2ZSBmYWxzZSBmb3IgMkQgc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oXG4gICRvcmlnaW4teDogJGRlZmF1bHQtb3JpZ2luLXgsXG4gICRvcmlnaW4teTogJGRlZmF1bHQtb3JpZ2luLXksXG4gICRvcmlnaW4tejogZmFsc2UsXG4gICRvbmx5M2Q6ICAgaWYoJG9yaWdpbi16LCB0cnVlLCBmYWxzZSlcbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCcnKTtcbiAgQGlmICRvcmlnaW4teCBvciAkb3JpZ2luLXkgb3IgJG9yaWdpbi16IHtcbiAgICBAaWYgJG9yaWdpbi14IHsgJG9yaWdpbjogJG9yaWdpbi14OyB9IEBlbHNlIHsgJG9yaWdpbjogNTAlOyB9XG4gICAgQGlmICRvcmlnaW4teSB7ICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi15OyB9IEBlbHNlIHsgQGlmICRvcmlnaW4teiB7ICRvcmlnaW46ICRvcmlnaW4gNTAlOyB9fVxuICAgIEBpZiAkb3JpZ2luLXogeyAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4tejsgfVxuICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKTtcbiAgfVxufVxuXG5cbi8vIFRyYW5zZm9ybSBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oIHRyYW5zZm9ybXMgWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAndHJhbnNmb3JtcycgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBhbGwgdGhlIHRyYW5zZm9ybXMgdG8gYmUgYXBwbGllZC5cbkBtaXhpbiB0cmFuc2Zvcm0oXG4gICR0cmFuc2Zvcm0sXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgYWxsIGJyb3dzZXJzIHdpdGggMkQgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0yZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgZmFsc2UpO1xufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgb25seSBicm93c2VycyB3aXRoIDNEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtM2QoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIHRydWUpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gM0QgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNldCB0aGUgcGVyc3BlY3RpdmUgb2YgM0QgdHJhbnNmb3JtcyBvbiB0aGUgY2hpbGRyZW4gb2YgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCBwZXJzcGVjdGl2ZSApXG4vL1xuLy8gd2hlcmUgJ3BlcnNwZWN0aXZlJyBpcyBhIHVuaXRsZXNzIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlcHRoIG9mIHRoZVxuLy8gei1heGlzLiBUaGUgaGlnaGVyIHRoZSBwZXJzcGVjdGl2ZSwgdGhlIG1vcmUgZXhhZ2dlcmF0ZWQgdGhlIGZvcmVzaG9ydGVuaW5nLlxuLy8gdmFsdWVzIGZyb20gNTAwIHRvIDEwMDAgYXJlIG1vcmUtb3ItbGVzcyBcIm5vcm1hbFwiIC0gYSBnb29kIHN0YXJ0aW5nLXBvaW50LlxuQG1peGluIHBlcnNwZWN0aXZlKCRwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZSwgJHAsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNldCB0aGUgb3JpZ2luIHBvc2l0aW9uIGZvciB0aGUgcGVyc3BlY3RpdmVcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlLW9yaWdpbihvcmlnaW4teCBbb3JpZ2luLXldKVxuLy9cbi8vIHdoZXJlIHRoZSB0d28gYXJndW1lbnRzIHJlcHJlc2VudCB4L3kgY29vcmRpbmF0ZXNcbkBtaXhpbiBwZXJzcGVjdGl2ZS1vcmlnaW4oJG9yaWdpbjogNTAlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZS1vcmlnaW4sICRvcmlnaW4sXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERldGVybWluZSB3aGV0aGVyIGEgM0Qgb2JqZWN0cyBjaGlsZHJlbiBhbHNvIGxpdmUgaW4gdGhlIGdpdmVuIDNEIHNwYWNlXG4vL1xuLy8gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUoIFsgc3R5bGUgXSApXG4vL1xuLy8gd2hlcmUgYHN0eWxlYCBjYW4gYmUgZWl0aGVyIGBmbGF0YCBvciBgcHJlc2VydmUtM2RgLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byBgZmxhdGAsIG1peGluIGRlZmF1bHRzIHRvIGBwcmVzZXJ2ZS0zZGAuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogcHJlc2VydmUtM2QpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCB3aGVuIGl0J3MgYmFjayBpcyB0dXJuZWRcbi8vXG4vLyAgICAgQGluY2x1ZGUgYmFja2ZhY2UtdmlzaWJpbGl0eSggWyB2aXNpYmlsaXR5IF0gKVxuLy9cbi8vIHdoZXJlIGB2aXNpYmlsaXR5YCBjYW4gYmUgZWl0aGVyIGB2aXNpYmxlYCBvciBgaGlkZGVuYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gdmlzaWJsZSwgbWl4aW4gZGVmYXVsdHMgdG8gaGlkZGVuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eTogaGlkZGVuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zZm9ybSBQYXJ0aWFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlc2Ugd29yayB3ZWxsIG9uIHRoZWlyIG93biwgYnV0IHRoZXkgZG9uJ3QgYWRkIHRvIGVhY2ggb3RoZXIsIHRoZXkgb3ZlcnJpZGUuXG4vLyBVc2UgYWxvbmcgd2l0aCB0cmFuc2Zvcm0gcGFyYW1ldGVyIG1peGlucyB0byBhZGp1c3Qgb3JpZ2luLCBwZXJzcGVjdGl2ZSBhbmQgc3R5bGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIFNjYWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYW5kIHkgYXhpczpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHNjYWxlKCBbIHNjYWxlLXgsIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2NhbGUtJyBhcmd1bWVudHMgYXJlIHVuaXRsZXNzIG11bHRpcGxpZXJzIG9mIHRoZSB4IGFuZCB5IGRpbWVuc2lvbnNcbi8vIGFuZCBwZXJzcGVjdGl2ZSwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhlIHN0YW5kLWFsb25lIHBlcnNwZWN0aXZlIHByb3BlcnR5L21peGluXG4vLyBidXQgYXBwbGllcyB0byB0aGUgaW5kaXZpZHVhbCBlbGVtZW50IChtdWx0aXBsaWVkIHdpdGggYW55IHBhcmVudCBwZXJzcGVjdGl2ZSlcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUoXG4gICRzY2FsZS14OiAgICAgJGRlZmF1bHQtc2NhbGUteCxcbiAgJHNjYWxlLXk6ICAgICAkc2NhbGUteCxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVgoIFsgc2NhbGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWChcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVgoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVkoIFsgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWShcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVkoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVooIFsgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWihcbiAgJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVooJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gU2NhbGUgYW5kIG9iamVjdCBhbG9uZyBhbGwgdGhyZWUgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGUzZCggWyBzY2FsZS14LCBzY2FsZS15LCBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUzZChcbiAgJHNjYWxlLXg6ICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkc2NhbGUteTogICAgICRkZWZhdWx0LXNjYWxlLXksXG4gICRzY2FsZS16OiAgICAgJGRlZmF1bHQtc2NhbGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFJvdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeiBheGlzICAoMkQpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgJ3JvdGF0aW9uJyBpcyBhbiBhbmdsZSBzZXQgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHNcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gQSBsb25nY3V0IGZvciAncm90YXRlJyBpbiBjYXNlIHlvdSBmb3JnZXQgdGhhdCAneicgaXMgaW1wbGllZFxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVaKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIHJvdGF0ZSgkcm90YXRlLCAkcGVyc3BlY3RpdmUsICRvbmx5M2QpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeCBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZVgoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVYKFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZVgoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWShcbiAgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGVZKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCBhbiBhcmJpdHJhcnkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgdmVjdG9yLXgsIHZlY3Rvci15LCB2ZWN0b3Iteiwgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy8gd2hlcmUgdGhlICd2ZWN0b3ItJyBhcmd1bWVudHMgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMuXG4vLyBUaGVzZSBudW1iZXJzIGFyZSBub3QgaW1wb3J0YW50IG9uIHRoZWlyIG93biwgYnV0IGluIHJlbGF0aW9uIHRvIG9uZSBhbm90aGVyXG4vLyBjcmVhdGluZyBhbiBheGlzIGZyb20geW91ciB0cmFuc2Zvcm0tb3JpZ2luLCBhbG9uZyB0aGUgYXhpcyBvZiBYeCA9IFl5ID0gWnouXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZTNkKFxuICAkdmVjdG9yLXg6ICRkZWZhdWx0LXZlY3Rvci14LFxuICAkdmVjdG9yLXk6ICRkZWZhdWx0LXZlY3Rvci15LFxuICAkdmVjdG9yLXo6ICRkZWZhdWx0LXZlY3Rvci16LFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZTNkKCR2ZWN0b3IteCwgJHZlY3Rvci15LCAkdmVjdG9yLXosICRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IG9yIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlIHRoZSAndHJhbnNsYXRlLScgYXJndW1lbnRzIGFjY2VwdCBhbnkgZGlzdGFuY2UgaW4gcGVyY2VudGFnZXMgb3IgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlKFxuICAkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVYKFxuICAkdHJhbnMteDogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVYKCR0cmFucy14KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWShcbiAgJHRyYW5zLXk6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWSgkdHJhbnMteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVooXG4gICR0cmFucy16OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVooJHRyYW5zLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCwgeSBhbmQgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlM2QoXG4gICR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICR0cmFuc2xhdGUtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gU2tldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNrZXcgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NrZXctJyBhcmd1bWVudHMgYWNjZXB0IGNzcyBhbmdsZXMgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXcoXG4gICRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCxcbiAgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tldygkc2tldy14LCAkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeCBheGl6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WChcbiAgJHNrZXcteDogJGRlZmF1bHQtc2tldy14LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tld1goJHNrZXcteCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHkgYXhpc1xuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1koXG4gICRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNrZXdZKCRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuXG4vLyBGdWxsIHRyYW5zZm9ybSBtaXhpbnNcbi8vIEZvciBzZXR0aW5ncyBhbnkgY29tYmluYXRpb24gb2YgdHJhbnNmb3JtcyBhcyBhcmd1bWVudHNcbi8vIFRoZXNlIGFyZSBjb21wbGV4IGFuZCBub3QgaGlnaGx5IHJlY29tbWVuZGVkIGZvciBkYWlseSB1c2UuIFRoZXkgYXJlIG1haW5seVxuLy8gaGVyZSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbi8vXG4vLyAqIHRoZXkgaW5jbHVkZSBvcmlnaW4gYWRqdXN0bWVudHNcbi8vICogc2NhbGUgdGFrZXMgYSBtdWx0aXBsaWVyICh1bml0bGVzcyksIHJvdGF0ZSBhbmQgc2tldyB0YWtlIGRlZ3JlZXMgKGRlZylcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gY3JlYXRlLXRyYW5zZm9ybShcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJHNjYWxlLXg6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXk6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXo6ICAgICBmYWxzZSxcbiAgJHJvdGF0ZS14OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS15OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS16OiAgICBmYWxzZSxcbiAgJHJvdGF0ZTNkOiAgICBmYWxzZSxcbiAgJHRyYW5zLXg6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXk6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXo6ICAgICBmYWxzZSxcbiAgJHNrZXcteDogICAgICBmYWxzZSxcbiAgJHNrZXcteTogICAgICBmYWxzZSxcbiAgJG9yaWdpbi14OiAgICBmYWxzZSxcbiAgJG9yaWdpbi15OiAgICBmYWxzZSxcbiAgJG9yaWdpbi16OiAgICBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdW5xdW90ZShcIlwiKTtcblxuICAvLyBwZXJzcGVjdGl2ZVxuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpIDsgfVxuXG4gIC8vIHNjYWxlXG4gIEBpZiAkc2NhbGUteCBhbmQgJHNjYWxlLXkge1xuICAgIEBpZiAkc2NhbGUteiB7ICR0cmFuczogJHRyYW5zIHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICRzY2FsZS14IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVYKCRzY2FsZS14KTsgfVxuICAgIEBpZiAkc2NhbGUteSB7ICR0cmFuczogJHRyYW5zIHNjYWxlWSgkc2NhbGUteSk7IH1cbiAgICBAaWYgJHNjYWxlLXogeyAkdHJhbnM6ICR0cmFucyBzY2FsZVooJHNjYWxlLXopOyB9XG4gIH1cblxuICAvLyByb3RhdGVcbiAgQGlmICRyb3RhdGUteCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVgoJHJvdGF0ZS14KTsgfVxuICBAaWYgJHJvdGF0ZS15IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWSgkcm90YXRlLXkpOyB9XG4gIEBpZiAkcm90YXRlLXogeyAkdHJhbnM6ICR0cmFucyByb3RhdGVaKCRyb3RhdGUteik7IH1cbiAgQGlmICRyb3RhdGUzZCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZTNkKCRyb3RhdGUzZCk7IH1cblxuICAvLyB0cmFuc2xhdGVcbiAgQGlmICR0cmFucy14IGFuZCAkdHJhbnMteSB7XG4gICAgQGlmICR0cmFucy16IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlM2QoJHRyYW5zLXgsICR0cmFucy15LCAkdHJhbnMteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZSgkdHJhbnMteCwgJHRyYW5zLXkpOyB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAkdHJhbnMteCB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVgoJHRyYW5zLXgpOyB9XG4gICAgQGlmICR0cmFucy15IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWSgkdHJhbnMteSk7IH1cbiAgICBAaWYgJHRyYW5zLXogeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVaKCR0cmFucy16KTsgfVxuICB9XG5cbiAgLy8gc2tld1xuICBAaWYgJHNrZXcteCBhbmQgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXcoJHNrZXcteCwgJHNrZXcteSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2tldy14IHsgJHRyYW5zOiAkdHJhbnMgc2tld1goJHNrZXcteCk7IH1cbiAgICBAaWYgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXdZKCRza2V3LXkpOyB9XG4gIH1cblxuICAvLyBhcHBseSBpdCFcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14LCAkb3JpZ2luLXksICRvcmlnaW4teiwgJG9ubHkzZCk7XG59XG5cblxuLy8gQSBzaW1wbGlmaWVkIHNldCBvZiBvcHRpb25zXG4vLyBiYWNrd2FyZHMtY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSAndHJhbnNmb3JtJyBtaXhpblxuQG1peGluIHNpbXBsZS10cmFuc2Zvcm0oXG4gICRzY2FsZTogICAgZmFsc2UsXG4gICRyb3RhdGU6ICAgZmFsc2UsXG4gICR0cmFucy14OiAgZmFsc2UsXG4gICR0cmFucy15OiAgZmFsc2UsXG4gICRza2V3LXg6ICAgZmFsc2UsXG4gICRza2V3LXk6ICAgZmFsc2UsXG4gICRvcmlnaW4teDogZmFsc2UsXG4gICRvcmlnaW4teTogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBjcmVhdGUtdHJhbnNmb3JtKFxuICAgIGZhbHNlLFxuICAgICRzY2FsZSwgJHNjYWxlLCBmYWxzZSxcbiAgICBmYWxzZSwgZmFsc2UsICRyb3RhdGUsIGZhbHNlLFxuICAgICR0cmFucy14LCAkdHJhbnMteSwgZmFsc2UsXG4gICAgJHNrZXcteCwgJHNrZXcteSxcbiAgICAkb3JpZ2luLXgsICRvcmlnaW4teSwgZmFsc2UsXG4gICAgZmFsc2VcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIFRyYW5zaXRpb25zXG4vLyBDdXJyZW50bHkgb25seSB3b3JrcyBpbiBXZWJraXQuXG4vL1xuLy8gKiBleHBlY3RlZCBpbiBDU1MzLCBGaXJlRm94IDMuNi83IGFuZCBPcGVyYSBQcmVzdG8gMi4zXG4vLyAqIFdlJ2xsIGJlIHByZXBhcmVkLlxuLy9cbi8vIEluY2x1ZGluZyB0aGlzIHN1Ym1vZHVsZSBzZXRzIGZvbGxvd2luZyBkZWZhdWx0cyBmb3IgdGhlIG1peGluczpcbi8vXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IGFsbFxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gOiAxc1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gOiBmYWxzZVxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkgICAgOiBmYWxzZVxuLy9cbi8vIE92ZXJyaWRlIHRoZW0gaWYgeW91IGxpa2UuIFRpbWluZy1mdW5jdGlvbiBhbmQgZGVsYXkgYXJlIHNldCB0byBmYWxzZSBmb3IgYnJvd3NlciBkZWZhdWx0cyAoZWFzZSwgMHMpLlxuXG4kZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0eS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkcHJvcGVydHktMiA6IGZhbHNlLFxuICAkcHJvcGVydHktMyA6IGZhbHNlLFxuICAkcHJvcGVydHktNCA6IGZhbHNlLFxuICAkcHJvcGVydHktNSA6IGZhbHNlLFxuICAkcHJvcGVydHktNiA6IGZhbHNlLFxuICAkcHJvcGVydHktNyA6IGZhbHNlLFxuICAkcHJvcGVydHktOCA6IGZhbHNlLFxuICAkcHJvcGVydHktOSA6IGZhbHNlLFxuICAkcHJvcGVydHktMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5LTEpID09IHN0cmluZyB7ICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgICAgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAgICAgICRwcm9wZXJ0aWVzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHkgOiAkcHJvcGVydGllcztcbn1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRkdXJhdGlvbi0yIDogZmFsc2UsXG4gICRkdXJhdGlvbi0zIDogZmFsc2UsXG4gICRkdXJhdGlvbi00IDogZmFsc2UsXG4gICRkdXJhdGlvbi01IDogZmFsc2UsXG4gICRkdXJhdGlvbi02IDogZmFsc2UsXG4gICRkdXJhdGlvbi03IDogZmFsc2UsXG4gICRkdXJhdGlvbi04IDogZmFsc2UsXG4gICRkdXJhdGlvbi05IDogZmFsc2UsXG4gICRkdXJhdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHsgJGR1cmF0aW9uLTE6IHVucXVvdGUoJGR1cmF0aW9uLTEpOyB9XG4gICRkdXJhdGlvbnM6IGNvbXBhY3QoJGR1cmF0aW9uLTEsICRkdXJhdGlvbi0yLCAkZHVyYXRpb24tMywgJGR1cmF0aW9uLTQsICRkdXJhdGlvbi01LCAkZHVyYXRpb24tNiwgJGR1cmF0aW9uLTcsICRkdXJhdGlvbi04LCAkZHVyYXRpb24tOSwgJGR1cmF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdGltaW5nIGZ1bmN0aW9uc1xuLy9cbi8vICogWyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoeDEsIHkxLCB4MiwgeTIpXVxuLy8gKiBGb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGZ1bmN0aW9uLTIgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTMgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTQgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTUgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTYgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTcgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTggOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTkgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTEwOiBmYWxzZVxuKSB7XG4gICRmdW5jdGlvbi0xOiB1bnF1b3RlKCRmdW5jdGlvbi0xKTtcbiAgJGZ1bmN0aW9uczogY29tcGFjdCgkZnVuY3Rpb24tMSwgJGZ1bmN0aW9uLTIsICRmdW5jdGlvbi0zLCAkZnVuY3Rpb24tNCwgJGZ1bmN0aW9uLTUsICRmdW5jdGlvbi02LCAkZnVuY3Rpb24tNywgJGZ1bmN0aW9uLTgsICRmdW5jdGlvbi05LCAkZnVuY3Rpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSxcbiAgJGRlbGF5LTIgOiBmYWxzZSxcbiAgJGRlbGF5LTMgOiBmYWxzZSxcbiAgJGRlbGF5LTQgOiBmYWxzZSxcbiAgJGRlbGF5LTUgOiBmYWxzZSxcbiAgJGRlbGF5LTYgOiBmYWxzZSxcbiAgJGRlbGF5LTcgOiBmYWxzZSxcbiAgJGRlbGF5LTggOiBmYWxzZSxcbiAgJGRlbGF5LTkgOiBmYWxzZSxcbiAgJGRlbGF5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcgeyAkZGVsYXktMTogdW5xdW90ZSgkZGVsYXktMSk7IH1cbiAgJGRlbGF5czogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5cyxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbihcbiAgJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5XG4pIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbihcbiAgJHRyYW5zaXRpb24tMSA6IGRlZmF1bHQsXG4gICR0cmFuc2l0aW9uLTIgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi00IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTUgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNiA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi03IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTggOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tOSA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgJHRyYW5zaXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkdHJhbnNpdGlvbi0xIDogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTtcbiAgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLDEpKSA9PSBsaXN0IHtcbiAgICAkdHJhbnNpdGlvbnM6IGpvaW4oJHRyYW5zaXRpb24tMSwgY29tcGFjdCgkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCksIGNvbW1hKTtcbiAgfSBAZWxzZSB7XG4gICAgJHRyYW5zaXRpb25zIDogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7XG4gIH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuXG4gIC8vIFRoaXMgYmxvY2sgY2FuIGJlIG1hZGUgY29uc2lkZXJhYmx5IHNpbXBsZXIgYXQgdGhlIHBvaW50IGluIHRpbWUgdGhhdFxuICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdmFsdWVzIGZyb20gdGhlIGxpc3RcbiAgICAvLyAodGhpcyB3b3VsZCBiZSBjbGVhbmVyIGlmIG50aCB0b29rIGEgM3JkIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlKS5cbiAgICAkcHJvcGVydHk6IG50aCgkdHJhbnNpdGlvbiwgMSk7XG4gICAgJGR1cmF0aW9uOiBmYWxzZTtcbiAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAkZGVsYXk6IGZhbHNlO1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7ICRkdXJhdGlvbjogICAgICAgIG50aCgkdHJhbnNpdGlvbiwgMik7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDIgeyAkdGltaW5nLWZ1bmN0aW9uOiBudGgoJHRyYW5zaXRpb24sIDMpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAzIHsgJGRlbGF5OiAgICAgICAgICAgbnRoKCR0cmFuc2l0aW9uLCA0KTsgJGhhcy1kZWxheXM6IHRydWU7IH1cblxuICAgIC8vIElmIGEgZGVsYXkgaXMgcHJvdmlkZWQgd2l0aG91dCBhIHRpbWluZyBmdW5jdGlvblxuICAgIEBpZiBpcy10aW1lKCR0aW1pbmctZnVuY3Rpb24pIGFuZCBub3QoJGRlbGF5KSB7ICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjsgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuXG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbikpO1xuICAgICAgICRtb3otdmFsdWU6IGFwcGVuZCggICAkbW96LXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgIC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KSk7XG4gICAgICAgICAkby12YWx1ZTogYXBwZW5kKCAgICAgJG8tdmFsdWUsIGNvbXBhY3QocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oICAgICAtbywgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpKTtcbiAgfVxuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbiA6ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMgICAgICAgICAgICAgICAgICAgICAgIHsgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5IDogJGRlbGF5czsgICAgICAgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbiA6ICRtb3otdmFsdWU7ICAgIH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAgICAgICAtby10cmFuc2l0aW9uIDogJG8tdmFsdWU7ICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gOiAkdHJhbnNpdGlvbnM7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0O1xuICB9IEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9O1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90KG5vdChpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ2hhbmdlIHRoZSBhcHBlYXJhbmNlIGZvciBNb3ppbGxhLCBXZWJraXQgYW5kIHBvc3NpYmx5IHRoZSBmdXR1cmUuXG4vLyBUaGUgYXBwZWFyYW5jZSBwcm9wZXJ0eSBpcyBjdXJyZW50bHkgbm90IHByZXNlbnQgaW4gYW55IG5ld2VyIENTUyBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoZXJlIGlzIG5vIG9mZmljaWFsIGxpc3Qgb2YgYWNjZXB0ZWQgdmFsdWVzLCBidXQgeW91IG1pZ2h0IGNoZWNrIHRoZXNlIHNvdXJjZTpcbi8vICAgTW96aWxsYSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0NTUy8tbW96LWFwcGVhcmFuY2Vcbi8vICAgV2Via2l0ICA6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93ZWJraXQtbWlycm9yL3NvdXJjZS9icm93c2UvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4/c3BlYz1zdm5mMWFlYTU1OWRjZDAyNWE4OTQ2YWE3ZGE2ZTRlODMwNmY1YzFiNjA0JnI9NjNjN2QxYWY0NDQzMGIzMTQyMzNmZWEzNDJjM2RkYjJhMDUyZTM2NVxuLy8gICAoc2VhcmNoIGZvciAnYXBwZWFyYW5jZScgd2l0aGluIHRoZSBwYWdlKVxuXG5AbWl4aW4gYXBwZWFyYW5jZSgkYXApIHtcbiAgJGFwOiB1bnF1b3RlKCRhcCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChhcHBlYXJhbmNlLCAkYXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBXZWJraXQsIElFMTAgYW5kIGZ1dHVyZSBzdXBwb3J0IGZvciBbQ1NTIFJlZ2lvbnNdKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8pXG4vL1xuLy8gJHRhcmdldCBpcyBhIHZhbHVlIHlvdSB1c2UgdG8gbGluayB0d28gcmVnaW9ucyBvZiB5b3VyIGNzcy4gR2l2ZSB0aGUgc291cmNlIG9mIHlvdXIgY29udGVudCB0aGUgZmxvdy1pbnRvIHByb3BlcnR5LCBhbmQgZ2l2ZSB5b3VyIHRhcmdldCBjb250YWluZXIgdGhlIGZsb3ctZnJvbSBwcm9wZXJ0eS5cbi8vXG4vLyBGb3IgYSB2aXN1YWwgZXhwbGFuYXRpb24sIHNlZSB0aGUgZGlhZ3JhbXMgYXQgQ2hyaXMgQ295aWVyJ3Ncbi8vIFtDU1MtVHJpY2tzXShodHRwOi8vY3NzLXRyaWNrcy5jb20vY29udGVudC1mb2xkaW5nLylcblxuQG1peGluIGZsb3ctaW50bygkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWludG8sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn1cblxuQG1peGluIGZsb3ctZnJvbSgkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWZyb20sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIE1peGlucyB0byBzdXBwb3J0IHNwZWNpZmljIENTUyBUZXh0IExldmVsIDMgZWxlbWVudHNcbi8vXG4vL1xuLy9cbi8vIE1peGluIGZvciB3b3JkLWJyZWFrIHByb3BlcnRpZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL2NzczMtdGV4dC8jd29yZC1icmVha1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogbm9ybWFsLCBrZWVwLWFsbCwgYnJlYWstYWxsXG4vL1xuLy8gRXhhbXBsZTpcbi8vICAgIHAud29yZEJyZWFrIHtAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7fVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIHAud29yZEJyZWFrIHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO31cbi8vXG5AbWl4aW4gd29yZC1icmVhaygkdmFsdWU6IG5vcm1hbCl7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICAgIC8vV2Via2l0IGhhbmRsZXMgYnJlYWstYWxsIGRpZmZlcmVudGx5Li4uIGFzIGJyZWFrLXdvcmRcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgYnJlYWstd29yZCxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gTWl4aW4gZm9yIHRoZSBoeXBoZW5zIHByb3BlcnR5XG4vL1xuLy8gVzNDIHNwZWNpZmljYXRpb246IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8jaHlwaGVuc1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYXV0bywgbWFudWFsLCBub25lXG4vL1xuLy8gRXhhbXBsZTpcbi8vICBwIHtcbi8vICAgIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7fVxuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIHAge1xuLy8gICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbnMoJHZhbHVlOiBhdXRvKXtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGh5cGhlbnMsICR2YWx1ZSxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciB4LWJyb3dzZXIgaHlwaGVuYXRpb24gYmFzZWQgb24gQGF1Y2hlbmJlcmcncyBwb3N0OlxuLy8gUmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIDx3YnIvPiBIVE1MIHRhZ1xuLy8gaHR0cDovL2Jsb2cua2VubmV0aC5pby9ibG9nLzIwMTIvMDMvMDQvd29yZC13cmFwcGluZy1oeXBlcm5hdGlvbi11c2luZy1jc3MvXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgZGl2IHtAaW5jbHVkZSBoeXBoZW5hdGlvbjt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIGRpdiB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbi8vICAgICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5hdGlvbntcbiAgQGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO1xuICBAaW5jbHVkZSBoeXBoZW5zO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIHRoZSB1cGNvbWluZyAoPykgY3NzMyBmaWx0ZXIgcHJvcGVydHkuXG4vL1xuLy8gRWFjaCBmaWx0ZXIgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gZmlsdGVyIHByb3BlcnR5LlxuQG1peGluIGZpbHRlciAoXG4gICRmaWx0ZXItMSxcbiAgJGZpbHRlci0yIDogZmFsc2UsXG4gICRmaWx0ZXItMyA6IGZhbHNlLFxuICAkZmlsdGVyLTQgOiBmYWxzZSxcbiAgJGZpbHRlci01IDogZmFsc2UsXG4gICRmaWx0ZXItNiA6IGZhbHNlLFxuICAkZmlsdGVyLTcgOiBmYWxzZSxcbiAgJGZpbHRlci04IDogZmFsc2UsXG4gICRmaWx0ZXItOSA6IGZhbHNlLFxuICAkZmlsdGVyLTEwOiBmYWxzZVxuKSB7XG4gICRmaWx0ZXIgOiBjb21wYWN0KCRmaWx0ZXItMSwgJGZpbHRlci0yLCAkZmlsdGVyLTMsICRmaWx0ZXItNCwgJGZpbHRlci01LCAkZmlsdGVyLTYsICRmaWx0ZXItNywgJGZpbHRlci04LCAkZmlsdGVyLTksICRmaWx0ZXItMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmlsdGVyLCAkZmlsdGVyLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiB0cnVlO1xuXG4vLyBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgU2FzcydzIEBleHRlbmQgZGlyZWN0aXZlIHRvIGFwcGx5IHRoZSBiZWhhdmlvclxuLy8gdG8geW91ciBQSUUgZWxlbWVudHMuIFRvIGFzc2lzdCB5b3UsIENvbXBhc3MgcHJvdmlkZXMgdGhpcyB2YXJpYWJsZS5cbi8vIFdoZW4gc2V0LCBpdCB3aWxsIGNhdXNlIHRoZSBgQGluY2x1ZGUgcGllYCBtaXhpbiB0byBleHRlbmQgdGhpcyBjbGFzcy5cbi8vIFRoZSBjbGFzcyBuYW1lIHlvdSBwcm92aWRlIHNob3VsZCAqKm5vdCoqIGluY2x1ZGUgdGhlIGAuYC5cbiRwaWUtYmFzZS1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGFwcHJvYWNoIHRvIHVzaW5nIFBJRS5cbi8vIENhbiBiZSBvbmUgb2Y6XG4vL1xuLy8gKiByZWxhdGl2ZSAoZGVmYXVsdClcbi8vICogei1pbmRleFxuLy8gKiBub25lXG4kcGllLWRlZmF1bHQtYXBwcm9hY2g6IHJlbGF0aXZlICFkZWZhdWx0O1xuXG4vLyBUaGUgbG9jYXRpb24gb2YgeW91ciBQSUUgYmVoYXZpb3IgZmlsZVxuLy8gVGhpcyBzaG91bGQgYmUgcm9vdC1yZWxhdGl2ZSB0byB5b3VyIHdlYiBzZXJ2ZXJcbi8vIHJlbGF0aXZlIGFzc2V0cyBkb24ndCB3b3JrLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4vLyB5b3Ugc2V0IHRoaXMgeW91cnNlbGYuXG4kcGllLWJlaGF2aW9yOiBzdHlsZXNoZWV0LXVybChcIlBJRS5odGNcIikgIWRlZmF1bHQ7XG5cbi8vIFdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoZVxuLy8gZmlyc3QgYW5jZXN0b3Igb2YgdGhlIFBJRSBlbGVtZW50IGF0XG4vLyBvciBiZWZvcmUgdGhlIGNvbnRhaW5lcidzIG9wYXF1ZSBiYWNrZ3JvdW5kXG4vLyBzaG91bGQgaGF2ZSBhIHotaW5kZXggc2V0IGFzIHdlbGwgdG8gZW5zdXJlXG4vLyBwcm9wZXJ0IHotaW5kZXggc3RhY2tpbmcuXG4vL1xuLy8gVGhlIGAkcG9zaXRpb25gIGFyZ3VtZW50IG11c3QgYmUgc29tZSBub24tc3RhdGljXG4vLyB2YWx1ZSAoYWJzb2x1dGUsIHJlbGF0aXZlLCBldGMuKVxuQG1peGluIHBpZS1jb250YWluZXIoJHotaW5kZXg6IDAsICRwb3NpdGlvbjogcmVsYXRpdmUpIHtcbiAgei1pbmRleDogJHotaW5kZXg7XG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG59XG5cbi8vIFBJRSBlbGVtZW50cyBtdXN0IGhhdmUgdGhpcyBiZWhhdmlvciBhdHRhY2hlZCB0byB0aGVtLlxuLy8gSUUgaXMgYnJva2VuIC0tIGl0IGRvZXNuJ3QgdGhpbmsgb2YgYmVoYXZpb3IgdXJscyBhc1xuLy8gcmVsYXRpdmUgdG8gdGhlIHN0eWxlc2hlZXQuIEl0IGNvbnNpZGVycyB0aGVtIHJlbGF0aXZlXG4vLyB0byB0aGUgd2VicGFnZS4gQXMgYSByZXN1bHQsIHlvdSBjYW5ub3QgcmVsaWFibHkgdXNlXG4vLyBjb21wYXNzJ3MgcmVsYXRpdmVfYXNzZXRzIHdpdGggUElFLlxuLy8gXG4vLyAqIGAkYXBwcm9hY2hgIC0gb25lIG9mOiByZWxhdGl2ZSwgei1pbmRleCwgb3Igbm9uZVxuLy8gKiBgJHotaW5kZXhgIC0gd2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhpc1xuLy8gICAgICAgICAgICAgICAgaXMgdGhlIHotaW5kZXggdGhhdCBpcyBhcHBsaWVkLlxuQG1peGluIHBpZS1lbGVtZW50KFxuICAkYXBwcm9hY2g6ICRwaWUtZGVmYXVsdC1hcHByb2FjaCxcbiAgJHotaW5kZXg6IDBcbikge1xuICBiZWhhdmlvcjogJHBpZS1iZWhhdmlvcjtcbiAgQGlmICRhcHByb2FjaCA9PSByZWxhdGl2ZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIEBlbHNlIGlmICRhcHByb2FjaCA9PSB6LWluZGV4IHtcbiAgICB6LWluZGV4OiAkei1pbmRleDtcbiAgfVxufVxuXG4vLyBhIHNtYXJ0IG1peGluIHRoYXQga25vd3MgdG8gZXh0ZW5kIG9yIGluY2x1ZGUgcGllLWVsZW1lbnQgYWNjb3JkaW5nXG4vLyB0byB5b3VyIHN0eWxlc2hlZXQncyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy5cbkBtaXhpbiBwaWUoJGJhc2UtY2xhc3M6ICRwaWUtYmFzZS1jbGFzcykge1xuICBAaWYgJGJhc2UtY2xhc3Mge1xuICAgIEBleHRlbmQgLiN7JGJhc2UtY2xhc3N9O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBwaWUtZWxlbWVudDtcbiAgfVxufVxuXG4vLyBXYXRjaCBgJG5gIGxldmVscyBvZiBhbmNlc3RvcnMgZm9yIGNoYW5nZXMgdG8gdGhlaXIgY2xhc3MgYXR0cmlidXRlXG4vLyBTbyB0aGF0IGNhc2NhZGluZyBzdHlsZXMgd2lsbCB3b3JrIGNvcnJlY3RseSBvbiB0aGUgUElFIGVsZW1lbnQuXG5AbWl4aW4gcGllLXdhdGNoLWFuY2VzdG9ycygkbikge1xuICAtcGllLXdhdGNoLWFuY2VzdG9yczogJG47XG59IiwiLy8gVXNlciBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY2FuIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGwgdGhlIHVzZXIgaW50ZXJmYWNlIHByb3BlcnRpZXMgYXNcbi8vIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBicm93c2Vyczpcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QtY3NzMy11c2VyaW50LTIwMDAwMjE2XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cblxuLy8gVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgc2VsZWN0aW9uIG1vZGVsIGFuZCBncmFudWxhcml0eSBvZiBhbiBlbGVtZW50LlxuLy9cbi8vIEBwYXJhbSAkc2VsZWN0XG4vLyAgIFsgbm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IF1cbkBtaXhpbiB1c2VyLXNlbGVjdCgkc2VsZWN0KSB7XG4gICRzZWxlY3Q6IHVucXVvdGUoJHNlbGVjdCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1c2VyLXNlbGVjdCwgJHNlbGVjdCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgLWtodG1sLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBvdGhlciBtaXhpbnMgaW4gdGhpcyBtb2R1bGUuXG4vLyBJdCBpcyB0aGUgb25seSB3YXkgdG8gYWNjZXNzIHByZWZpeCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3BlYy5cbi8vIERldmlhdGVzIGZyb20gY2Fub25pY2FsIENvbXBhc3MgaW1wbGVtZW50YXRpb24gYnkgZHJvcHBpbmcgc3VwcG9ydCBmb3Jcbi8vIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBGbGV4Ym94IHNwZWMuXG4vL1xuLy8gYCRwcm9wZXJ0aWVzYDogbWFwIG9mIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRoYXQgc2hvdWxkIGJlIHByZWZpeGVkXG5AbWl4aW4gZmxleGJveCgkcHJvcGVydGllcykge1xuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJHByb3AgPT0gZGlzcGxheSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3AsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBWYWx1ZXMgZm9yICRkaXNwbGF5IGFyZTogZmxleCAoZGVmYXVsdCksIGlubGluZS1mbGV4XG5AbWl4aW4gZGlzcGxheS1mbGV4KCRkaXNwbGF5OiBmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGRpc3BsYXk6ICRkaXNwbGF5KSk7XG59XG5cbi8vIFZhbHVlczogcm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb24pKTtcbn1cblxuLy8gVmFsdWVzOiBub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlXG5AbWl4aW4gZmxleC13cmFwKCR3cmFwKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtd3JhcDogJHdyYXApKTtcbn1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWRpcmVjdGlvbiBhbmQgZmxleC13cmFwLlxuQG1peGluIGZsZXgtZmxvdygkZmxvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWZsb3c6ICRmbG93KSk7XG59XG5cbi8vIEFjY2VwdHMgYW4gaW50ZWdlclxuQG1peGluIG9yZGVyKCRvcmRlcikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChvcmRlcjogJG9yZGVyKSk7XG59XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1ncm93LCBmbGV4LXNocmluayBhbmQgb3B0aW9uYWxseSBmbGV4LWJhc2lzLlxuLy8gU3BhY2Ugc2VwYXJhdGVkLCBpbiB0aGF0IG9yZGVyLlxuQG1peGluIGZsZXgoJGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleDogJGZsZXgpKTtcbn1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LWdyb3coJGZsZXgtZ3Jvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWdyb3c6ICRmbGV4LWdyb3cpKTtcbn1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LXNocmluaygkZmxleC1zaHJpbmspIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1zaHJpbms6ICRmbGV4LXNocmluaykpO1xufVxuXG4vLyBBY2NlcHRzIGFueSBsZWdhbCB2YWx1ZSBmb3IgdGhlIHdpZHRoIHByb3BlcnR5LlxuQG1peGluIGZsZXgtYmFzaXMoJGZsZXgtYmFzaXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1iYXNpczogJGZsZXgtYmFzaXMpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCRqdXN0aWZ5LWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoanVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50KSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24taXRlbXMoJGFsaWduLWl0ZW1zKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWl0ZW1zOiAkYWxpZ24taXRlbXMpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tc2VsZigkYWxpZ24tc2VsZikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1zZWxmOiAkYWxpZ24tc2VsZikpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tY29udGVudCgkYWxpZ24tY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1jb250ZW50OiAkYWxpZ24tY29udGVudCkpO1xufVxuIiwiLy8gQm91cmJvbiA0LjIuNlxuLy8gaHR0cDovL2JvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDExLTIwMTUgdGhvdWdodGJvdCwgaW5jLlxuLy8gTUlUIExpY2Vuc2VcblxuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnMtZmFsc3lcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxpZ2h0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLW51bWJlclwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLXJlbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90aW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbW9kdWxhci1zY2FsZVwiO1xuXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9kaXJlY3Rpb25hbC12YWx1ZXNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItYW5nbGUtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zaGFwZS1zaXplLXN0cmlwcGVyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zdHItdG8tbnVtXCI7XG5cbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMva2V5ZnJhbWVzXCI7XG5AaW1wb3J0IFwiY3NzMy9saW5lYXItZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtZGVjb3JhdGlvblwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1zdHlsZVwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LXN0YWNrc1wiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XG5AaW1wb3J0IFwiYWRkb25zL3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcblxuQGltcG9ydCBcImJvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZ1wiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2xvYmFsIHZhcmlhYmxlcyB0byBlbmFibGUgb3IgZGlzYWJsZSB2ZW5kb3IgcHJlZml4ZXNcblxuJHByZWZpeC1mb3Itd2Via2l0OiAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbW96aWxsYTogICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itb3BlcmE6ICAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itc3BlYzogICAgICB0cnVlICFkZWZhdWx0O1xuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIGdsb2JhbCBzZXR0aW5nIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBgJGFzc2V0LXBpcGVsaW5lYCB2YXJpYWJsZSBmb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBpdC5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBmdW5jdGlvbiBhc3NpZ24taW5wdXRzKCRpbnB1dHMsICRwc2V1ZG86IG51bGwpIHtcbiAgJGxpc3Q6ICgpO1xuXG4gIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcbi8vLyAgIEEgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIGZvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgY29udGFpbnMoJGxpc3QsICR2YWx1ZSlcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmIHR5cGUtb2YoaW5kZXgoJGxpc3QsICR2YWx1ZSkpICE9IFwibnVtYmVyXCIge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGRvZXMgbm90IGNvbnRhaW5zIGEgdmFsdWUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMtZmFsc3koJGxpc3QpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBub3QgJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcblxuQGZ1bmN0aW9uIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcbiAgICAgICBvciBpbmRleChhdXRvIGluaGVyaXQgaW5pdGlhbCAwLCAkdmFsdWUpXG4gICAgICAgb3IgKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiIGFuZCBub3QodW5pdGxlc3MoJHZhbHVlKSkpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3JvYm90cy50aG91Z2h0Ym90LmNvbS9jbG9zZXItbG9vay1jb2xvci1saWdodG5lc3Ncbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3IgKEhleCl9ICRjb2xvclxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBpcy1saWdodCgkY29sb3IpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gaXMtbGlnaHQoJGhleC1jb2xvcikge1xuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ibHVlOiBibHVlKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XG5cbiAgQHJldHVybiAkLWxvY2FsLWxpZ2h0bmVzcyA+IDAuNjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG5cbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEByZXR1cm4gY29udGFpbnMoXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCIgMCAxIDIgMyA0IDUgNiA3IDggOSwgJHZhbHVlKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1Mgc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxuXG5AZnVuY3Rpb24gaXMtc2l6ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpcy1sZW5ndGgoJHZhbHVlKVxuICAgICAgICAgIG9yIGNvbnRhaW5zKFwiZmlsbFwiIFwiZml0LWNvbnRlbnRcIiBcIm1pbi1jb250ZW50XCIgXCJtYXgtY29udGVudFwiLCAkdmFsdWUpO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIGVtKDEyKSB3aGVuIHRoZSBwYXJlbnQgaXMgMTZweFxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcblxuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRlbS1iYXNlKSB7XG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIHJlbXNcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxuXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuXG4gICRiYXNlOiAkZW0tYmFzZTtcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgJGRpbWVuc2lvbjogMTA7XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXIgKFVuaXRsZXNzKX1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiB3aGl0ZSB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNhOGRmYzk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcbi8vIEV4YW1wbGU6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoKHRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmQpLCBtb3opIC0+IC1tb3otdHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xuICAkbmV3LXByb3BzOiAoKTtcblxuICBAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuICAgICRuZXctcHJvcHM6IGFwcGVuZCgkbmV3LXByb3BzLCB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3IpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRuZXctcHJvcHM7XG59XG5cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcbiAgICBAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcHJvcDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XG4gIEBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMSB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAzIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkc2hvcnRoYW5kO1xuICB9XG59XG4iLCIvLyBTY2FsaW5nIFZhcmlhYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG4kbW9kdWxhci1zY2FsZS1yYXRpbzogJHBlcmZlY3QtZm91cnRoICFkZWZhdWx0O1xuJG1vZHVsYXItc2NhbGUtYmFzZTogZW0oJGVtLWJhc2UpICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWU6ICRtb2R1bGFyLXNjYWxlLWJhc2UsICRyYXRpbzogJG1vZHVsYXItc2NhbGUtcmF0aW8pIHtcbiAgJHYxOiBudGgoJHZhbHVlLCAxKTtcbiAgJHYyOiBudGgoJHZhbHVlLCBsZW5ndGgoJHZhbHVlKSk7XG4gICR2YWx1ZTogJHYxO1xuXG4gIC8vIHNjYWxlICR2MiB0byBqdXN0IGFib3ZlICR2MVxuICBAd2hpbGUgJHYyID4gJHYxIHtcbiAgICAkdjI6ICgkdjIgLyAkcmF0aW8pOyAvLyB3aWxsIGJlIG9mZi1ieS0xXG4gIH1cbiAgQHdoaWxlICR2MiA8ICR2MSB7XG4gICAgJHYyOiAoJHYyICogJHJhdGlvKTsgLy8gd2lsbCBmaXggb2ZmLWJ5LTFcbiAgfVxuXG4gIC8vIGNoZWNrIEFGVEVSIHNjYWxpbmcgJHYyIHRvIHByZXZlbnQgZG91YmxlLWNvdW50aW5nIGNvcm5lci1jYXNlXG4gICRkb3VibGUtc3RyYW5kZWQ6ICR2MiA+ICR2MTtcblxuICBAaWYgJGluY3JlbWVudCA+IDAge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGluY3JlbWVudCB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAqICRyYXRpbykgPiAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyICogJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgKiAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGluY3JlbWVudCA8IDAge1xuICAgIC8vIGFkanVzdCAkdjIgdG8ganVzdCBiZWxvdyAkdjFcbiAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCB7XG4gICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgIH1cblxuICAgIEBmb3IgJGkgZnJvbSAkaW5jcmVtZW50IHRocm91Z2ggLTEge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgLyAkcmF0aW8pIDwgJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxIC8gJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHN0ci10by1udW0gZm4uXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX2NvbnZlcnQtdW5pdHMoJG51bWJlciwgJHVuaXQpIHtcbiAgJHN0cmluZ3M6IFwicHhcIiwgXCJjbVwiLCBcIm1tXCIsIFwiJVwiLCBcImNoXCIsIFwicGljYVwiLCBcImluXCIsIFwiZW1cIiwgXCJyZW1cIiwgXCJwdFwiLCBcInBjXCIsIFwiZXhcIiwgXCJ2d1wiLCBcInZoXCIsIFwidm1pblwiLCBcInZtYXhcIiwgXCJkZWdcIiwgXCJyYWRcIiwgXCJncmFkXCIsIFwidHVyblwiO1xuICAkdW5pdHM6ICAgMXB4LCAxY20sIDFtbSwgMSUsIDFjaCwgMXBpY2EsIDFpbiwgMWVtLCAxcmVtLCAxcHQsIDFwYywgMWV4LCAxdncsIDF2aCwgMXZtaW4sIDF2bWF4LCAxZGVnLCAxcmFkLCAxZ3JhZCwgMXR1cm47XG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcblxuICBAaWYgbm90ICRpbmRleCB7XG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG51bWJlcikgIT0gXCJudW1iZXJcIiB7XG4gICAgQHdhcm4gXCJgI3skbnVtYmVyfSBpcyBub3QgYSBudW1iZXJgXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXJlY3Rpb25hbC1wcm9wZXJ0eSBtaXhpbnMgYXJlIHNob3J0aGFuZHMgZm9yIHdyaXRpbmcgcHJvcGVydGllcyBsaWtlIHRoZSBmb2xsb3dpbmdcbi8vL1xuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAwIDEwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDA7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG5cbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cbn1cbiIsIi8vIFVzZWQgZm9yIGNyZWF0aW5nIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBmb250cyB1c2luZyBAZm9udC1mYWNlXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXG5cbkBmdW5jdGlvbiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIHVybDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJGFzc2V0LXBpcGVsaW5lLFxuICAkZmlsZS1mb3JtYXRzLFxuICAkZm9udC11cmwpIHtcblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxuICApO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xuICAgICAgJGZpbGUtcGF0aDogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XG5cbiAgICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHNyYztcbn1cbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IGxpbmVhcilcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAcmV0dXJuICRncmFkaWVudC1wb3NpdGlvbnM7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KSB7XG4gICRvZmZzZXQ6IG51bGw7XG4gICR1bml0LXNob3J0OiAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAyLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHVuaXQtbG9uZzogICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gIEBpZiAoJHVuaXQtbG9uZyA9PSBcImdyYWRcIikgb3JcbiAgICAgICgkdW5pdC1sb25nID09IFwidHVyblwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xuICB9XG5cbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXG4gICAgICAgICAgICgkdW5pdC1zaG9ydCA9PSBcInJhZFwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIiwgLTkwICogMywgMS42cmFkKTtcbiAgfVxuXG4gIEBpZiAkb2Zmc2V0IHtcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XG4gICRoYXMtc2luZ2xlLXBvc2l0aW9uOiB1bnF1b3RlKF9wb3NpdGlvbi1mbGlwcGVyKCRmaXJzdC12YWwpICsgXCJcIik7XG4gICRoYXMtYW5nbGU6IGlzLW51bWJlcihzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgMSkpO1xuXG4gIEBpZiAkaGFzLW11bHRpcGxlLXZhbHMge1xuICAgICRncmFkaWVudHM6IF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtc2luZ2xlLXBvc2l0aW9uICE9IFwiXCIge1xuICAgICRwb3M6IHVucXVvdGUoJGhhcy1zaW5nbGUtcG9zaXRpb24gKyBcIlwiKTtcblxuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtYW5nbGUge1xuICAgIC8vIFJvdGF0ZSBkZWdyZWUgZm9yIHdlYmtpdFxuICAgICRncmFkaWVudHM6IF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCk7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAcmV0dXJuICRncmFkaWVudHM7XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpIHtcbiAgJHR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHNwZWM6IG51bGw7XG4gICRkZWdyZWU6IG51bGw7XG4gICRzaWRlOiBudWxsO1xuICAkY29ybmVyOiBudWxsO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XG4gIC8vIFBhcnNlIFNpZGUgYW5kIGNvcm5lciBwb3NpdGlvbnNcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XG4gICAgICAkc2lkZTogbnRoKCRwb3MsIDIpO1xuXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxuICAgICAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHsgLy8gZWcuIHRvIHRvcCBsZWZ0XG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcbiAgICAgICRjb3JuZXI6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgfVxuXG4gICAgQGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgICRzcGVjOiB0byAkc2lkZSAkY29ybmVyO1xuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XG4gICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRkZWdyZWU6ICRwb3M7XG4gICAgICAkc3BlYzogdG8gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRkZWdyZWU6IC0yNzAgLSAkcG9zOyAvL3JvdGF0ZSB0aGUgZ3JhZGllbnQgb3Bwb3NpdGUgZnJvbSBzcGVjXG4gICAgICAkc3BlYzogJHBvcztcbiAgICB9XG4gIH1cbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xuICBAcmV0dXJuICRkZWdyZWUgJHNwZWM7XG59XG5cbkBmdW5jdGlvbiBfcG9zaXRpb24tZmxpcHBlcigkcG9zKSB7XG4gIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcbiAgJHZhbC0xOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGhhcy1tdWx0aXBsZS12YWxzIC0gMSk7XG4gICR2YWwtMjogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRoYXMtbXVsdGlwbGUtdmFscyArIDEsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAkdmFsLTM6IG51bGw7XG4gICRoYXMtdmFsLTM6IHN0ci1pbmRleCgkdmFsLTIsIFwiIFwiKTtcblxuICBAaWYgJGhhcy12YWwtMyB7XG4gICAgJHZhbC0zOiBzdHItc2xpY2UoJHZhbC0yLCAkaGFzLXZhbC0zICsgMSwgc3RyLWxlbmd0aCgkdmFsLTIpKTtcbiAgICAkdmFsLTI6IHN0ci1zbGljZSgkdmFsLTIsIDEsICRoYXMtdmFsLTMgLSAxKTtcbiAgfVxuXG4gICRwb3M6IF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMSkgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0yKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTMpO1xuICAkcG9zOiB1bnF1b3RlKCRwb3MgKyBcIlwiKTtcblxuICAvLyBVc2Ugb2xkIHNwZWMgZm9yIHdlYmtpdFxuICBAaWYgJHZhbC0xID09IFwidG9cIiB7XG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBjb2RlIHVwIHRvIHNwZWNcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xuICAgICAgICAgICAgJGcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcbiAgICAkc3BlYzogXCIjeyRzcGVjfSxcIjtcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRpcy1zcGVjLXN5bnRheDogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiYXRcIik7XG5cbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XG4gICAgJGtleXdvcmQ6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaXMtc3BlYy1zeW50YXggLSAyKTtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRpcy1zcGVjLXN5bnRheCA9PSAxIHtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmIHN0ci1pbmRleCgkaW1hZ2UsIFwiY292ZXJcIikgb3Igc3RyLWluZGV4KCRpbWFnZSwgXCJjb250YWluXCIpIHtcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XG4gIC8vIE1hdHJpY2VzXG4gICRzdHJpbmdzOiBcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIjtcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xuXG4gIC8vIFJlc3VsdFxuICAkcmVzdWx0OiAwO1xuICAkZGl2aWRlcjogMDtcbiAgJG1pbnVzOiBmYWxzZTtcblxuICAvLyBMb29waW5nIHRocm91Z2ggYWxsIGNoYXJhY3RlcnNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCRzdHJpbmcpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcbiAgICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkY2hhcmFjdGVyKTtcblxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcbiAgICAgICRtaW51czogdHJ1ZTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkY2hhcmFjdGVyID09IFwiLlwiIHtcbiAgICAgICRkaXZpZGVyOiAxO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xuICAgICAgICBAcmV0dXJuIF9jb252ZXJ0LXVuaXRzKCRyZXN1bHQsIHN0ci1zbGljZSgkc3RyaW5nLCAkaSkpO1xuICAgICAgfVxuXG4gICAgICAkbnVtYmVyOiBudGgoJG51bWJlcnMsICRpbmRleCk7XG5cbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcbiAgICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xuICAgICAgICAkbnVtYmVyOiAkbnVtYmVyIC8gJGRpdmlkZXI7XG4gICAgICB9XG5cbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAkbnVtYmVyO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbn1cbiIsIi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jdGhlLWFuaW1hdGlvbi1uYW1lLXByb3BlcnR5LVxuLy8gRWFjaCBvZiB0aGVzZSBtaXhpbnMgc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMgb2YgdmFsdWVzLCB3aGljaCBhbGxvd3MgZGlmZmVyZW50IHRyYW5zaXRpb25zIGZvciBpbmRpdmlkdWFsIHByb3BlcnRpZXMgdG8gYmUgZGVzY3JpYmVkIGluIGEgc2luZ2xlIHN0eWxlIHJ1bGUuIEVhY2ggdmFsdWUgaW4gdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIHZhbHVlIGF0IHRoYXQgc2FtZSBwb3NpdGlvbiBpbiB0aGUgb3RoZXIgcHJvcGVydGllcy5cblxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUoJG5hbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcbiAgLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRpcmVjdGlvbigkZGlyZWN0aW9ucy4uLikge1xuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XG4gIC8vIHJ1bm5pbmcgfCBwYXVzZWRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWZpbGwtbW9kZSgkbW9kZXMuLi4pIHtcbiAgLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCJAbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgd2Via2l0IHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmRzIHVzaW5nIHNob3J0aGFuZFxuLy8gbm90YXRpb24uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kcy4uLikge1xuICAkd2Via2l0LWJhY2tncm91bmRzOiAoKTtcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xuXG4gIEBlYWNoICRiYWNrZ3JvdW5kIGluICRiYWNrZ3JvdW5kcyB7XG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkYmFja2dyb3VuZC10eXBlOiB0eXBlLW9mKCRiYWNrZ3JvdW5kKTtcblxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcblxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XG4gICAgJHNwZWMtaW1hZ2U6ICgpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRpbWFnZSwgMSwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAkaW1hZ2U7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkd2Via2l0LWltYWdlczogYXBwZW5kKCR3ZWJraXQtaW1hZ2VzLCAkd2Via2l0LWltYWdlLCBjb21tYSk7XG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcbn1cbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcbiAgJHNwZWMtYm9yZGVyczogKCk7XG5cbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgJHdlYmtpdC1ib3JkZXI6ICgpO1xuICAgICRzcGVjLWJvcmRlcjogKCk7XG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xuXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xuICAgICRzcGVjLWJvcmRlcnM6ICAgYXBwZW5kKCRzcGVjLWJvcmRlcnMsICAgJHNwZWMtYm9yZGVyLCAgIGNvbW1hKTtcbiAgfVxuXG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiAkd2Via2l0LWJvcmRlcnM7XG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XG4iLCJAbWl4aW4gY2FsYygkcHJvcGVydHksICR2YWx1ZSkge1xuICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtY2FsYygjeyR2YWx1ZX0pO1xuICAjeyRwcm9wZXJ0eX06IGNhbGMoI3skdmFsdWV9KTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1ucywgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1jb3VudCgkaW50OiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuICAvLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUoJGFyZykge1xuICAvLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCAoJHdpZHRoOiBub25lKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tc3BhbigkYXJnOiBub25lKSB7XG4gIC8vIG5vbmUgfHwgYWxsXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tb3otYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcbiAgZGlzcGxheTogYm94O1xufVxuXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50OiBpbmxpbmUtYXhpcykge1xuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxqdXN0aWZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50OyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4OiAkdmFsdWU7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXG5cbi8vIDIwMDkgLSBkaXNwbGF5IChib3ggfCBpbmxpbmUtYm94KVxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXG5AbWl4aW4gZGlzcGxheSgkdmFsdWUpIHtcbi8vIGZsZXggfCBpbmxpbmUtZmxleFxuICBAaWYgJHZhbHVlID09IFwiZmxleFwiIHtcbiAgICAvLyAyMDA5XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogYm94O1xuXG4gICAgLy8gMjAxMlxuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfSBAZWxzZSB7XG4gICAgZGlzcGxheTogJHZhbHVlO1xuICB9XG59XG5cbi8vIDIwMDkgLSBib3gtZmxleCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcbi8vIDIwMTIgLSBmbGV4IChpbnRlZ2VyIGludGVnZXIgd2lkdGgpXG5AbWl4aW4gZmxleCgkdmFsdWUpIHtcblxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmllbnQgKCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMpXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICRkaXJlY3Rpb246IG5vcm1hbDtcblxuICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiY29sdW1uLXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XG4gIC8vIEFsdCB2YWx1ZXNcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSB3cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH1cblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXgtb3JkZXIgKGludGVnZXIpXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50O1xufVxuXG4vLyAyMDEyIC0gZmxleC1ncm93IChudW1iZXIpXG5AbWl4aW4gZmxleC1ncm93KCRudW1iZXI6IDApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1ncm93LCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcbn1cblxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXNocmluaywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1iYXNpcywgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogJHdpZHRoO1xufVxuXG4vLyAyMDA5IC0gYm94LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTEgLSBmbGV4LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTIgLSBqdXN0aWZ5LWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQpXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCR2YWx1ZTogZmxleC1zdGFydCkge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1pdGVtcyAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtYWxpZ246ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLXNlbGYsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogJHZhbHVlLTIwMTE7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWxpbmUtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgZGlzdHJpYnV0ZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xufVxuIiwiQG1peGluIGZvbnQtZmFjZShcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Zykge1xuXG4gICRmb250LXVybC1wcmVmaXg6IGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSk7XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBzcmM6IGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAgICAgJGZvbnQtZmFtaWx5LFxuICAgICAgJGZpbGUtcGF0aCxcbiAgICAgICRhc3NldC1waXBlbGluZSxcbiAgICAgICRmaWxlLWZvcm1hdHMsXG4gICAgICAkZm9udC11cmwtcHJlZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQG1peGluIGZvbnQtZmVhdHVyZS1zZXR0aW5ncygkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZm9udC1mZWF0dXJlLXNldHRpbmdzLCAkc2V0dGluZ3MsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IHJvdW5kKCRyYXRpbyAqIDk2ZHBpKSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xuICAvLyBub25lIHwgbWFudWFsIHwgYXV0b1xuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyaW5nICgkbW9kZTphdXRvKSB7XG5cbiAgQGlmICgkbW9kZSA9PSBjcmlzcC1lZGdlcykge1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IG5lYXJlc3QtbmVpZ2hib3I7IC8vIElFOCtcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlcztcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBpbWFnZS1yZW5kZXJpbmc6ICRtb2RlO1xuICB9XG59XG4iLCIvLyBBZGRzIGtleWZyYW1lcyBibG9ja3MgZm9yIHN1cHBvcnRlZCBwcmVmaXhlcywgcmVtb3ZpbmcgcmVkdW5kYW50IHByZWZpeGVzIGluIHRoZSBibG9jaydzIGNvbnRlbnRcbkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE6ICAgJHByZWZpeC1mb3ItbW96aWxsYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0OiAkcHJlZml4LWZvci1taWNyb3NvZnQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM6ICAgICAgJHByZWZpeC1mb3Itc3BlYztcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itd2Via2l0OiB0cnVlICFnbG9iYWw7XG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtbW96LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6ICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdCAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhICAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMgICAgICAhZ2xvYmFsO1xuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZzEsICRnMjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcbiAgLy8gRGV0ZWN0IHdoYXQgdHlwZSBvZiB2YWx1ZSBleGlzdHMgaW4gJHBvc1xuICAkcG9zLXR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHBvcy1zcGVjOiBudWxsO1xuICAkcG9zLWRlZ3JlZTogbnVsbDtcblxuICAvLyBJZiAkcG9zIGlzIG1pc3NpbmcgZnJvbSBtaXhpbiwgcmVhc3NpZ24gdmFycyBhbmQgYWRkIGRlZmF1bHQgcG9zaXRpb25cbiAgQGlmICgkcG9zLXR5cGUgPT0gY29sb3IpIG9yIChudGgoJHBvcywgMSkgPT0gXCJ0cmFuc3BhcmVudFwiKSAge1xuICAgICRnMTA6ICRnOTsgJGc5OiAkZzg7ICRnODogJGc3OyAkZzc6ICRnNjsgJGc2OiAkZzU7XG4gICAgJGc1OiAkZzQ7ICRnNDogJGczOyAkZzM6ICRnMjsgJGcyOiAkZzE7ICRnMTogJHBvcztcbiAgICAkcG9zOiBudWxsO1xuICB9XG5cbiAgQGlmICRwb3Mge1xuICAgICRwb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKTtcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xuICAgICRwb3Mtc3BlYzogICBudGgoJHBvc2l0aW9ucywgMik7XG4gIH1cblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRnMSwgMSk7XG5cbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCgjeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XG59XG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZSwgJGRlcHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCR2YWx1ZTogNTAlIDUwJSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXG5AbWl4aW4gcmFkaWFsLWdyYWRpZW50KCRnMSwgJGcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRnMTogIG50aCgkZGF0YSwgMSk7XG4gICRnMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LCBcIiwgbnVsbCk7XG4gICRwb3M6ICAgICAgICBpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKTtcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gXCIgXCIpIGFuZCAoJHBvcyA9PSBudWxsKSwgXCIjeyRzaGFwZS1zaXplLXNwZWN9LCBcIiwgXCIjeyRzaGFwZS1zaXplLXNwZWN9IFwiKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCh1bnF1b3RlKCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJyYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBPdXRwdXRzIHRoZSBzcGVjIGFuZCBwcmVmaXhlZCB2ZXJzaW9ucyBvZiB0aGUgYDo6c2VsZWN0aW9uYCBwc2V1ZG8tZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2x9ICRjdXJyZW50LXNlbGVjdG9yIFtmYWxzZV1cclxuLy8vICAgSWYgc2V0IHRvIGB0cnVlYCwgaXQgdGFrZXMgdGhlIGN1cnJlbnQgZWxlbWVudCBpbnRvIGNvbnNpZGVyYXRpb24uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzZWxlY3Rpb24odHJ1ZSkge1xyXG4vLy8gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgICB9XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50OjotbW96LXNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLmVsZW1lbnQ6OnNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIHNlbGVjdGlvbigkY3VycmVudC1zZWxlY3RvcjogZmFsc2UpIHtcclxuICBAaWYgJGN1cnJlbnQtc2VsZWN0b3Ige1xyXG4gICAgJjo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICAmOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIDo6LW1vei1zZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICA6OnNlbGVjdGlvbiB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJAbWl4aW4gdGV4dC1kZWNvcmF0aW9uKCR2YWx1ZSkge1xuLy8gPHRleHQtZGVjb3JhdGlvbi1saW5lPiB8fCA8dGV4dC1kZWNvcmF0aW9uLXN0eWxlPiB8fCA8dGV4dC1kZWNvcmF0aW9uLWNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24sICR2YWx1ZSwgbW96KTtcbn1cblxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1saW5lKCRsaW5lOiBub25lKSB7XG4vLyBub25lIHx8IHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcbi8vIHNvbGlkIHx8IGRvdWJsZSB8fCBkb3R0ZWQgfHwgZGFzaGVkIHx8IHdhdnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLXN0eWxlLCAkc3R5bGUsIG1veiB3ZWJraXQpO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWNvbG9yKCRjb2xvcjogY3VycmVudENvbG9yKSB7XG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tY29sb3IsICRjb2xvciwgbW96KTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4gIC8vIG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sICRwcm9wZXJ0eSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbigkYXhlczogNTAlKSB7XG4gIC8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4gIC8vIHktYXhpcyAtIHRvcCAgfCBjZW50ZXIgfCBib3R0b20gfCBsZW5ndGggfCAlXG4gIC8vIHotYXhpcyAtICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLW9yaWdpbiwgJGF4ZXMsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24oJHByb3BlcnRpZXMuLi4pIHtcbiAgLy8gRml4IGZvciB2ZW5kb3ItcHJlZml4IHRyYW5zZm9ybSBwcm9wZXJ0eVxuICAkbmVlZHMtcHJlZml4ZXM6IGZhbHNlO1xuICAkd2Via2l0OiAoKTtcbiAgJG1vejogKCk7XG4gICRzcGVjOiAoKTtcblxuICAvLyBDcmVhdGUgbGlzdHMgZm9yIHZlbmRvci1wcmVmaXhlZCB0cmFuc2Zvcm1cbiAgQGVhY2ggJGxpc3QgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiBudGgoJGxpc3QsIDEpID09IFwidHJhbnNmb3JtXCIge1xuICAgICAgJG5lZWRzLXByZWZpeGVzOiB0cnVlO1xuICAgICAgJGxpc3QxOiAtd2Via2l0LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MjogLW1vei10cmFuc2Zvcm07XG4gICAgICAkbGlzdDM6ICgpO1xuXG4gICAgICBAZWFjaCAkdmFyIGluICRsaXN0IHtcbiAgICAgICAgJGxpc3QzOiBqb2luKCRsaXN0MywgJHZhcik7XG5cbiAgICAgICAgQGlmICR2YXIgIT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAgICAgJGxpc3QxOiBqb2luKCRsaXN0MSwgJHZhcik7XG4gICAgICAgICAgJGxpc3QyOiBqb2luKCRsaXN0MiwgJHZhcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0MSk7XG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QyKTtcbiAgICAgICRzcGVjOiAgIGFwcGVuZCgkc3BlYywgICAkbGlzdDMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdlYmtpdDogYXBwZW5kKCR3ZWJraXQsICRsaXN0LCBjb21tYSk7XG4gICAgICAkbW96OiAgICBhcHBlbmQoJG1veiwgICAgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRzcGVjOiAgIGFwcGVuZCgkc3BlYywgICAkbGlzdCwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkbmVlZHMtcHJlZml4ZXMge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHdlYmtpdDtcbiAgICAgICAtbW96LXRyYW5zaXRpb246ICRtb3o7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAkc3BlYztcbiAgfSBAZWxzZSB7XG4gICAgQGlmIGxlbmd0aCgkcHJvcGVydGllcykgPj0gMSB7XG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcm9wZXJ0aWVzOiBhbGwgMC4xNXMgZWFzZS1vdXQgMHM7XG4gICAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkcHJvcGVydGllcywgd2Via2l0IG1veiBzcGVjKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkoJHByb3BlcnRpZXMuLi4pIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcbiAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIm1velwiKTtcbiAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWR1cmF0aW9uLCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlOiBub25lKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1jb2xvcigjYTYwYjU1ICM3NmNkOWMgbnVsbCAjZThhZTFhKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNlOGFlMWE7XG4vLy8gICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzc2Y2Q5Yztcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1jb2xvcmBcblxuQG1peGluIGJvcmRlci1jb2xvcigkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIGNvbG9yLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItcmFkaXVzYCBvbiBib3RoIGNvcm5lcnMgb24gdGhlIHNpZGUgb2YgYSBib3guXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHJhZGlpXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudC1vbmUge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItdG9wLXJhZGl1cyg1cHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItbGVmdC1yYWRpdXMoM3B4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQtdHdvIHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuLy8vICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItcmFkaXVzYFxuXG5AbWl4aW4gYm9yZGVyLXRvcC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLWxlZnQtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRyYWRpaTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1zdHlsZWAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRhc2hlZCBudWxsIHNvbGlkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRhc2hlZDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1zdHlsZWBcblxuQG1peGluIGJvcmRlci1zdHlsZSgkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItd2lkdGhgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci13aWR0aCgxZW0gbnVsbCAyMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjBweDtcbi8vLyAgICAgYm9yZGVyLXRvcC13aWR0aDogMWVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXdpZHRoYFxuXG5AbWl4aW4gYm9yZGVyLXdpZHRoKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgd2lkdGgsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCBidXR0b25zLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC1idXR0b25zfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC1idXR0b25zfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWFjdGl2ZX0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcbi8vLyAgIGJ1dHRvbjpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgYnV0dG9uOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3Rcbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcblxuJGJ1dHRvbnMtbGlzdDogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInJlc2V0XCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic3VibWl0XCJdJztcblxuJGFsbC1idXR0b25zOiAgICAgICAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0KTtcbiRhbGwtYnV0dG9ucy1hY3RpdmU6IGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtYnV0dG9ucy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgZm9jdXMpO1xuJGFsbC1idXR0b25zLWhvdmVyOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBob3Zlcik7XG5cbiRhbGwtYnV0dG9uLWlucHV0czogICAgICAgICRhbGwtYnV0dG9ucztcbiRhbGwtYnV0dG9uLWlucHV0cy1hY3RpdmU6ICRhbGwtYnV0dG9ucy1hY3RpdmU7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtZm9jdXM6ICAkYWxsLWJ1dHRvbnMtZm9jdXM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtaG92ZXI6ICAkYWxsLWJ1dHRvbnMtaG92ZXI7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBpbmNsdWRlIGEgY2xlYXJmaXggZm9yIGNvbnRhaW5pbmcgZmxvYXRzLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL2Nzc21vam8uY29tL2xhdGVzdF9uZXdfY2xlYXJmaXhfc29fZmFyL1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJ1bmNhdGVzIHRleHQgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdG8gcmVwcmVzZW50IG92ZXJmbG93LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMTAwJV1cbi8vLyAgIE1heC13aWR0aCBmb3IgdGhlIHN0cmluZyB0byByZXNwZWN0IGJlZm9yZSBiZWluZyB0cnVuY2F0ZWRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBlbGxpcHNpcztcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuLy8vICAgICBtYXgtd2lkdGg6IDEwMCU7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcbi8vLyAgIH1cblxuQG1peGluIGVsbGlwc2lzKCR3aWR0aDogMTAwJSkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW9yZ2lhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRnZW9yZ2lhOiBcIkdlb3JnaWFcIiwgXCJDYW1icmlhXCIsIFwiVGltZXMgTmV3IFJvbWFuXCIsIFwiVGltZXNcIiwgc2VyaWY7XG5cbi8vLyBIZWx2ZXRpY2EgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIlJvYm90b1wiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBMdWNpZGEgR3JhbmRlIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRsdWNpZGEtZ3JhbmRlOiBcIkx1Y2lkYSBHcmFuZGVcIiwgXCJUYWhvbWFcIiwgXCJWZXJkYW5hXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLy8vIE1vbm9zcGFjZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbW9ub3NwYWNlOiBcIkJpdHN0cmVhbSBWZXJhIFNhbnMgTW9ub1wiLCBcIkNvbnNvbGFzXCIsIFwiQ291cmllclwiLCBtb25vc3BhY2U7XG5cbi8vLyBWZXJkYW5hIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR2ZXJkYW5hOiBcIlZlcmRhbmFcIiwgXCJHZW5ldmFcIiwgc2Fucy1zZXJpZjtcbiIsIi8vLyBIaWRlcyB0aGUgdGV4dCBpbiBhbiBlbGVtZW50LCBjb21tb25seSB1c2VkIHRvIHNob3cgYW4gaW1hZ2UuIFNvbWUgZWxlbWVudHMgd2lsbCBuZWVkIGJsb2NrLWxldmVsIHN0eWxlcyBhcHBsaWVkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3plbGRtYW4uY29tLzIwMTIvMDMvMDEvcmVwbGFjaW5nLXRoZS05OTk5cHgtaGFjay1uZXctaW1hZ2UtcmVwbGFjZW1lbnRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG92ZXJmbG93OiBoaWRkZW47XG4vLy8gICAgIHRleHQtaW5kZW50OiAxMDElO1xuLy8vICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGhlaWdodCBhcmd1bWVudCBpbiB2NS4wLjBcblxuQG1peGluIGhpZGUtdGV4dCgkaGVpZ2h0OiBudWxsKSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtaW5kZW50OiAxMDElO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICBAd2FybiBcIlRoZSBgaGlkZS10ZXh0YCBtaXhpbiBoYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIHJlcXVpcmVzIGEgaGVpZ2h0LiBUaGUgaGVpZ2h0IGFyZ3VtZW50IHdpbGwgbm8gbG9uZ2VyIGJlIGFjY2VwdGVkIGluIHY1LjAuMFwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBtYXJnaW5gIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDEwcHggM2VtIDIwdmgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAzZW07XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAyMHZoO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBtYXJnaW5gXG5cbkBtaXhpbiBtYXJnaW4oJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkobWFyZ2luLCBmYWxzZSwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgcGFkZGluZ2Agb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkZGluZygxMnZoIG51bGwgMTBweCA1JSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuLy8vICAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYHBhZGRpbmdgXG5cbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KHBhZGRpbmcsIGZhbHNlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3Igc2V0dGluZyBhbiBlbGVtZW504oCZcyBwb3NpdGlvbi4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtQb3NpdGlvbn0gJHBvc2l0aW9uIFtyZWxhdGl2ZV1cbi8vLyAgIEEgQ1NTIHBvc2l0aW9uIHZhbHVlXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICRjb29yZGluYXRlcyBbbnVsbCBudWxsIG51bGwgbnVsbF1cbi8vLyAgIExpc3Qgb2YgdmFsdWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgNC12YWx1ZSBzeW50YXggZm9yIHRoZSBlZGdlcyBvZiBhIGJveFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCAwIG51bGwgbnVsbCAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbGVmdDogMTBlbTtcbi8vLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8vICAgICB0b3A6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gdW5wYWNrXG5cbkBtaXhpbiBwb3NpdGlvbigkcG9zaXRpb246IHJlbGF0aXZlLCAkY29vcmRpbmF0ZXM6IG51bGwgbnVsbCBudWxsIG51bGwpIHtcbiAgQGlmIHR5cGUtb2YoJHBvc2l0aW9uKSA9PSBsaXN0IHtcbiAgICAkY29vcmRpbmF0ZXM6ICRwb3NpdGlvbjtcbiAgICAkcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgJGNvb3JkaW5hdGVzOiB1bnBhY2soJGNvb3JkaW5hdGVzKTtcblxuICAkb2Zmc2V0czogKFxuICAgIHRvcDogICAgbnRoKCRjb29yZGluYXRlcywgMSksXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcbiAgICBib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpLFxuICAgIGxlZnQ6ICAgbnRoKCRjb29yZGluYXRlcywgNClcbiAgKTtcblxuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xuXG4gIEBlYWNoICRvZmZzZXQsICR2YWx1ZSBpbiAkb2Zmc2V0cyB7XG4gICAgQGlmIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgbWl4aW4gZm9yIGdlbmVyYXRpbmcgdmVuZG9yIHByZWZpeGVzIG9uIG5vbi1zdGFuZGFyZGl6ZWQgcHJvcGVydGllcy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHlcbi8vLyAgIFByb3BlcnR5IHRvIHByZWZpeFxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWVcbi8vLyAgIFZhbHVlIHRvIHVzZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcHJlZml4ZXNcbi8vLyAgIFByZWZpeGVzIHRvIGRlZmluZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1yYWRpdXMsIDEwcHgsIHdlYmtpdCBtcyBzcGVjKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXdlYmtpdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbW96aWxsYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3ItbWljcm9zb2Z0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1vcGVyYVxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itc3BlY1xuXG5AbWl4aW4gcHJlZml4ZXIoJHByb3BlcnR5LCAkdmFsdWUsICRwcmVmaXhlcykge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgQGlmICRwcmVmaXggPT0gd2Via2l0IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci13ZWJraXQge1xuICAgICAgICAtd2Via2l0LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtb3oge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1vemlsbGEge1xuICAgICAgICAtbW96LSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBvIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1vcGVyYSB7XG4gICAgICAgIC1vLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJHByZWZpeCA9PSBzcGVjIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1zcGVjIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgZmFsc2UgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiByZXRpbmEtaW1hZ2UoJGZpbGVuYW1lLCAkYmFja2dyb3VuZC1zaXplLCAkZXh0ZW5zaW9uOiBwbmcsICRyZXRpbmEtZmlsZW5hbWU6IG51bGwsICRyZXRpbmEtc3VmZml4OiBfMngsICRhc3NldC1waXBlbGluZTogJGFzc2V0LXBpcGVsaW5lKSB7XG4gIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICB1cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGhpZHBpIHtcbiAgICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRmaWxlbmFtZX0jeyRyZXRpbmEtc3VmZml4fS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGJhY2tncm91bmQtc2l6ZTogJGJhY2tncm91bmQtc2l6ZTtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU2V0cyB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgb2YgdGhlIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaXplXG4vLy8gICBBIGxpc3Qgb2YgYXQgbW9zdCAyIHNpemUgdmFsdWVzLlxuLy8vXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHZhbHVlIGluIGAkc2l6ZWAgaXQgaXMgdXNlZCBmb3IgYm90aCB3aWR0aCBhbmQgaGVpZ2h0LiBBbGwgdW5pdHMgYXJlIHN1cHBvcnRlZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKDJlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5zZWNvbmQtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoYXV0byAxMGVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IDJlbTtcbi8vLyAgICAgaGVpZ2h0OiAyZW07XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5zZWNvbmQtZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiBhdXRvO1xuLy8vICAgICBoZWlnaHQ6IDEwZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAdG9kbyBSZWZhY3RvciBpbiA1LjAuMCB0byB1c2UgYSBjb21tYS1zZXBhcmF0ZWQgYXJndW1lbnRcblxuQG1peGluIHNpemUoJHZhbHVlKSB7XG4gICR3aWR0aDogbnRoKCR2YWx1ZSwgMSk7XG4gICRoZWlnaHQ6ICR3aWR0aDtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPiAxIHtcbiAgICAkaGVpZ2h0OiBudGgoJHZhbHVlLCAyKTtcbiAgfVxuXG4gIEBpZiBpcy1zaXplKCRoZWlnaHQpIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JGhlaWdodH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkaGVpZ2h0YCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxuXG4gIEBpZiBpcy1zaXplKCR3aWR0aCkge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuIFwiYCN7JHdpZHRofWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCR3aWR0aGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCB0ZXh0LWJhc2VkIGlucHV0cy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtdGV4dC1pbnB1dHN9YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c30sXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtaG92ZXJ9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWFjdGl2ZX0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdLFxuLy8vICAgdGV4dGFyZWEge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06Zm9jdXMsXG4vLy8gICB0ZXh0YXJlYTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpob3Zlcixcbi8vLyAgIHRleHRhcmVhOmhvdmVyIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTphY3RpdmUsXG4vLy8gICB0ZXh0YXJlYTphY3RpdmUge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kdGV4dC1pbnB1dHMtbGlzdDogJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRlXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm1vbnRoXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIm51bWJlclwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGVsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRleHRcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ1cmxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwid2Vla1wiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0Om5vdChbdHlwZV0pJyxcbiAgICAgICAgICAgICAgICAgICAndGV4dGFyZWEnO1xuXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XG4kYWxsLXRleHQtaW5wdXRzLWFjdGl2ZTogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtdGV4dC1pbnB1dHMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBmb2N1cyk7XG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXG4vLy9cbi8vLyBUaW1pbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBkZW1vZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9yZXNvdXJjZXMvZGVtb3MvZWZmZWN0L2Vhc2luZy5odG1sXG4vLy9cbi8vLyBAdHlwZSBjdWJpYy1iZXppZXJcblxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xuJGVhc2Utb3V0LXF1YXJ0OiAgICBjdWJpYy1iZXppZXIoMC4xNjUsICAwLjg0MCwgMC40NDAsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWV4cG86ICAgICBjdWJpYy1iZXppZXIoMC4xOTAsICAxLjAwMCwgMC4yMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xuXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsICAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWFydDogY3ViaWMtYmV6aWVyKDAuNzcwLCAgMC4wMDAsIDAuMTc1LCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXNpbmU6ICBjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKTtcbiRlYXNlLWluLW91dC1leHBvOiAgY3ViaWMtYmV6aWVyKDEuMDAwLCAgMC4wMDAsIDAuMDAwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xuJGVhc2UtaW4tb3V0LWJhY2s6ICBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTtcbiIsIkBtaXhpbiB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgJGhlaWdodDogbnRoKCRzaXplLCBsZW5ndGgoJHNpemUpKTtcbiAgJGZvcmVncm91bmQtY29sb3I6IG50aCgkY29sb3IsIDEpO1xuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgJHdpZHRoOiAkd2lkdGggLyAyO1xuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC11cCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1yaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZC13cmFwYCBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cbi8vLyAgIFZhbHVlIGZvciB0aGUgYHdvcmQtYnJlYWtgIHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAud3JhcHBlciB7XG4vLy8gICAgIEBpbmNsdWRlIHdvcmQtd3JhcChicmVhay13b3JkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbi8vLyAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICB9XG5cbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcbiAgb3ZlcmZsb3ctd3JhcDogJHdyYXA7XG4gIHdvcmQtd3JhcDogJHdyYXA7XG5cbiAgQGlmICR3cmFwID09IGJyZWFrLXdvcmQge1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgfSBAZWxzZSB7XG4gICAgd29yZC1icmVhazogJHdyYXA7XG4gIH1cbn1cbiIsIi8vIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2VcblxuQG1peGluIGlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBAd2FybiBcIlRoZSBpbmxpbmUtYmxvY2sgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG5AbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjAsICR0ZXh0LXNpemU6IGluaGVyaXQsICRwYWRkaW5nOiAxOHB4KSB7XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkYmFzZS1jb2xvcjtcbiAgICAkdGV4dC1zaXplOiAkc3R5bGU7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gIzQyOTRmMCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICAvLyBAd2FybiBcIlRoZSBidXR0b24gbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gcGlsbCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICAvLyBDb2xvcmVkIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gZmxhdCB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG59XG5cbi8vIFNpbXBsZSBCdXR0b25cbkBtaXhpbiBzaW1wbGUoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFNoaW55IEJ1dHRvblxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XG4gICRmb3VydGgtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC03OSwgICRncmVlbjogLTcwLCAgJGJsdWU6IC00Nik7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xNDAsICRncmVlbjogLTE0MSwgJGJsdWU6IC0xMTQpO1xuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgICAkdGhpcmQtc3RvcDogICAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xuICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtOTMsICRncmVlbjogLTg1LCAkYmx1ZTogLTY2KTtcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XG4gICAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkdGhpcmQtc3RvcC1ob3Zlcik7XG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBQaWxsIEJ1dHRvblxuQG1peGluIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xuICAkYm9yZGVyLXNpZGVzOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yMSUsICRsaWdodG5lc3M6IC0yMSUpO1xuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDE0JSwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XG4gICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDExLCAkc2F0dXJhdGlvbjogIDYlLCAgICRsaWdodG5lc3M6IC0zMSUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlLWNvbG9yO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCAzcHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBGbGF0IEJ1dHRvblxuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCl7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIEZsZXhpYmxlIGdyaWRcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIC8vIEB3YXJuIFwiVGhlIGZsZXgtZ3JpZCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbi8vIEZsZXhpYmxlIGd1dHRlclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlciAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIC8vIEB3YXJuIFwiVGhlIGZsZXgtZ3V0dGVyIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG5cbiAgLy8gQHdhcm4gXCJUaGUgZ3JpZC13aWR0aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWUsICRyYXRpbzogJGdvbGRlbik7XG5cbiAgLy8gQHdhcm4gXCJUaGUgZ29sZGVuLXJhdGlvIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFBsZWFzZSB1c2UgdGhlIG1vZHVsYXItc2NhbGUgZnVuY3Rpb24sIGluc3RlYWQuXCI7XG59XG5cbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyBAd2FybiBcIlRoZSBib3gtc2l6aW5nIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFRoaXMgcHJvcGVydHkgY2FuIG5vdyBiZSB1c2VkIHVuLXByZWZpeGVkLlwiO1xufVxuIiwiLy8gTmVhdCAxLjcuMlxuLy8gaHR0cDovL25lYXQuYm91cmJvbi5pb1xuLy8gQ29weXJpZ2h0IDIwMTItMjAxNSB0aG91Z2h0Ym90LCBpbmMuXG4vLyBNSVQgTGljZW5zZVxuXG4vLyBIZWxwZXJzXG5AaW1wb3J0IFwibmVhdC1oZWxwZXJzXCI7XG5cbi8vIEdyaWRcbkBpbXBvcnQgXCJncmlkL3ByaXZhdGVcIjtcbkBpbXBvcnQgXCJncmlkL2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJncmlkL29tZWdhXCI7XG5AaW1wb3J0IFwiZ3JpZC9vdXRlci1jb250YWluZXJcIjtcbkBpbXBvcnQgXCJncmlkL3NwYW4tY29sdW1uc1wiO1xuQGltcG9ydCBcImdyaWQvcm93XCI7XG5AaW1wb3J0IFwiZ3JpZC9zaGlmdFwiO1xuQGltcG9ydCBcImdyaWQvcGFkXCI7XG5AaW1wb3J0IFwiZ3JpZC9maWxsLXBhcmVudFwiO1xuQGltcG9ydCBcImdyaWQvbWVkaWFcIjtcbkBpbXBvcnQgXCJncmlkL3RvLWRlcHJlY2F0ZVwiO1xuQGltcG9ydCBcImdyaWQvdmlzdWFsLWdyaWRcIjtcbkBpbXBvcnQgXCJncmlkL2Rpc3BsYXktY29udGV4dFwiO1xuQGltcG9ydCBcImdyaWQvZGlyZWN0aW9uLWNvbnRleHRcIjtcbiIsIi8vIEZ1bmN0aW9uc1xuQGltcG9ydCBcImZ1bmN0aW9ucy9wcml2YXRlXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL25ldy1icmVha3BvaW50XCI7XG5cbi8vIFNldHRpbmdzXG5AaW1wb3J0IFwic2V0dGluZ3MvZ3JpZFwiO1xuQGltcG9ydCBcInNldHRpbmdzL3Zpc3VhbC1ncmlkXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvZGlzYWJsZS13YXJuaW5nc1wiO1xuIiwiLy8gTm90IGZ1bmN0aW9uIGZvciBMaWJzYXNzIGNvbXBhdGliaWxpdHlcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL2xpYnNhc3MvaXNzdWVzLzM2OFxuQGZ1bmN0aW9uIGlzLW5vdCgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUsIGZhbHNlLCB0cnVlKTtcbn1cblxuLy8gQ2hlY2tzIGlmIGEgbnVtYmVyIGlzIGV2ZW5cbkBmdW5jdGlvbiBpcy1ldmVuKCRpbnQpIHtcbiAgQHJldHVybiAkaW50ICUgMiA9PSAwO1xufVxuXG4vLyBDaGVja3MgaWYgYW4gZWxlbWVudCBiZWxvbmdzIHRvIGEgbGlzdCBvciBub3RcbkBmdW5jdGlvbiBiZWxvbmdzLXRvKCR0ZXN0ZWQtaXRlbSwgJGxpc3QpIHtcbiAgQHJldHVybiBpcy1ub3Qobm90LWJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkpO1xufVxuXG5AZnVuY3Rpb24gbm90LWJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkge1xuICBAcmV0dXJuIGlzLW5vdChpbmRleCgkbGlzdCwgJHRlc3RlZC1pdGVtKSk7XG59XG5cbi8vIENvbnRhaW5zIGRpc3BsYXkgdmFsdWVcbkBmdW5jdGlvbiBjb250YWlucy1kaXNwbGF5LXZhbHVlKCRxdWVyeSkge1xuICBAcmV0dXJuIGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGJsb2NrLCAkcXVlcnkpXG4gICAgICAgb3IgYmVsb25ncy10byhpbmxpbmUtYmxvY2ssICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGlubGluZSwgJHF1ZXJ5KTtcbn1cblxuLy8gUGFyc2VzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzcGFuLWNvbHVtbnMoKVxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zcGFuKCRzcGFuOiAkc3Bhbikge1xuICBAaWYgbGVuZ3RoKCRzcGFuKSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzcGFuKSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMik7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAcmV0dXJuICRncmlkLWNvbHVtbnM7XG59XG5cbkBmdW5jdGlvbiBjb250YWluZXItc2hpZnQoJHNoaWZ0OiAkc2hpZnQpIHtcbiAgJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0ICFnbG9iYWw7XG5cbiAgQGlmIGxlbmd0aCgkc2hpZnQpID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaGlmdCkgPT0gMiB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNoaWZ0LCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG4vLyBHZW5lcmF0ZXMgYSBzdHJpcGVkIGJhY2tncm91bmRcbkBmdW5jdGlvbiBncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zLCAkY29sb3I6ICR2aXN1YWwtZ3JpZC1jb2xvcikge1xuICAkdHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50O1xuXG4gICRjb2x1bW4td2lkdGg6IGZsZXgtZ3JpZCgxLCAkZ3JpZC1jb2x1bW5zKTtcbiAgJGd1dHRlci13aWR0aDogZmxleC1ndXR0ZXIoJGdyaWQtY29sdW1ucyk7XG4gICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLXdpZHRoO1xuXG4gICR2YWx1ZXM6ICgkdHJhbnNwYXJlbnQgMCwgJGNvbG9yIDApO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRvICRncmlkLWNvbHVtbnMqMiB7XG4gICAgQGlmIGlzLWV2ZW4oJGkpIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRjb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkZ3V0dGVyLXdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gTGF5b3V0IGRpcmVjdGlvblxuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oJGxheW91dCwgJGRlZmF1bHQpIHtcbiAgJGRpcmVjdGlvbjogbnVsbDtcblxuICBAaWYgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIkxUUlwiIG9yIHRvLXVwcGVyLWNhc2UoJGxheW91dCkgPT0gXCJSVExcIiB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRsYXlvdXQpO1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGRlZmF1bHQpO1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRsYXlvdXQpIHtcbiAgJGRpcmVjdGlvbjogbnVsbDtcblxuICBAaWYgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIkxUUlwiIHtcbiAgICAkZGlyZWN0aW9uOiByaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogbGVmdDtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBsZWZ0O1xuXG4gIEBpZiAkZGlyZWN0aW9uID09IFwibGVmdFwiIHtcbiAgICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiByaWdodDtcbiAgfVxuXG4gIEByZXR1cm4gJG9wcG9zaXRlLWRpcmVjdGlvbjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFJldHVybnMgYSBtZWRpYSBjb250ZXh0IChtZWRpYSBxdWVyeSAvIGdyaWQgY29udGV4dCkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgdmFyaWFibGUgYW5kIHBhc3NlZCB0byBgbWVkaWEoKWAgYXMgYSBzaW5nbGUta2V5d29yZCBhcmd1bWVudC4gTWVkaWEgY29udGV4dHMgZGVmaW5lZCB1c2luZyBgbmV3LWJyZWFrcG9pbnRgIGFyZSB1c2VkIGJ5IHRoZSB2aXN1YWwgZ3JpZCwgYXMgbG9uZyBhcyB0aGV5IGFyZSBkZWZpbmVkIGJlZm9yZSBpbXBvcnRpbmcgTmVhdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5XG4vLy8gICBBIGxpc3Qgb2YgbWVkaWEgcXVlcnkgZmVhdHVyZXMgYW5kIHZhbHVlcy4gRWFjaCBgJGZlYXR1cmVgIHNob3VsZCBoYXZlIGEgY29ycmVzcG9uZGluZyBgJHZhbHVlYC5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBgJHZhbHVlYCBpbiBgJHF1ZXJ5YCwgYCRkZWZhdWx0LWZlYXR1cmVgIGlzIGdvaW5nIHRvIGJlIHVzZWQuXG4vLy9cbi8vLyAgIFRoZSBudW1iZXIgb2YgdG90YWwgY29sdW1ucyBpbiB0aGUgZ3JpZCBjYW4gYmUgc2V0IGJ5IHBhc3NpbmcgYCRjb2x1bW5zYCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IChvdmVycmlkZXMgYCR0b3RhbC1jb2x1bW5zYCkuIEZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciBgJGZlYXR1cmVgLCBjbGljayBbaGVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhMSkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkdG90YWwtY29sdW1ucyBbJGdyaWQtY29sdW1uc11cbi8vLyAgIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGluIHRoZSBuZXcgZ3JpZCBjb250ZXh0LiBDYW4gYmUgc2V0IGFzIGEgc2hvcnRoYW5kIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRtb2JpbGU6IG5ldy1icmVha3BvaW50KG1heC13aWR0aCA0ODBweCA0KTtcbi8vL1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtZWRpYSgkbW9iaWxlKSB7XG4vLy8gICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDQpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuLy8vICAgICAuZWxlbWVudCB7XG4vLy8gICAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICAgbWFyZ2luLXJpZ2h0OiA3LjQyMjk3JTtcbi8vLyAgICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICAgfVxuLy8vICAgICAuZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICAgIH1cbi8vLyAgIH1cblxuQGZ1bmN0aW9uIG5ldy1icmVha3BvaW50KCRxdWVyeTogJGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgJHF1ZXJ5OiAkZGVmYXVsdC1mZWF0dXJlIG50aCgkcXVlcnksIDEpICR0b3RhbC1jb2x1bW5zO1xuICB9IEBlbHNlIGlmIGlzLWV2ZW4obGVuZ3RoKCRxdWVyeSkpIHtcbiAgICAkcXVlcnk6IGFwcGVuZCgkcXVlcnksICR0b3RhbC1jb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiBpcy1ub3QoYmVsb25ncy10bygkcXVlcnksICR2aXN1YWwtZ3JpZC1icmVha3BvaW50cykpIHtcbiAgICAkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6IGFwcGVuZCgkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHMsICRxdWVyeSwgY29tbWEpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIHJlbGF0aXZlIHdpZHRoIG9mIGEgc2luZ2xlIGdyaWQgY29sdW1uLiBUaGUgdW5pdCB1c2VkIHNob3VsZCBiZSB0aGUgc2FtZSBvbmUgdXNlZCB0byBkZWZpbmUgYCRndXR0ZXJgLiBUbyBsZWFybiBtb3JlIGFib3V0IG1vZHVsYXItc2NhbGUoKSBzZWUgW0JvdXJib24gZG9jc10oaHR0cDovL2JvdXJib24uaW8vZG9jcy8jbW9kdWxhci1zY2FsZSkuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKFVuaXQpXG5cbiRjb2x1bW46IG1vZHVsYXItc2NhbGUoMywgMWVtLCAkZ29sZGVuKSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHJlbGF0aXZlIHdpZHRoIG9mIGEgc2luZ2xlIGdyaWQgZ3V0dGVyLiBUaGUgdW5pdCB1c2VkIHNob3VsZCBiZSB0aGUgc2FtZSBvbmUgdXNlZCB0byBkZWZpbmUgYCRjb2x1bW5gLiBUbyBsZWFybiBtb3JlIGFib3V0IG1vZHVsYXItc2NhbGUoKSBzZWUgW0JvdXJib24gZG9jc10oaHR0cDovL2JvdXJib24uaW8vZG9jcy8jbW9kdWxhci1zY2FsZSkuIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdClcblxuJGd1dHRlcjogbW9kdWxhci1zY2FsZSgxLCAxZW0sICRnb2xkZW4pICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuIEl0cyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBpbnNpZGUgYSBtZWRpYSBxdWVyeSB1c2luZyB0aGUgYG1lZGlhKClgIG1peGluLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKFVuaXRsZXNzKVxuXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIG1heC13aWR0aCBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCB0aGF0IGluY2x1ZGVzIGBvdXRlci1jb250YWluZXIoKWAuIFRvIGxlYXJuIG1vcmUgYWJvdXQgYGVtKClgIHNlZSBbQm91cmJvbiBkb2NzXShodHRwOi8vYm91cmJvbi5pby9kb2NzLyNweC10by1lbSkuIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdClcbi8vL1xuJG1heC13aWR0aDogZW0oMTA4OCkgIWRlZmF1bHQ7XG5cbi8vLyBXaGVuIHNldCB0byB0cnVlLCBpdCBzZXRzIHRoZSBib3gtc2l6aW5nIHByb3BlcnR5IG9mIGFsbCBlbGVtZW50cyB0byBgYm9yZGVyLWJveGAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBodG1sIHtcbi8vLyAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuLy8vXG4vLy8gICAqLCAqOjphZnRlciwgKjo6YmVmb3JlIHtcbi8vLyAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbi8vLyAgIH1cblxuJGJvcmRlci1ib3gtc2l6aW5nOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgZGVmYXVsdCBbbWVkaWEgZmVhdHVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhKSB0aGF0IGBtZWRpYSgpYCBhbmQgYG5ldy1icmVha3BvaW50KClgIHJldmVydCB0byB3aGVuIG9ubHkgYSBicmVha3BvaW50IHZhbHVlIGlzIHBhc3NlZC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuXG4kZGVmYXVsdC1mZWF0dXJlOiBtaW4td2lkdGg7IC8vIERlZmF1bHQgQG1lZGlhIGZlYXR1cmUgZm9yIHRoZSBicmVha3BvaW50KCkgbWl4aW5cblxuLy8vU2V0cyB0aGUgZGVmYXVsdCBsYXlvdXQgZGlyZWN0aW9uIG9mIHRoZSBncmlkLiBDYW4gYmUgYExUUmAgb3IgYFJUTGAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vL0B0eXBlIFN0cmluZ1xuXG4kZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXNwbGF5cyB0aGUgdmlzdWFsIGdyaWQgd2hlbiBzZXQgdG8gdHJ1ZS4gVGhlIG92ZXJsYWlkIGdyaWQgbWF5IGJlIGZldyBwaXhlbHMgb2ZmIGRlcGVuZGluZyBvbiB0aGUgYnJvd3NlcidzIHJlbmRlcmluZyBlbmdpbmUgYW5kIHBpeGVsIHJvdW5kaW5nIGFsZ29yaXRobS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kdmlzdWFsLWdyaWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIGdyaWQgY29sb3IuIFNldCB3aXRoIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQ29sb3JcblxuJHZpc3VhbC1ncmlkLWNvbG9yOiAjZWVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgYHotaW5kZXhgIHByb3BlcnR5IG9mIHRoZSB2aXN1YWwgZ3JpZC4gQ2FuIGJlIGBiYWNrYCAoYmVoaW5kIGNvbnRlbnQpIG9yIGBmcm9udGAgKGluIGZyb250IG9mIGNvbnRlbnQpLiBTZXQgd2l0aCBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuXG4kdmlzdWFsLWdyaWQtaW5kZXg6IGJhY2sgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBvcGFjaXR5IHByb3BlcnR5IG9mIHRoZSB2aXN1YWwgZ3JpZC4gU2V0IHdpdGggYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXRsZXNzKVxuXG4kdmlzdWFsLWdyaWQtb3BhY2l0eTogMC40ICFkZWZhdWx0O1xuXG4kdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlzYWJsZSBhbGwgZGVwcmVjYXRpb24gd2FybmluZ3MuIERlZmF1bHRzIHRvIGBmYWxzZWAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRkaXNhYmxlLXdhcm5pbmdzOiBmYWxzZSAhZGVmYXVsdDtcblxuQG1peGluIC1uZWF0LXdhcm4oJG1lc3NhZ2UpIHtcbiAgQGlmICRkaXNhYmxlLXdhcm5pbmdzID09IGZhbHNlIHtcbiAgICBAd2FybiBcIiN7JG1lc3NhZ2V9XCI7XG4gIH1cbn1cbiIsIiRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZGVmYXVsdDtcbiRmZy1jb2x1bW46ICRjb2x1bW47XG4kZmctZ3V0dGVyOiAkZ3V0dGVyO1xuJGZnLW1heC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiBmYWxzZSAhZGVmYXVsdDtcbiRsYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xufVxuXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXBhcmVudC1jb2x1bW5zKCRjb2x1bW5zKSB7XG4gIEBpZiAkY29sdW1ucyAhPSAkZ3JpZC1jb2x1bW5zIHtcbiAgICAkcGFyZW50LWNvbHVtbnM6ICRjb2x1bW5zICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcGFyZW50LWNvbHVtbnM7XG59XG5cbkBmdW5jdGlvbiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItaXMtZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpIHtcbiAgQHJldHVybiAkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUgPT0gdHJ1ZSBvciAkZGlzcGxheSA9PSB0YWJsZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuQGlmICRib3JkZXItYm94LXNpemluZyA9PSB0cnVlIHtcbiAgaHRtbCB7IC8vIGh0dHA6Ly9iaXQubHkvMXFrMnRWUlxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICAqIHtcbiAgICAmLFxuICAgICY6OmFmdGVyLFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUmVtb3ZlcyB0aGUgZWxlbWVudCdzIGd1dHRlciBtYXJnaW4sIHJlZ2FyZGxlc3Mgb2YgaXRzIHBvc2l0aW9uIGluIHRoZSBncmlkIGhpZXJhcmNoeSBvciBkaXNwbGF5IHByb3BlcnR5LiBJdCBjYW4gdGFyZ2V0IGEgc3BlY2lmaWMgZWxlbWVudCwgb3IgZXZlcnkgYG50aC1jaGlsZGAgb2NjdXJyZW5jZS4gV29ya3Mgb25seSB3aXRoIGBibG9ja2AgbGF5b3V0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5IFtibG9ja11cbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzLiBTdXBwb3J0ZWQgYXJndW1lbnRzIGFyZSBgbnRoLWNoaWxkYCBzZWxlY3RvcnMgKHRhcmdldHMgYSBzcGVjaWZpYyBwc2V1ZG8gZWxlbWVudCkgYW5kIGBhdXRvYCAodGFyZ2V0cyBgbGFzdC1jaGlsZGApLlxuLy8vXG4vLy8gICBXaGVuIHBhc3NlZCBhbiBgbnRoLWNoaWxkYCBhcmd1bWVudCBvZiB0eXBlIGAqbmAgd2l0aCBgYmxvY2tgIGRpc3BsYXksIHRoZSBvbWVnYSBtaXhpbiBhdXRvbWF0aWNhbGx5IGFkZHMgYSBjbGVhciB0byB0aGUgYCpuKzFgIHRoIGVsZW1lbnQuIE5vdGUgdGhhdCBjb21wb3NpdGUgYXJndW1lbnRzIHN1Y2ggYXMgYDJuKzFgIGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cbi8vL1xuLy8vICAgKipEZXByZWNhdGlvbiB3YXJuaW5nKio6IFRoZSBvbWVnYSBtaXhpbiB3aWxsIG5vIGxvbmdlciB0YWtlIGEgYCRkaXJlY3Rpb25gIGFyZ3VtZW50LiBUbyBjaGFuZ2UgdGhlIGxheW91dCBkaXJlY3Rpb24sIHVzZSBgcm93KCRkaXJlY3Rpb24pYCBvciBzZXQgYCRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25gIGluc3RlYWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb21lZ2E7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5udGgtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG9tZWdhKDRuKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAubnRoLWVsZW1lbnQ6bnRoLWNoaWxkKDRuKSB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLm50aC1lbGVtZW50Om50aC1jaGlsZCg0bisxKSB7XG4vLy8gICAgIGNsZWFyOiBsZWZ0O1xuLy8vICAgfVxuXG5AbWl4aW4gb21lZ2EoJHF1ZXJ5OiBibG9jaywgJGRpcmVjdGlvbjogZGVmYXVsdCkge1xuICAkdGFibGU6IGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSk7XG4gICRhdXRvOiBiZWxvbmdzLXRvKGF1dG8sICRxdWVyeSk7XG5cbiAgQGlmICRkaXJlY3Rpb24gIT0gZGVmYXVsdCB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBvbWVnYSBtaXhpbiB3aWxsIG5vIGxvbmdlciB0YWtlIGEgJGRpcmVjdGlvbiBhcmd1bWVudC4gVG8gY2hhbmdlIHRoZSBsYXlvdXQgZGlyZWN0aW9uLCB1c2UgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQtZGlyZWN0aW9uLCAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKTtcbiAgfVxuXG4gIEBpZiAkdGFibGUge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgb21lZ2EgbWl4aW4gbm8gbG9uZ2VyIHJlbW92ZXMgcGFkZGluZyBpbiB0YWJsZSBsYXlvdXRzLlwiKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAaWYgJGF1dG8ge1xuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIGFuZCAkdGFibGUgPT0gZmFsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbik7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZChudGgoJHF1ZXJ5LCAxKSwgJGRpcmVjdGlvbik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVG9vIG1hbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb21lZ2EoKSBtaXhpbi5cIik7XG4gIH1cbn1cblxuQG1peGluIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pIHtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKTtcblxuICAmOm50aC1jaGlsZCgjeyRxdWVyeX0pIHtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIGFuZCB1bml0KCRxdWVyeSkgPT0gXCJuXCIge1xuICAgICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSsxKSB7XG4gICAgICBjbGVhcjogJG9wcG9zaXRlLWRpcmVjdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgYSBvdXRlciBjb250YWluZXIgYnkgY2VudHJpbmcgaXQgaW4gdGhlIHZpZXdwb3J0LCBjbGVhcmluZyBpdHMgZmxvYXRzLCBhbmQgc2V0dGluZyBpdHMgYG1heC13aWR0aGAuXG4vLy8gQWx0aG91Z2ggb3B0aW9uYWwsIHVzaW5nIGBvdXRlci1jb250YWluZXJgIGlzIHJlY29tbWVuZGVkLiBUaGUgbWl4aW4gY2FuIGJlIGNhbGxlZCBvbiBtb3JlIHRoYW4gb25lIGVsZW1lbnQgcGVyIHBhZ2UsIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IG5lc3RlZC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIFt1bml0XX0gJGxvY2FsLW1heC13aWR0aCBbJG1heC13aWR0aF1cbi8vLyAgIE1heCB3aWR0aCB0byBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LiBDYW4gYmUgYSBwZXJjZW50YWdlIG9yIGEgbWVhc3VyZS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBvdXRlci1jb250YWluZXIoMTAwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgICp6b29tOiAxO1xuLy8vICAgICBtYXgtd2lkdGg6IDEwMCU7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50OmJlZm9yZSwgLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgICBjb250ZW50OiBcIiBcIjtcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICB9XG5cbkBtaXhpbiBvdXRlci1jb250YWluZXIoJGxvY2FsLW1heC13aWR0aDogJG1heC13aWR0aCkge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWF4LXdpZHRoOiAkbG9jYWwtbWF4LXdpZHRoO1xuICBtYXJnaW46IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuIGVsZW1lbnQgc2hvdWxkIHNwYW4uIElmIHRoZSBzZWxlY3RvciBpcyBuZXN0ZWQgdGhlIG51bWJlciBvZiBjb2x1bW5zIG9mIGl0cyBwYXJlbnQgZWxlbWVudCBzaG91bGQgYmUgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IGFzIHdlbGwuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzcGFuXG4vLy8gICBBIGxpc3QgY29udGFpbmluZyBgJGNvbHVtbnNgLCB0aGUgdW5pdGxlc3MgbnVtYmVyIG9mIGNvbHVtbnMgdGhlIGVsZW1lbnQgc3BhbnMgKHJlcXVpcmVkKSwgYW5kIGAkY29udGFpbmVyLWNvbHVtbnNgLCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhlIHBhcmVudCBlbGVtZW50IHNwYW5zIChvcHRpb25hbCkuXG4vLy9cbi8vLyAgIElmIG9ubHkgb25lIHZhbHVlIGlzIHBhc3NlZCwgaXQgaXMgYXNzdW1lZCB0aGF0IGl0J3MgYCRjb2x1bW5zYCBhbmQgdGhhdCB0aGF0IGAkY29udGFpbmVyLWNvbHVtbnNgIGlzIGVxdWFsIHRvIGAkZ3JpZC1jb2x1bW5zYCwgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBncmlkLlxuLy8vXG4vLy8gICBUaGUgdmFsdWVzIGNhbiBiZSBzZXBhcmF0ZWQgd2l0aCBhbnkgc3RyaW5nIHN1Y2ggYXMgYG9mYCwgYC9gLCBldGMuXG4vLy9cbi8vLyAgIGAkY29sdW1uc2AgYWxzbyBhY2NlcHRzIGRlY2ltYWxzIGZvciB3aGVuIGl0J3MgbmVjZXNzYXJ5IHRvIGJyZWFrIG91dCBvZiB0aGUgc3RhbmRhcmQgZ3JpZC4gRS5nLiBQYXNzaW5nIGAyLjRgIGluIGEgc3RhbmRhcmQgMTIgY29sdW1uIGdyaWQgd2lsbCBkaXZpZGUgdGhlIHJvdyBpbnRvIDUgY29sdW1ucy5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbYmxvY2tdXG4vLy8gICBTZXRzIHRoZSBkaXNwbGF5IHByb3BlcnR5IG9mIHRoZSBlbGVtZW50LiBCeSBkZWZhdWx0IGl0IHNldHMgdGhlIGRpc3BsYXkgcHJvcGVydCBvZiB0aGUgZWxlbWVudCB0byBgYmxvY2tgLlxuLy8vXG4vLy8gICBJZiBwYXNzZWQgYGJsb2NrLWNvbGxhcHNlYCwgaXQgYWxzbyByZW1vdmVzIHRoZSBtYXJnaW4gZ3V0dGVyIGJ5IGFkZGluZyBpdCB0byB0aGUgZWxlbWVudCB3aWR0aC5cbi8vL1xuLy8vICAgSWYgcGFzc2VkIGB0YWJsZWAsIGl0IHNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgdG8gYHRhYmxlLWNlbGxgIGFuZCBjYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudCB3aXRob3V0IHRha2luZyBndXR0ZXJzIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIHJlc3VsdCBkb2VzIG5vdCBhbGlnbiB3aXRoIHRoZSBibG9jay1iYXNlZCBncmlkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vL1xuLy8vICAgIC5uZXN0ZWQtZWxlbWVudCB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMiBvZiA2KTtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDIuMzU3NjUlO1xuLy8vICAgICB3aWR0aDogNDguODIxMTclO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudCAubmVzdGVkLWVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogNC44MjkxNiU7XG4vLy8gICAgIHdpZHRoOiAzMC4xMTM4OSU7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50IC5uZXN0ZWQtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuXG5AbWl4aW4gc3Bhbi1jb2x1bW5zKCRzcGFuOiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMsICRkaXNwbGF5OiBibG9jaykge1xuICAkY29sdW1uczogbnRoKCRzcGFuLCAxKTtcbiAgJGNvbnRhaW5lci1jb2x1bW5zOiBjb250YWluZXItc3Bhbigkc3Bhbik7XG5cbiAgJHBhcmVudC1jb2x1bW5zOiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbnRhaW5lci1jb2x1bW5zKSAhZ2xvYmFsO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICRkaXNwbGF5LXRhYmxlOiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpO1xuXG4gIEBpZiAkZGlzcGxheS10YWJsZSAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkY29udGFpbmVyLWNvbHVtbnMpO1xuICB9IEBlbHNlIHtcbiAgICBmbG9hdDogI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTtcblxuICAgIEBpZiAkZGlzcGxheSAhPSBuby1kaXNwbGF5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSB7XG4gICAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICdjb2xsYXBzZScgYXJndW1lbnQgd2lsbCBiZSBkZXByZWNhdGVkLiBVc2UgJ2Jsb2NrLWNvbGxhcHNlJyBpbnN0ZWFkLlwiKTtcbiAgICB9XG5cbiAgICBAaWYgJGRpc3BsYXkgPT0gY29sbGFwc2Ugb3IgJGRpc3BsYXkgPT0gYmxvY2stY29sbGFwc2Uge1xuICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKSArIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB9XG5cbiAgICB9IEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnMpO1xuICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEZXNpZ25hdGVzIHRoZSBlbGVtZW50IGFzIGEgcm93IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQgbGF5b3V0LiBJdCBjbGVhcnMgdGhlIGZsb2F0cyBvbiB0aGUgZWxlbWVudCBhbmQgc2V0cyBpdHMgZGlzcGxheSBwcm9wZXJ0eS4gUm93cyBjYW4ndCBiZSBuZXN0ZWQsIGJ1dCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSByb3cgZWxlbWVudOKAlHdpdGggZGlmZmVyZW50IGRpc3BsYXkgcHJvcGVydGllc+KAlHBlciBsYXlvdXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW2RlZmF1bHRdXG4vLy8gIFNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBkaXNwbGF5IGNvbnRleHQgdGhhdCB3aWxsIGJlIHVzZWQgYnkgaXRzIGNoaWxkcmVuLiBDYW4gYmUgYGJsb2NrYCBvciBgdGFibGVgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXJlY3Rpb24gWyRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25dXG4vLy8gIFNldHMgdGhlIGxheW91dCBkaXJlY3Rpb24uIENhbiBiZSBgTFRSYCAobGVmdC10by1yaWdodCkgb3IgYFJUTGAgKHJpZ2h0LXRvLWxlZnQpLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSByb3coKTtcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgKnpvb206IDE7XG4vLy8gICAgZGlzcGxheTogYmxvY2s7XG4vLy8gIH1cbi8vL1xuLy8vIC5lbGVtZW50OmJlZm9yZSwgLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgY29udGVudDogXCIgXCI7XG4vLy8gICBkaXNwbGF5OiB0YWJsZTtcbi8vLyB9XG4vLy9cbi8vLyAuZWxlbWVudDphZnRlciB7XG4vLy8gICBjbGVhcjogYm90aDtcbi8vLyB9XG5cbkBtaXhpbiByb3coJGRpc3BsYXk6IGRlZmF1bHQsICRkaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gIT0gJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSAkZGlyZWN0aW9uIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xuICB9XG5cbiAgJGxheW91dC1kaXJlY3Rpb246ICRkaXJlY3Rpb24gIWdsb2JhbDtcblxuICBAaWYgJGRpc3BsYXkgIT0gZGVmYXVsdCB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSAkZGlzcGxheSBhcmd1bWVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXNwbGF5KCl7Li4ufSBtaXhpbi5cIik7XG4gIH1cblxuICBAaWYgJGRpc3BsYXkgPT0gdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiB0cnVlICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2UgIWdsb2JhbDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJhbnNsYXRlcyBhbiBlbGVtZW50IGhvcml6b250YWxseSBieSBhIG51bWJlciBvZiBjb2x1bW5zLiBQb3NpdGl2ZSBhcmd1bWVudHMgc2hpZnQgdGhlIGVsZW1lbnQgdG8gdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uLCB3aGlsZSBuZWdhdGl2ZSBvbmVzIHNoaWZ0IGl0IHRvIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkbi1jb2x1bW5zIFsxXVxuLy8vICAgTnVtYmVyIG9mIGNvbHVtbnMgYnkgd2hpY2ggdGhlIGVsZW1lbnQgc2hpZnRzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNoaWZ0KC0zKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IC0yNS41ODk0MSU7XG4vLy8gICB9XG5cbkBtaXhpbiBzaGlmdCgkbi1jb2x1bW5zOiAxKSB7XG4gIEBpbmNsdWRlIHNoaWZ0LWluLWNvbnRleHQoJG4tY29sdW1ucyk7XG59XG5cbi8vLyBUcmFuc2xhdGVzIGFuIGVsZW1lbnQgaG9yaXpvbnRhbGx5IGJ5IGEgbnVtYmVyIG9mIGNvbHVtbnMsIGluIGEgc3BlY2lmaWMgbmVzdGluZyBjb250ZXh0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hpZnRcbi8vLyAgIEEgbGlzdCBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzaGlmdCAoYCRjb2x1bW5zYCkgYW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBvZiB0aGUgcGFyZW50IGVsZW1lbnQgKGAkY29udGFpbmVyLWNvbHVtbnNgKS5cbi8vL1xuLy8vICAgVGhlIHR3byB2YWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCB3aXRoIGFueSBzdHJpbmcgc3VjaCBhcyBgb2ZgLCBgL2AsIGV0Yy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaGlmdCgtMyBvZiA2KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IC01Mi40MTQ1OCU7XG4vLy8gICB9XG5cbkBtaXhpbiBzaGlmdC1pbi1jb250ZXh0KCRzaGlmdDogJGNvbHVtbnMgb2YgJGNvbnRhaW5lci1jb2x1bW5zKSB7XG4gICRuLWNvbHVtbnM6IG50aCgkc2hpZnQsIDEpO1xuICAkcGFyZW50LWNvbHVtbnM6IGNvbnRhaW5lci1zaGlmdCgkc2hpZnQpICFnbG9iYWw7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgbWFyZ2luLSN7JG9wcG9zaXRlLWRpcmVjdGlvbn06ICRuLWNvbHVtbnMgKiBmbGV4LWdyaWQoMSwgJHBhcmVudC1jb2x1bW5zKSArICRuLWNvbHVtbnMgKiBmbGV4LWd1dHRlcigkcGFyZW50LWNvbHVtbnMpO1xuXG4gIC8vIFJlc2V0IG5lc3RpbmcgY29udGV4dFxuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEFkZHMgcGFkZGluZyB0byB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHBhZGRpbmcgW2ZsZXgtZ3V0dGVyKCldXG4vLy8gICBBIGxpc3Qgb2YgcGFkZGluZyB2YWx1ZShzKSB0byB1c2UuIFBhc3NpbmcgYGRlZmF1bHRgIGluIHRoZSBsaXN0IHdpbGwgcmVzdWx0IGluIHVzaW5nIHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwYWRkaW5nIHZhbHVlLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBhZCgzMHB4IC0yMHB4IDEwcHggZGVmYXVsdCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmc6IDMwcHggLTIwcHggMTBweCAyLjM1NzY1JTtcbi8vLyAgIH1cblxuQG1peGluIHBhZCgkcGFkZGluZzogZmxleC1ndXR0ZXIoKSkge1xuICAkcGFkZGluZy1saXN0OiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHBhZGRpbmcge1xuICAgICR2YWx1ZTogaWYoJHZhbHVlID09ICdkZWZhdWx0JywgZmxleC1ndXR0ZXIoKSwgJHZhbHVlKTtcbiAgICAkcGFkZGluZy1saXN0OiBqb2luKCRwYWRkaW5nLWxpc3QsICR2YWx1ZSk7XG4gIH1cbiAgcGFkZGluZzogJHBhZGRpbmctbGlzdDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEZvcmNlcyB0aGUgZWxlbWVudCB0byBmaWxsIGl0cyBwYXJlbnQgY29udGFpbmVyLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbi8vLyAgIH1cblxuQG1peGluIGZpbGwtcGFyZW50KCkge1xuICB3aWR0aDogMTAwJTtcblxuICBAaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IGZhbHNlIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBPdXRwdXRzIGEgbWVkaWEtcXVlcnkgYmxvY2sgd2l0aCBhbiBvcHRpb25hbCBncmlkIGNvbnRleHQgKHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkKS5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5XG4vLy8gICBBIGxpc3Qgb2YgbWVkaWEgcXVlcnkgZmVhdHVyZXMgYW5kIHZhbHVlcywgd2hlcmUgZWFjaCBgJGZlYXR1cmVgIHNob3VsZCBoYXZlIGEgY29ycmVzcG9uZGluZyBgJHZhbHVlYC5cbi8vLyAgIEZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciBgJGZlYXR1cmVgLCBjbGljayBbaGVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhMSkuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgYCR2YWx1ZWAgaW4gYCRxdWVyeWAsIGAkZGVmYXVsdC1mZWF0dXJlYCBpcyBnb2luZyB0byBiZSB1c2VkLlxuLy8vXG4vLy8gICBUaGUgbnVtYmVyIG9mIHRvdGFsIGNvbHVtbnMgaW4gdGhlIGdyaWQgY2FuIGJlIHNldCBieSBwYXNzaW5nIGAkY29sdW1uc2AgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAob3ZlcnJpZGVzIGAkdG90YWwtY29sdW1uc2ApLlxuLy8vXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkdG90YWwtY29sdW1ucyBbJGdyaWQtY29sdW1uc11cbi8vLyAgIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGluIHRoZSBuZXcgZ3JpZCBjb250ZXh0LiBDYW4gYmUgc2V0IGFzIGEgc2hvcnRoYW5kIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5yZXNwb25zaXZlLWVsZW1lbnQge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoNzY5cHgpIHtcbi8vLyAgICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gIC5uZXctY29udGV4dC1lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtZWRpYShtaW4td2lkdGggMzIwcHggbWF4LXdpZHRoIDQ4MHB4LCA2KSB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4vLy8gICAgLnJlc3BvbnNpdmUtZWxlbWVudCB7XG4vLy8gICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAyLjM1NzY1JTtcbi8vLyAgICAgIHdpZHRoOiA0OC44MjExNyU7XG4vLy8gICAgfVxuLy8vXG4vLy8gICAgLnJlc3BvbnNpdmUtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4vLy8gICAgLm5ldy1jb250ZXh0LWVsZW1lbnQge1xuLy8vICAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogNC44MjkxNiU7XG4vLy8gICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICB9XG4vLy9cbi8vLyAgICAubmV3LWNvbnRleHQtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICB9XG4vLy8gIH1cblxuQG1peGluIG1lZGlhKCRxdWVyeTogJGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKCRkZWZhdWx0LWZlYXR1cmU6IG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucyAhZ2xvYmFsO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnMgIWdsb2JhbDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRsb29wLXRvOiBsZW5ndGgoJHF1ZXJ5KTtcbiAgICAkbWVkaWEtcXVlcnk6IFwic2NyZWVuIGFuZCBcIjtcbiAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnMgIWdsb2JhbDtcblxuICAgIEBpZiBpcy1ub3QoaXMtZXZlbihsZW5ndGgoJHF1ZXJ5KSkpIHtcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksICRsb29wLXRvKSAhZ2xvYmFsO1xuICAgICAgJGxvb3AtdG86ICRsb29wLXRvIC0gMTtcbiAgICB9XG5cbiAgICAkaTogMTtcbiAgICBAd2hpbGUgJGkgPD0gJGxvb3AtdG8ge1xuICAgICAgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIihcIiArIG50aCgkcXVlcnksICRpKSArIFwiOiBcIiArIG50aCgkcXVlcnksICRpICsgMSkgKyBcIikgXCI7XG5cbiAgICAgIEBpZiAoJGkgKyAxKSAhPSAkbG9vcC10byB7XG4gICAgICAgICRtZWRpYS1xdWVyeTogJG1lZGlhLXF1ZXJ5ICsgXCJhbmQgXCI7XG4gICAgICB9XG5cbiAgICAgICRpOiAkaSArIDI7XG4gICAgfVxuXG4gICAgQG1lZGlhICN7JG1lZGlhLXF1ZXJ5fSB7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnk6JGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIGJyZWFrcG9pbnQoKSBtaXhpbiB3YXMgcmVuYW1lZCB0byBtZWRpYSgpIGluIE5lYXQgMS4wLiBQbGVhc2UgdXBkYXRlIHlvdXIgcHJvamVjdCB3aXRoIHRoZSBuZXcgc3ludGF4IGJlZm9yZSB0aGUgbmV4dCB2ZXJzaW9uIGJ1bXAuXCIpO1xuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDMge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksIDMpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSA1IHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSBhbmQgKG50aCgkcXVlcnksIDMpOiBudGgoJHF1ZXJ5LCA0KSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgNSk7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBicmVha3BvaW50KCkuIFJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy5cIik7XG4gIH1cbn1cblxuQG1peGluIG50aC1vbWVnYSgkbnRoLCAkZGlzcGxheTogYmxvY2ssICRkaXJlY3Rpb246IGRlZmF1bHQpIHtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBudGgtb21lZ2EoKSBtaXhpbiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG9tZWdhKCkgaW5zdGVhZC5cIik7XG4gIEBpbmNsdWRlIG9tZWdhKCRudGggJGRpc3BsYXksICRkaXJlY3Rpb24pO1xufVxuXG4vLy8gUmVzZXRzIHRoZSBhY3RpdmUgZGlzcGxheSBwcm9wZXJ0eSB0byBgYmxvY2tgLiBQYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY2hhbmdpbmcgdGhlIGRpc3BsYXkgcHJvcGVydHkgaW4gYSBzaW5nbGUgcm93LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHJvdyh0YWJsZSk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byB0YWJsZSBkaXNwbGF5XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJlc2V0LWRpc3BsYXk7XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGJsb2NrIGRpc3BsYXlcblxuQG1peGluIHJlc2V0LWRpc3BsYXkge1xuICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFnbG9iYWw7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJSZXNldHRpbmcgJGRpc3BsYXkgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlzcGxheSgpey4uLn0gbWl4aW4uXCIpO1xufVxuXG4vLy8gUmVzZXRzIHRoZSBhY3RpdmUgbGF5b3V0IGRpcmVjdGlvbiB0byB0aGUgZGVmYXVsdCB2YWx1ZSBzZXQgaW4gYCRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25gLiBQYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY2hhbmdpbmcgdGhlIGxheW91dCBkaXJlY3Rpb24gaW4gYSBzaW5nbGUgcm93LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHJvdygkZGlyZWN0aW9uOiBSVEwpO1xuLy8vICAgICAvLyBDb250ZXh0IGNoYW5nZWQgdG8gcmlnaHQtdG8tbGVmdFxuLy8vICAgfVxuLy8vXG4vLy8gICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xuLy8vICAgLy8gQ29udGV4dCBpcyByZXNldCB0byBsZWZ0LXRvLXJpZ2h0XG5cbkBtaXhpbiByZXNldC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgJGxheW91dC1kaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24gIWdsb2JhbDtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlJlc2V0dGluZyAkZGlyZWN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xufVxuXG4vLy8gUmVzZXRzIGJvdGggdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uIGFuZCB0aGUgYWN0aXZlIGRpc3BsYXkgcHJvcGVydHkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KHRhYmxlLCBSVEwpO1xuLy8vICAgICAvLyBDb250ZXh0IGNoYW5nZWQgdG8gdGFibGUgdGFibGUgYW5kIHJpZ2h0LXRvLWxlZnRcbi8vLyAgIH1cbi8vL1xuLy8vICAgQGluY2x1ZGUgcmVzZXQtYWxsO1xuLy8vICAgLy8gQ29udGV4dCBpcyByZXNldCB0byBibG9jayBkaXNwbGF5IGFuZCBsZWZ0LXRvLXJpZ2h0XG5cbkBtaXhpbiByZXNldC1hbGwge1xuICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3JhZGllbnQoJHZhbHVlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAjeyR2YWx1ZXN9KVwiKTtcbn1cblxuQGlmICR2aXN1YWwtZ3JpZCA9PSB0cnVlIG9yICR2aXN1YWwtZ3JpZCA9PSB5ZXMge1xuICBib2R5OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICBvcGFjaXR5OiAkdmlzdWFsLWdyaWQtb3BhY2l0eTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGJhY2sge1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGZyb250IHtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiAkYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRicmVha3BvaW50KSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGFuZ2VzIHRoZSBkaXNwbGF5IHByb3BlcnR5IHVzZWQgYnkgb3RoZXIgbWl4aW5zIGNhbGxlZCBpbiB0aGUgY29kZSBibG9jayBhcmd1bWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbYmxvY2tdXG4vLy8gICBEaXNwbGF5IHZhbHVlIHRvIGJlIHVzZWQgd2l0aGluIHRoZSBibG9jay4gQ2FuIGJlIGB0YWJsZWAgb3IgYGJsb2NrYC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIEBpbmNsdWRlIGRpc3BsYXktY29udGV4dCh0YWJsZSkge1xuLy8vICAgIC5kaXNwbGF5LXRhYmxlIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZGlzcGxheS10YWJsZSB7XG4vLy8gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuLy8vICAgICAgLi4uXG4vLy8gICB9XG5cbkBtaXhpbiBkaXNwbGF5LWNvbnRleHQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gICRzY29wZS1kaXNwbGF5OiAkY29udGFpbmVyLWRpc3BsYXktdGFibGU7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogJGRpc3BsYXkgPT0gdGFibGUgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6ICRzY29wZS1kaXNwbGF5ICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGFuZ2VzIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgdXNlZCBieSBvdGhlciBtaXhpbnMgY2FsbGVkIGluIHRoZSBjb2RlIGJsb2NrIGFyZ3VtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXJlY3Rpb24gW2xlZnQtdG8tcmlnaHRdXG4vLy8gICBMYXlvdXQgZGlyZWN0aW9uIHRvIGJlIHVzZWQgd2l0aGluIHRoZSBibG9jay4gQ2FuIGJlIGBsZWZ0LXRvLXJpZ2h0YCBvciBgcmlnaHQtdG8tbGVmdGAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIEBpbmNsdWRlIGRpcmVjdGlvbi1jb250ZXh0KHJpZ2h0LXRvLWxlZnQpIHtcbi8vLyAgICAucmlnaHQtdG8tbGVmdC1ibG9jayB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5yaWdodC10by1sZWZ0LWJsb2NrIHtcbi8vLyAgICAgZmxvYXQ6IHJpZ2h0O1xuLy8vICAgICAgLi4uXG4vLy8gICB9XG5cbkBtaXhpbiBkaXJlY3Rpb24tY29udGV4dCgkZGlyZWN0aW9uOiBsZWZ0LXRvLXJpZ2h0KSB7XG4gICRzY29wZS1kaXJlY3Rpb246ICRsYXlvdXQtZGlyZWN0aW9uO1xuXG4gIEBpZiB0by1sb3dlci1jYXNlKCRkaXJlY3Rpb24pID09IFwibGVmdC10by1yaWdodFwiIHtcbiAgICAkbGF5b3V0LWRpcmVjdGlvbjogTFRSICFnbG9iYWw7XG4gIH0gQGVsc2UgaWYgdG8tbG93ZXItY2FzZSgkZGlyZWN0aW9uKSA9PSBcInJpZ2h0LXRvLWxlZnRcIiB7XG4gICAgJGxheW91dC1kaXJlY3Rpb246IFJUTCAhZ2xvYmFsO1xuICB9XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJGxheW91dC1kaXJlY3Rpb246ICRzY29wZS1kaXJlY3Rpb24gIWdsb2JhbDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wYXNzIERlZmF1bHRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQm9yZGVyIFJhZGl1c1xuXG4kZGVmYXVsdC1ib3JkZXItcmFkaXVzOiA1cHg7XG5cbi8vIFRyYW5zaXRpb25cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xuJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMjAwbXM7XG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBsaW5lYXI7XG4kZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5OiAwO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW1hcnkgQnJlYWsgUG9pbnRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgYnAgKG1heC13aWR0aCwgeHgpIG1peGluXG4vLyB3aGVyZSBhIG1pbi13aWR0aCBpcyB1c2VkLCByZW1lbWJlciB0byArMSB0byBicmVhayBjb3JyZWN0bHkuXG4vLyBJZiB0aGVzZSBhcmUgY2hhbmdlZCwgdGhleSBtdXN0IGFsc28gYmUgdXBkYXRlZCBpbiBhcHAuanNcblxuJGJwLXhzbWFsbDogNDc5cHg7XG4kYnAtc21hbGw6IDU5OXB4O1xuJGJwLW1lZGl1bTogNzcwcHg7XG4kYnAtbGFyZ2U6IDk3OXB4O1xuJGJwLXhsYXJnZTogMTE5OXB4O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhc2UgVmFsdWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3BhY2luZ1xuXG4kZ2FwOiAxMHB4O1xuXG4kdHJpbTogMzBweDtcbi8vIFRoaXMgd2lsbCBnZXQgYXBwbGllZCBvbiB2aWV3cG9ydHMgc21hbGxlciB0aGFuIDQ4MHB4XG4kdHJpbS1zbWFsbDogMTVweDtcblxuLy8gUGFkZGluZyB0aGF0IHdpbGwgZ2V0IGFwcGxpZWQgdG8gY29udGVudCBhcmVhc1xuJGJveC1zcGFjaW5nLWxhcmdlOiAyMHB4O1xuXG4vLyBTdGFuZGFyZCBwYWRkaW5nIGFyb3VuZCBib3ggZWxlbWVudHMgc3VjaCBhcyBiYW5uZXIgbWVzc2FnZXMsIGV0Y1xuJGJveC1zcGFjaW5nOiAxMHB4O1xuXG4vLyBTdGFuZGFyZCBzcGFjaW5nIGJldHdlZW4gZWxlbWVudHMgd2l0aGluIGEgYm94LCBzdWNoIGFzIFwiQWRkIHRvIGNhcnRcIiwgXCJQcmljZSBib3hcIiwgZXRjXG4kZWxlbWVudC1zcGFjaW5nOiA3cHg7XG5cbi8vIERpbWVuc2lvbnNcblxuJG1heC1jb250ZW50LXdpZHRoOiAxMjAwcHg7XG4kbWF4LWNvbnRhaW5lci13aWR0aDogJHRyaW0gKyAkbWF4LWNvbnRlbnQtd2lkdGggKyAkdHJpbTtcbiRtYXgtc3RkLWZvcm1hdHRlZC13aWR0aDogNTBlbTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCcmFuZCBDb2xvcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBVc3VhbGx5IG5vdCB1c2VkIGRpcmVjdGx5IGluIFNhc3MgcGFydGlhbHMuXG4vLyBPbmx5IHVzZWQgdG8gZGVmaW5lIGNvbnRleHQtYmFzZWQgY29sb3IgdmFycyBpbiB0aGlzIGZpbGUuXG5cbiRjLWJsdWU6ICNmZGI4MTM7XG4kYy1ncmVlbjogIzExQjQwMDtcbiRjLXBpbms6ICNEODUzNzg7XG4kYy1vcmFuZ2U6ICNGMzc5M0I7XG4kYy1yZWQ6ICNDRjUwNTA7XG4kYy15ZWxsb3c6ICNGRkREMTU7XG4kYy15ZWxsb3ctZW5uaXM6ICNmZGI4MTM7XG4kYy15ZWxsb3ctZW5uaXMtZGFya2VyOiAjZjdiMzQwO1xuJGMtYmxhY2s6ICMwMDAwMDA7XG4kYy1ibGFjay10ZXh0LWNvbnRhY3Q6ICMwMzAzMDM7XG4kYy1ibGFjay1iZy1tZWdhLW1lbnU6ICMyMDIwMjA7XG4kYy1ncmF5OiAjMzMzMzMzO1xuXG4kcHJpbWFyeS1jb2xvcjogJGMtYmx1ZTtcblx0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhc2UgQ29sb3JzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGV4dFxuXG4kYy10ZXh0OiAjNjM2MzYzO1xuJGMtdGV4dC1ncmF5OiAjQTBBMEEwO1xuJGMtdGV4dC13aGl0ZTogI0U2RTZFNjtcbiRjLXdoaXRlLXRleHQtZm9vdGVyOiAjZmNmY2ZjO1xuJGMtY29weXJpZ2h0LXRleHQ6ICM4Njg1ODQ7XG4vLyBQcmltYXJ5IGZvbnQgY29sb3IgZm9yIGhlYWRpbmdzIGFuZCBvdGhlciBub24tbGluayB0ZXh0XG4kYy10ZXh0LXByaW1hcnk6ICRjLWJsdWU7XG4kYy10ZXh0LWhlYWRlci1saW5rczogI2ZjZmNmYztcbiRjLXRleHQtZm9vdGVyLWhlYWRlcnM6ICRjLXllbGxvdy1lbm5pcztcbiRjLXJlZC1lbm5pczogIzk5MDAwMDtcblxuXG4vLyBJbnRlcmFjdGlvblxuXG4kYy1hY3Rpb246ICRjLWJsdWU7XG4kYy1zdGltdWx1czogZGFya2VuKCRjLWJsdWUsIDE1JSk7XG4kYy1zdWJ0bGU6ICNBMEEwQTA7XG5cbi8vIE5vdGlmaWNhdGlvbnNcblxuJGMtZGFuZ2VyOiAjREYyODBBO1xuJGMtZGFuZ2VyLWJhY2tncm91bmQ6ICNGQUVCRTc7XG5cbiRjLXN1Y2Nlc3M6ICRjLWdyZWVuO1xuJGMtc3VjY2Vzcy1iYWNrZ3JvdW5kOiAjRUZGNUVBO1xuXG4kYy13YXJuOiAjRTI2NzAzO1xuJGMtd2Fybi1iYWNrZ3JvdW5kOiAjRjlFQkU2O1xuXG4kYy1kYXJrOiAjNjc2MTU3O1xuXG4vLyBHbG9iYWwgRWxlbWVudHNcblxuJGMtZGl2aWRlci1ib3JkZXI6ICNFQ0VDRUM7XG4kYy1zZXBhcmF0b3ItaGVhZGVyLWxpbmtzOiAjMzkzOTM5O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVsZW1lbnQgQ29sb3JzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQnV0dG9uc1xuXG4kYy1idXR0b246ICRjLWJsdWU7XG4kYy1idXR0b24taG92ZXI6IGRhcmtlbigkYy1ibHVlLCA1JSk7XG4kYy1idXR0b24tYWN0aXZlOiBkYXJrZW4oJGMtYmx1ZSwgMTAlKTtcblxuLy8gU2Vjb25kYXJ5IEJ1dHRvbnNcblxuJGMtYnV0dG9uLXNlY29uZGFyeTogI0RERERERDtcbiRjLWJ1dHRvbi1zZWNvbmRhcnktaG92ZXI6IGRhcmtlbigjRERERERELCA1JSk7XG4kYy1idXR0b24tc2Vjb25kYXJ5LWFjdGl2ZTogZGFya2VuKCNEREREREQsIDEwJSk7XG5cbiRjLWJ1dHRvbi1zdWJ0bGU6ICNFQ0VDRUM7XG4kYy1idXR0b24tbmV3c2xldHRlcjogJGMteWVsbG93LWVubmlzO1xuJGMtYnV0dG9uLW5ld3NsZXR0ZXItYm9yZGVyOiAkYy15ZWxsb3ctZW5uaXM7XG5cbi8vIEZvcm1zXG5cbiRjLWlucHV0LWJvcmRlcjogI0MwQzBDMDtcbiRjLWlucHV0LWJvcmRlci1mb2N1czogJGMtYmx1ZTtcblxuJGMtaW5wdXQtcGxhY2Vob2xkZXI6ICRjLXRleHQtZ3JheTtcbiRjLWlucHV0LXRleHQ6ICRjLXRleHQ7XG5cbiRjLWZpZWxkc2V0LWJvcmRlcjogI0NDQ0NDQztcbiRjLWZpZWxkc2V0LWJvcmRlci1saWdodDogI0VERURFRDtcblxuXG4vLyBIZWFkaW5nc1xuXG4kYy1oMTogJGMteWVsbG93LWVubmlzLWRhcmtlcjtcbiRjLWgyOiAkYy15ZWxsb3ctZW5uaXMtZGFya2VyO1xuJGMtaDM6ICRjLXllbGxvdy1lbm5pcy1kYXJrZXI7XG4kYy1oNDogJGMteWVsbG93LWVubmlzLWRhcmtlcjtcbiRjLWg1OiAkYy15ZWxsb3ctZW5uaXMtZGFya2VyO1xuJGMtaDY6ICRjLXllbGxvdy1lbm5pcy1kYXJrZXI7XG5cbi8vIExpbmtcbiRjLWxpbms6ICRjLWFjdGlvbjtcbiRjLWxpbmstaG92ZXI6IGRhcmtlbigkYy1hY3Rpb24sIDUlKTtcbiRjLWxpbmstZm9jdXM6ICRjLWFjdGlvbjtcbiRjLWxpbmstYWN0aXZlOiBkYXJrZW4oJGMtYWN0aW9uLCAoNSUgLyAyKSk7XG5cbi8vIE1vZHVsZSAoZ2VuZXJpYylcblxuJGMtbW9kdWxlLWJhY2tncm91bmQ6ICNGNEY0RjQ7XG4kYy1tb2R1bGUtYmFja2dyb3VuZC1ob3Zlcjogc2hhZGUoJGMtbW9kdWxlLWJhY2tncm91bmQsIDMlKTtcbiRjLW1vZHVsZS1iYWNrZ3JvdW5kLXNlY29uZGFyeTogI0VBRjhGRjtcbiRjLW1vZHVsZS1iYWNrZ3JvdW5kLWRhcms6ICNBQUFBQUE7XG4vLyBUaGlzIHNob3VsZCBiZSBhcHBsaWVkIHdoZW5ldmVyIHRoZSBib3JkZXIgaXMgc3Vycm91bmRpbmcgYSB3aGl0ZSBlbGVtZW50IGFuZC9vciBpcyBkaXJlY3RseSBzaG93aW5nIG9uIHdoaXRlLlxuJGMtbW9kdWxlLWJvcmRlcjogI0NDQ0NDQztcbi8vIFRoaXMgc2hvdWxkIGJlIGFwcGxpZWQgd2hlbmV2ZXIgdGhlIGJvcmRlciBpcyB3cmFwcGluZyBhbiBlbGVtZW50IHdpdGggJGMtbW9kdWxlLWJhY2tncm91bmRcbiRjLW1vZHVsZS1ib3JkZXItbGlnaHQ6ICNFREVERUQ7XG4kYy1tb2R1bGUtYm9yZGVyLWRhcms6ICM3Nzc3Nzc7XG4kYy1tb2R1bGUtYm9yZGVyLWhpZ2hsaWdodDogJGMtYmx1ZTtcblxuXG4vLyBUYWJsZVxuXG4kYy10YWJsZS1iYWNrZ3JvdW5kOiAjRjRGNEY0O1xuJGMtdGFibGUtYm9yZGVyOiAjQzBDMEMwO1xuXG4kYy10YWJsZS16ZWJyYS1vZGQ6ICNGOEY3RjU7XG4kYy10YWJsZS16ZWJyYS1ldmVuOiAjRUVFREVEO1xuXG4vLyBUYWJzXG5cbiRjLXRhYnMtYmFja2dyb3VuZDogI0YwRjBGMDtcblxuLy8gRW1haWxcbiRjLWVtYWlsLWJhY2tncm91bmQ6ICNFQkVCRUI7XG4kYy1lbWFpbC1iYWNrZ3JvdW5kLXNlY29uZGFyeTogI0UxRjBGODtcbiRjLWVtYWlsLWJvcmRlcjogI0MzQ0VENDtcbiRjLWVtYWlsLWFjdGlvbjogJGMteWVsbG93LWVubmlzO1xuJGMtZW1haWwtY2VsbDogI0YxRjFGMTtcbiRjLWVtYWlsLWhpZ2hsaWdodGVkLWJhY2tncm91bmQ6ICNGRkZERDk7XG4kYy1lbWFpbC1oaWdobGlnaHRlZC1ib3JkZXI6ICNGRkY3NEM7XG5cblxuLy8gWmVicmEgc3R5bGVcbiRjLXplYnJhLWdyZXk6ICNGNkY2RjY7XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUeXBvZ3JhcGh5XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR29vZ2xlIFdlYiBGb250IHN0eWxlc2hlZXQgaXMgaW5jbHVkZWQgdmlhIGxheW91dCBYTUxcblxuLy8gRm9udCBTdGFja3NcblxuJGYtc3RhY2stc2FuczogJ0xhdG8nLCBzYW5zLXNlcmlmO1xuJGYtc3RhY2stc2VyaWY6ICdMYXRvJywgc2Fucy1zZXJpZjtcbiRmLXN0YWNrLXNwZWNpYWw6ICdMYXRvJywgc2Fucy1zZXJpZjtcblxuJGYtc3RhY2stZGVmYXVsdDogJGYtc3RhY2stc2FucztcblxuLy8gRm9udCBTaXplc1xuXG4kZi1zaXplLXh4bDogMThweDtcbiRmLXNpemUteGw6IDE2cHg7XG4kZi1zaXplLWw6IDE1cHg7XG5cbiRmLXNpemU6IDE0cHg7XG5cbiRmLXNpemUtczogMTNweDtcbiRmLXNpemUteHM6IDEycHg7XG4kZi1zaXplLXh4czogMTFweDtcblxuLy8gQmFzZSBNZWFzdXJlc1xuXG4kYi1saW5lLWhlaWdodDogMS41O1xuJGItbWFyZ2luLWJvdHRvbTogMS41ZW07XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRnVuY3Rpb24gLSBCbGFja1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBmdW5jdGlvbiBibGFjayAoJG9wYWNpdHkpIHtcbiAgICBAcmV0dXJuIHJnYmEoMCwgMCwgMCwgJG9wYWNpdHkpO1xufVxuXG5AZnVuY3Rpb24gYmxhY2stZmFsbGJhY2sgKCRvcGFjaXR5KSB7XG4gICAgQHJldHVybiBsaWdodGVuKCMwMDAwMDAsICgxIC0gJG9wYWNpdHkpKTtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGdW5jdGlvbiAtIFdoaXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGZ1bmN0aW9uIHdoaXRlICgkb3BhY2l0eSkge1xuICAgIEByZXR1cm4gcmdiYSgyNTUsIDI1NSwgMjU1LCAkb3BhY2l0eSk7XG59XG5cbkBmdW5jdGlvbiB3aGl0ZS1mYWxsYmFjayAoJG9wYWNpdHkpIHtcbiAgICBAcmV0dXJuIGRhcmtlbigjRkZGRkZGLCAoMSAtICRvcGFjaXR5KSk7XG59XG4iLCIvKiBcblx0VGhpcyBtaXhpbiBpcyBtZWFudCBmb3IgdXMgdG8gYW5pbWF0aW9uIGluIGVsZW1lbnRzIFxuXHRmcm9tIHRoZSBkaXJlY3Rpb24gb2YgYW4gZWxlbWVudCBvbiB0aGUgcGFnZS5cblx0XG4qL1xuQG1peGluIG1lbnVUb2dnbGUoJG5hbWUsICR5LXBvc2l0aW9uLCAkeC1wb3NpdGlvbikge1xuICBAa2V5ZnJhbWVzICN7JG5hbWV9IHsgICAgIFxuICAgIGZyb20ge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCR5LXBvc2l0aW9uLCAkeC1wb3NpdGlvbikgc2NhbGUoLjIpO1xuICAgIH1cbiAgXG4gICAgdG8ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApIHNjYWxlKDEpO1xuICAgIH1cdFxuICB9XG59IiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1peGluIC0gQnJlYWtwb2ludFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRtcS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuJG1xLWZpeGVkLXZhbHVlOiAxMDI0cHggIWRlZmF1bHQ7XG5cbkBtaXhpbiBicCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gICAgLy8gU2V0IGdsb2JhbCBkZXZpY2UgcGFyYW1cbiAgICAkbWVkaWE6IG9ubHkgc2NyZWVuO1xuXG4gICAgLy8gTWVkaWEgcXVlcmllcyBzdXBwb3J0ZWRcbiAgICBAaWYgJG1xLXN1cHBvcnQgPT0gdHJ1ZSB7XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhfSBhbmQgKCRmZWF0dXJlOiAkdmFsdWUpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWVkaWEgcXVlcmllcyBub3Qgc3VwcG9ydGVkXG4gICAgfSBAZWxzZSB7XG5cbiAgICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4td2lkdGgnIHtcbiAgICAgICAgICAgIEBpZiAkdmFsdWUgPD0gJG1xLWZpeGVkLXZhbHVlIHtcbiAgICAgICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSBpZiAkZmVhdHVyZSA9PSAnbWF4LXdpZHRoJyB7XG4gICAgICAgICAgICBAaWYgJHZhbHVlID49ICRtcS1maXhlZC12YWx1ZSB7XG4gICAgICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLypcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVzYWdlIGV4YW1wbGU6XG4vLyBGb3IgSUUgc2V0ICRtcS1zdXBwb3J0IHRvIGZhbHNlLlxuLy8gU2V0IHRoZSBmaXhlZCB2YWx1ZS5cbi8vIFRoZW4gdXNlIG1peGlucyB0byB0ZXN0IHdoZXRoZXIgc3R5bGVzIHNob3VsZCBiZSBhcHBsaWVkLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kbXEtc3VwcG9ydDogZmFsc2U7XG4kbXEtZml4ZWQtdmFsdWU6IDEwMjQ7XG5cbi8vIFJlbmRlcnMgYXQgZml4ZWQgdmFsdWVcbkBpbmNsdWRlIGJwIChtaW4td2lkdGgsIDMwMHB4KSB7IFxuICAgIGRpdiB7IGNvbG9yOiMwMDA7IH1cbn1cblxuLy8gRG9lc24ndCByZW5kZXIgd2l0aG91dCBNUSBzdXBwb3J0XG5AaW5jbHVkZSBicCAobWluLXdpZHRoLCAxMjAwcHgpIHsgXG4gICAgZGl2IHsgY29sb3I6I0ZGRjsgfVxufVxuXG4vLyBEb2Vzbid0IHJlbmRlciB3aXRob3V0IE1RIHN1cHBvcnRcbkBpbmNsdWRlIGJwIChtYXgtd2lkdGgsIDMwMHB4KSB7IFxuICAgIGRpdiB7IGNvbG9yOiM0NDQ7IH1cbn1cblxuLy8gUmVuZGVycyBhdCBmaXhlZCB2YWx1ZVxuQGluY2x1ZGUgYnAgKG1heC13aWR0aCwgMTIwMHB4KSB7IFxuICAgIGRpdiB7IGNvbG9yOiM4ODg7IH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKi9cblxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1peGluIC0gQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUaGlzIG1peGluIGlzIGludGVuZGVkIHRvIGJlIGFwcGxpZWQgdG8gYW4gOmFmdGVyIHBzZXVkby1jbGFzcy4gRXhhbXBsZTpcbi8vICAmOmFmdGVyIHtcbi8vICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4vLyAgfVxuQG1peGluIGNsZWFyZml4IHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIEltYWdlIFJlcGxhY2VtZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gaHR0cDovL3d3dy56ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50L1xuLy8gaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL2Fub3RoZXItY3NzLWltYWdlLXJlcGxhY2VtZW50LXRlY2huaXF1ZS9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2lzc3Vlcy8xMDA1I2lzc3VlY29tbWVudC00OTQ3NzAyXG5cbkBtaXhpbiBpbWFnZS1yZXBsYWNlbWVudCB7XG4gICAgLy8gTm90ZTogdGhpcyB0ZWNobmlxdWUgaGFzIGlzc3VlcyBvbiBBbmRyb2lkIDMueFxuICAgIC8vIEFuIGFsdGVybmF0aXZlIHRoYXQgcmVxdWlyZXMgdGhlIDpiZWZvcmUgZ2VuZXJhdGVkIGNvbnRlbnQgd2FzIGFkZGVkIHRvIEg1QlBcbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2Jsb2IvbWFzdGVyL2Nzcy9tYWluLmNzc1xuXG4gICAgLy9jb2xvcjp0cmFuc3BhcmVudDsgZm9udDowLzAgYTsgdGV4dC1zaGFkb3c6bm9uZTsgdmVydGljYWwtYWxpZ246bWlkZGxlO1xuXG4gICAgLy8gVGhlIHNpbXBsZXN0IG9wdGlvbiByZW1haW5zIHVzaW5nIHRleHQtaW5kZW50Oi05OTk5cHggZGVzcGl0ZSB0aGUgcGVyZm9ybWFuY2UgZHJhd2JhY2tcbiAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcbn1cblxuLy8gVW5kbyB0aGUgcmVwbGFjZW1lbnQgZm9yIGNoaWxkIGVsZW1lbnRzXG5cbkBtaXhpbiBpbWFnZS1yZXBsYWNlbWVudC1vdmVycmlkZSB7XG4gICAgdGV4dC1pbmRlbnQ6IDA7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWl4aW4gLSBNZW51XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1peGluIG1lbnUge1xuICAgIGJhY2tncm91bmQ6ICNGQkZCRkI7XG4gICAgYm9yZGVyOiBzb2xpZCAxcHggJGMtbW9kdWxlLWJvcmRlcjtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIE5vdCBTZWxlY3RhYmxlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1peGluIG5vdC1zZWxlY3RhYmxlIHtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1vLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1peGluIC0gSWYtUmVzb2x1dGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZyb20gaHR0cDovL2Jsb2cuMTRpc2xhbmRzLmNvbS9wb3N0LzM3MjU5NjAzMjQ2L3Nhc3MtcmVzb2x1dGlvbi1taXhpblxuXG5AbWl4aW4gaWYtbWluLXJlc29sdXRpb24oJGRwcHgpIHtcbiAgICBAaW5jbHVkZSBpZi1yZXNvbHV0aW9uKG1pbiwgJGRwcHgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gaWYtbWF4LXJlc29sdXRpb24oJGRwcHgpIHtcbiAgICBAaW5jbHVkZSBpZi1yZXNvbHV0aW9uKG1heCwgJGRwcHgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5AbWl4aW4gaWYtcmVzb2x1dGlvbigkcHJlZml4LCAkZHBweCkge1xuICAgIC8vIDFweCA9IDk2ZHBpXG4gICAgJGRwaTogJGRwcHggKiA5NjtcbiAgICBAbWVkaWFcbiAgICAoLXdlYmtpdC0jeyRwcmVmaXh9LWRldmljZS1waXhlbC1yYXRpbzogI3skZHBweH0pLFxuICAgICggICAjeyRwcmVmaXh9LS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRkcHB4fSksXG4gICAgKCAgICAgLW8tI3skcHJlZml4fS1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JGRwcHgqMn0vMiksXG4gICAgKCAgICAgICAgI3skcHJlZml4fS1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JGRwcHh9KSxcbiAgICAoICAgICAgICAgICAgICAgICN7JHByZWZpeH0tcmVzb2x1dGlvbjogI3skZHBpfWRwaSksXG4gICAgKCAgICAgICAgICAgICAgICAjeyRwcmVmaXh9LXJlc29sdXRpb246ICN7JGRwcHh9ZHBweCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVzYWdlIGV4YW1wbGU6XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vLy8gUmVuZGVycyBvbiBzY3JlZW5zIHdpdGggPj0gMiByZXNvbHV0aW9uXG4vL0BpbmNsdWRlIGlmLW1pbi1yZXNvbHV0aW9uICgyKSB7XG4vLyAgICBkaXYgeyBjb2xvcjojMDAwOyB9XG4vL31cbi8vXG4vLy8vIFJlbmRlcnMgb24gc2NyZWVucyB3aXRoID49IDEuNSByZXNvbHV0aW9uXG4vL0BpbmNsdWRlIGlmLW1pbi1yZXNvbHV0aW9uICgxLjUpIHtcbi8vICAgIGRpdiB7IGNvbG9yOiMwMDA7IH1cbi8vfVxuLy9cbi8vLy8gUmVuZGVycyBvbiBzY3JlZW5zIHdpdGggPD0gMS41IHJlc29sdXRpb25cbi8vQGluY2x1ZGUgaWYtbWF4LXJlc29sdXRpb24gKDEuNSkge1xuLy8gICAgZGl2IHsgY29sb3I6IzAwMDsgfVxuLy99XG4vL1xuLy8vLyBSZW5kZXJzIG9uIHNjcmVlbnMgd2l0aCA8PSAyIHJlc29sdXRpb25cbi8vQGluY2x1ZGUgaWYtbWF4LXJlc29sdXRpb24gKDIpIHtcbi8vICAgIGRpdiB7IGNvbG9yOiMwMDA7IH1cbi8vfVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuQG1peGluIHRhYnMoKSB7XG4gICAgLnRvZ2dsZS10YWJzIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIG5vdC1zZWxlY3RhYmxlO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwICR0cmltO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTFweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpLmN1cnJlbnQge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcblxuICAgICAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsaS5jdXJyZW50IHNwYW4sXG4gICAgICAgIGxpOmhvdmVyIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gZGwge1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICA+IGR0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRkIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGQuY3VycmVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIGFjY29yZGlvbkR0QmFzZSgkYXJyb3ctZGlyZWN0aW9uOiAnZG93bicsICRib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXIpIHtcbiAgICBAaW5jbHVkZSBoNDtcbiAgICBAaW5jbHVkZSBub3Qtc2VsZWN0YWJsZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgICBwYWRkaW5nOiA3cHggMTBweCA3cHggMjRweDtcbiAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci1jb2xvcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoI3skYXJyb3ctZGlyZWN0aW9ufSwgNHB4LCAkYy1hY3Rpb24pO1xuICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQtaG92ZXI7XG4gICAgfVxufVxuXG5AbWl4aW4gYWNjb3JkaW9uKCkge1xuICAgIC50b2dnbGUtdGFicyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgPiBkbCB7XG4gICAgICAgID4gZHQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYWNjb3JkaW9uRHRCYXNlO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMCAxcHg7XG4gICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICB9XG4gICAgICAgID4gZGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgMXB4IDFweCAxcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBhY2NvcmRpb25Db2xsYXBzZSgpIHtcbiAgICA+IGRsIHtcbiAgICAgICAgPiBkdCB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYubGFzdCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgPiBkZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5hY2NvcmRpb24tb3BlbiB7XG4gICAgICAgID4gZGwge1xuICAgICAgICAgICAgPiBkdCB7XG4gICAgICAgICAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY3VycmVudDphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGRvd24sIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogNnB4O1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gZGQuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWl4aW4gLSBUcmlhbmdsZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtaXhpbiB0cmlhbmdsZSgkZGlyZWN0aW9uOiB1cCwgJHNpemU6IDVweCwgJGNvbG9yOiAjMDAwMDAwKSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXRvcDogJHNpemUgc29saWQgJGNvbG9yO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgICAgYm9yZGVyLXRvcDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItbGVmdDogJHNpemUgc29saWQgJGNvbG9yO1xuICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICAgIGJvcmRlci10b3A6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIFR5cG9ncmFwaHlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWl4aW4gaDEge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjdlbTtcbiAgICBjb2xvcjogJGMtaDE7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgZm9udC1zaXplOiAyOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbn1cblxuQG1peGluIGgyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgY29sb3I6ICRjLWgyO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG59XG5cbkBtaXhpbiBoMyB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgY29sb3I6ICRjLWgzO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkO1xufVxuXG5AbWl4aW4gaDQge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGNvbG9yOiAkYy1oNDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplU3BlZWQ7XG59XG5cbkBtaXhpbiBoNSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgY29sb3I6ICRjLWg1O1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVTcGVlZDtcbn1cblxuQG1peGluIGg2IHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIGNvbG9yOiAkYy1oNjtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplU3BlZWQ7XG59XG5cbkBtaXhpbiBwYWdlVGl0bGUoKSB7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG5AbWl4aW4gbG9hZGluZ092ZXJsYXkoJG9wYWNpdHk6IDAuOCkge1xuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OicnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMHB4O1xuICAgICAgICBsZWZ0OiAwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgICAgIHotaW5kZXg6MjtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvb3BjLWFqYXgtbG9hZGVyLmdpZicpO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIHotaW5kZXg6MztcbiAgICB9XG5cbiAgICAmLmxvYWRpbmcge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvcmUgQXBwbGljYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQnJvd3NlciBSZXNldHNcblxuQGltcG9ydCBcInZlbmRvci9ub3JtYWxpemVcIjtcbkBpbXBvcnQgXCJjb3JlL3Jlc2V0XCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvcmVcblxuQGltcG9ydCBcImNvcmUvY29tbW9uXCI7XG5AaW1wb3J0IFwiY29yZS9mb3JtXCI7XG5AaW1wb3J0IFwiY29yZS90YWJsZVwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBWZW5kb3JcblxuLy8gQGltcG9ydCBcInZlbmRvci9hYmNcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTGF5b3V0XG5cbkBpbXBvcnQgXCJsYXlvdXQvZ2xvYmFsXCI7XG5AaW1wb3J0IFwibGF5b3V0L2hlYWRlclwiO1xuQGltcG9ydCBcImxheW91dC9oZWFkZXItbmF2XCI7XG5AaW1wb3J0IFwibGF5b3V0L2hlYWRlci1zZWFyY2hcIjtcbkBpbXBvcnQgXCJsYXlvdXQvaGVhZGVyLWFjY291bnRcIjtcbkBpbXBvcnQgXCJsYXlvdXQvaGVhZGVyLWNhcnRcIjtcbkBpbXBvcnQgXCJsYXlvdXQvZm9vdGVyXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1vZHVsZXNcblxuLy8gVGhlIHNvcnQgb3JkZXIgaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHR3byByZWFzb25zOlxuLy8gIDEuIFRoZSBjb21waWxlZCBDU1MgbmVlZHMgdG8gYmUgbG9naWNhbGx5IG9yZGVyZWQvZ3JvdXBlZCAoTk9UIGFscGhhYmV0aWNhbGx5IG9yZGVyZWQpXG4vLyAgMi4gU2VsZWN0b3JzIG9mIGVxdWFsIHdlaWdodCBnZXQgYXBwbGllZCBiYXNlZCBvbiB3aGljaCBhcHBlYXJzIGxhc3QgaW4gdGhlIHN0eWxlc2hlZXQsXG4vLyAgICAgc28gd2Ugc2hvdWxkIHRyeSBub3QgdG8gY2hhbmdlIHRoaXMgb3JkZXIgb25jZSBpdCBpcyBpbiBwbGFjZVxuXG5AaW1wb3J0IFwibW9kdWxlL2FuaW1hdGlvbnNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvcHJvZHVjdC1saXN0XCI7XG5AaW1wb3J0IFwibW9kdWxlL2NhbGVuZGFyXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NhdGFsb2ctcHJvZHVjdFwiO1xuQGltcG9ydCBcIm1vZHVsZS9jYXRhbG9nLW1zcnBcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2F0YWxvZy1jb21wYXJlXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NoZWNrb3V0LWNhcnRcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2hlY2tvdXQtb25lcGFnZVwiO1xuQGltcG9ydCBcIm1vZHVsZS9jaGVja291dC1zdWNjZXNzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NvbmZpZ3VyYWJsZXN3YXRjaGVzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2N1c3RvbWVyXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NvbnRhY3RzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2ZpbmQtYS1yZXBcIjtcbkBpbXBvcnQgXCJtb2R1bGUvcGF5cGFsXCI7XG5AaW1wb3J0IFwibW9kdWxlL3Jldmlld1wiO1xuQGltcG9ydCBcIm1vZHVsZS9zbGlkZXNob3dcIjtcbkBpbXBvcnQgXCJtb2R1bGUvd2lzaGxpc3RcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2hlY2tvdXQtY2FydC1taW5pY2FydFwiO1xuQGltcG9ydCBcIm1vZHVsZS9zZWFyY2hcIjtcbkBpbXBvcnQgXCJtb2R1bGUvYWNjb3VudC1yZXZpZXdzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2Ntc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9wcmljaW5nX2NvbmRpdGlvbnNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY29va2llc1wiO1xuQGltcG9ydCBcIm1vZHVsZS90YWdzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NhcHRjaGFcIjtcbkBpbXBvcnQgXCJtb2R1bGUvYWNjb3VudC1vcmRlcnNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvcmVjdXJyaW5nLXByb2ZpbGVzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2JpbGxpbmctYWdyZWVtZW50c1wiO1xuQGltcG9ydCBcIm1vZHVsZS9wb3B1bGFyLXRlcm1zXCI7XG5AaW1wb3J0IFwibW9kdWxlL3dpZGdldFwiO1xuQGltcG9ydCBcIm1vZHVsZS9jaGVja291dC1tdWx0aS1hZGRyZXNzXCI7XG5AaW1wb3J0IFwibW9kdWxlL2ljb25zXCI7XG5AaW1wb3J0IFwibW9kdWxlL3Jlc3BvbnNpdmViYW5uZXJzbGlkZXJcIjtcbkBpbXBvcnQgXCJtb2R1bGUvbmV3c1wiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBPdmVycmlkZVxuQGltcG9ydCBcIm92ZXJyaWRlL3BsdWdpblwiO1xuXG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2Mi4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBDb3JyZWN0cyBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQ29ycmVjdHMgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG52aWRlbyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vKlxuICogUHJldmVudHMgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXG4gKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBoZWlnaHQ6IDA7XG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgc3R5bGluZyBmb3IgYGhpZGRlbmAgYXR0cmlidXRlIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5baGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJhc2VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiAxLiBTZXRzIGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnRzIGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmdcbiAqICAgIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qXG4gKiBSZW1vdmVzIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkcmVzc2VzIGBvdXRsaW5lYCBpbmNvbnNpc3RlbmN5IGJldHdlZW4gQ2hyb21lIGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5hOmZvY3VzIHtcbiAgICBvdXRsaW5lOiB0aGluIGRvdHRlZDtcbn1cblxuLypcbiAqIEltcHJvdmVzIHJlYWRhYmlsaXR5IHdoZW4gZm9jdXNlZCBhbmQgYWxzbyBtb3VzZSBob3ZlcmVkIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUeXBvZ3JhcGh5XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkcmVzc2VzIGBoMWAgZm9udCBzaXplcyB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWAgaW4gRmlyZWZveCA0KyxcbiAqIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxuICovXG5cbmgxIHtcbiAgICBmb250LXNpemU6IDJlbTtcbn1cblxuLypcbiAqIEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOSwgU2FmYXJpIDUsIGFuZCBDaHJvbWUuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKlxuICogQWRkcmVzc2VzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLypcbiAqIEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmYwO1xuICAgIGNvbG9yOiAjMDAwO1xufVxuXG5cbi8qXG4gKiBDb3JyZWN0cyBmb250IGZhbWlseSBzZXQgb2RkbHkgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2VyaWY7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qXG4gKiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBwcmUtZm9ybWF0dGVkIHRleHQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gICAgd2hpdGUtc3BhY2U6IHByZTtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4vKlxuICogU2V0cyBjb25zaXN0ZW50IHF1b3RlIHR5cGVzLlxuICovXG5cbnEge1xuICAgIHF1b3RlczogXCJcXDIwMUNcIiBcIlxcMjAxRFwiIFwiXFwyMDE4XCIgXCJcXDIwMTlcIjtcbn1cblxuLypcbiAqIEFkZHJlc3NlcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICAgIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKlxuICogUHJldmVudHMgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gICAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gICAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIFJlbW92ZXMgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS5cbiAqL1xuXG5pbWcge1xuICAgIGJvcmRlcjogMDtcbn1cblxuLypcbiAqIENvcnJlY3RzIG92ZXJmbG93IGRpc3BsYXllZCBvZGRseSBpbiBJRSA5LlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRmlndXJlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZHJlc3NlcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkgNS5cbiAqL1xuXG5maWd1cmUge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKlxuICogMS4gQ29ycmVjdHMgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cblxubGVnZW5kIHtcbiAgICBib3JkZXI6IDA7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qXG4gKiAxLiBDb3JyZWN0cyBmb250IGZhbWlseSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3RzIGZvbnQgc2l6ZSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy5cbiAqIDMuIEFkZHJlc3NlcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZVxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXG4gICAgZm9udC1zaXplOiAxMDAlOyAvKiAyICovXG4gICAgbWFyZ2luOiAwOyAvKiAzICovXG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdHMgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmVzIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLypcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmlucHV0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKlxuICogMS4gQWRkcmVzc2VzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LlxuICogMi4gUmVtb3ZlcyBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKlxuICogMS4gQWRkcmVzc2VzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLlxuICogMi4gQWRkcmVzc2VzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSA1IGFuZCBDaHJvbWVcbiAqICAgIChpbmNsdWRlIGAtbW96YCB0byBmdXR1cmUtcHJvb2YpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gICAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbi8qXG4gKiBSZW1vdmVzIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSA1IGFuZCBDaHJvbWVcbiAqIG9uIE9TIFguXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLypcbiAqIFJlbW92ZXMgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKlxuICogMS4gUmVtb3ZlcyBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkuXG4gKiAyLiBJbXByb3ZlcyByZWFkYWJpbGl0eSBhbmQgYWxpZ25tZW50IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87IC8qIDEgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvKiAyICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFJlc2V0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4qLFxuKjpiZWZvcmUsXG4qOmFmdGVyIHtcbiAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5odG1sIHtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IGJsYWNrKDApOyAvKiBQcmV2ZW50IHRhcCBoaWdobGlnaHQgb24gaU9TL0FuZHJvaWQgKi9cbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIFByZXZlbnQgYXV0b21hdGljIHNjYWxpbmcgb24gaU9TICovXG59XG5cbmJvZHkge1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgY29sb3I6ICMwMDAwMDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbmh0bWwsXG5ib2R5LFxuaW1nLFxuZmllbGRzZXQsXG5hYmJyLFxuYWNyb255bSB7XG4gICAgYm9yZGVyOiAwO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG50aCxcbmNvZGUsXG5jaXRlLFxuY2FwdGlvbiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuYWRkcmVzcyB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5maWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xufVxuXG5pbWcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxub2wsXG51bCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxucTpiZWZvcmUsXG5xOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbn1cblxuLy8gU3RhbmRhcmQgb3V0bGluZS1vZmZzZXQgaW4gQ2hyb21lIGFuZCBtYWtlIHRoZSBzZWFyY2ggaW5wdXQgc2FtZSBhcyB0ZXh0IGlucHV0XG5pbnB1dDpmb2N1cyxcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMge1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xufVxuXG4vLyBSZXNldHRpbmcgTm9ybWFsaXplIHNvIHRoYXQgc2VhcmNoIGlucHV0cyBiZWhhdmUgdGhlIHNhbWUgYXMgdGV4dCBpbnB1dHNcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLyogMSAqL1xuICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDIgKi9cbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG5AY2hhcnNldCBcIlVURi04XCI7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEJhc2UgU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5ALW1zLXZpZXdwb3J0IHtcbiAgICB3aWR0aDogZGV2aWNlLXdpZHRoO1xufVxuXG5ALW8tdmlld3BvcnQge1xuICAgIHdpZHRoOiBkZXZpY2Utd2lkdGg7XG59XG5cbkB2aWV3cG9ydCB7XG4gICAgd2lkdGg6IGRldmljZS13aWR0aDtcbn1cblxuKiB7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbn1cblxuLy8gUHJldmVudCAzMDBtcyBkZWxheSBpbiBJRSBvbiB0b3VjaCBkZXZpY2VzXG5hLCBidXR0b24ge1xuICAgIC1tcy10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuYm9keSxcbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGFibGUsXG50ZXh0YXJlYSB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkYi1saW5lLWhlaWdodDtcbn1cbi5idXR0b24ge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG5hIHtcbiAgICBjb2xvcjogIzYzNjM2MztcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuYTpob3ZlciB7XG4gICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbmE6Zm9jdXMge1xuICAgIG91dGxpbmUtY29sb3I6ICRjLWxpbmstYWN0aXZlO1xuICAgIGNvbG9yOiBkYXJrZW4oJGMtYWN0aW9uLCAzMCUpO1xufVxuLmJ1dHRvbiB7Y29sb3I6ICNmZmY7fVxub2wsXG51bCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogVHlwb2dyYXBoeVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaDEsIC5oMSB7IFxuICAgIEBpbmNsdWRlIGgxOyBcbiAgICAubmV3cy1pdGVtLWNvbnRlbnQgJiB7ICAgICAgICBcbiAgICAgICAgQGluY2x1ZGUgaDE7IFxuICAgIH1cbn1cblxuaDIsIC5oMiB7IFxuICAgIEBpbmNsdWRlIGgyOyBcbiAgICAvLyAubmV3cy1pdGVtLWNvbnRlbnQgJlxufVxuXG5oMywgLmgzIHsgXG4gICAgQGluY2x1ZGUgaDM7XG4gICAgLm5ld3MtaXRlbS1jb250ZW50ICYgeyAgICAgICAgXG4gICAgICAgIEBpbmNsdWRlIGgzOyBcbiAgICB9XG59XG5cbmg0LCAuaDQgeyBcbiAgICBAaW5jbHVkZSBoNDtcbiAgICAubmV3cy1pdGVtLWNvbnRlbnQgJiB7XG4gICAgICAgIEBpbmNsdWRlIGg0O1xuICAgIH1cbn1cblxuaDUsIC5oNSB7IEBpbmNsdWRlIGg1OyB9XG5cbmg2LCAuaDYgeyBAaW5jbHVkZSBoNjsgfVxuXG5lbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljOyBcbn1cbnN0cm9uZywgYiB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2hhcmVkIENsYXNzZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4udGV4dC11cHBlcntcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuLmFkZHJlc3MtbGlzdCBhZGRyZXNzIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5hdmFpbGFiaWxpdHkge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmF2YWlsYWJpbGl0eSAubGFiZWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5hdmFpbGFiaWxpdHkuaW4tc3RvY2sge1xuICAgIGNvbG9yOiAkYy1zdWNjZXNzO1xufVxuXG4uYXZhaWxhYmlsaXR5LmF2YWlsYWJsZS1zb29uLFxuLmF2YWlsYWJpbGl0eS5vdXQtb2Ytc3RvY2sge1xuICAgIGNvbG9yOiAkYy1kYW5nZXI7XG59XG5cbi5hdmFpbGFiaWxpdHktb25seSB7XG4gICAgY29sb3I6ICRjLWRhbmdlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFBhZ2UgVGl0bGVzXG4gKi9cblxuLnBhZ2UtdGl0bGUgaDEsXG4ucGFnZS10aXRsZSBoMixcbi5wcm9kdWN0LW5hbWUgaDEsXG4ucHJvZHVjdC1uYW1lIC5oMSB7XG4gICAgQGluY2x1ZGUgcGFnZVRpdGxlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBCbG9jayBNb2R1bGVcbiAqL1xuXG4uYmxvY2ssXG4uY29sLWxlZnQtZmlyc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5jb2wtbGVmdC1maXJzdCAuYmxvY2s6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYmxvY2stdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxMHB4IDAgMDtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG5cbiAgICBoMixcbiAgICBoMyxcbiAgICBzdHJvbmcge1xuICAgICAgICBAaW5jbHVkZSBoNDtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LWZvb3Rlci1oZWFkZXJzO1xuICAgIH1cbiAgICBzbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICB9XG59XG5cbi8vIE9uIGFjY291bnQgcGFnZXMsIGRvbid0IHJlbW92ZSB0aGUgdG9wIGJvcmRlciBpbiBvcmRlciB0byBjcmVhdGUgc2VwYXJhdGlvbiBiZXR3ZWVuIGJsb2NrIGFuZCAuYmxvY2stYWNjb3VudFxuYm9keTpub3QoLmN1c3RvbWVyLWFjY291bnQpIC5ibG9jazpmaXJzdC1jaGlsZCAuYmxvY2stdGl0bGUge1xuICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgcGFkZGluZy10b3A6IDA7XG59XG5cbi5ibG9jay1zdWJ0aXRsZSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbn1cblxuLmJsb2NrLWNvbnRlbnQge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbn1cblxuLmJsb2NrLWNvbnRlbnQudW5wYWQge1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi5ibG9jay1jb250ZW50IGxpLml0ZW0ge1xuICAgIG1hcmdpbjogMCAwICRib3gtc3BhY2luZyA5cHg7XG59XG5cbi5ibG9jay1jb250ZW50IGxpLml0ZW06bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmJsb2NrIC5hY3Rpb25zIHtcbiAgICBtYXJnaW46ICRib3gtc3BhY2luZyAwIDA7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbiAgICAuYnV0dG9uIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbn1cblxuLmNvbC1sZWZ0LFxuLmNvbC1yaWdodCB7XG4gICAgLy8gQWxpZ24gdGhlIHZlcnRpY2FsIGhlaWdodCBvZiB0aGUgYW5jaG9yIHRvIGxpbmUgdXAgd2l0aCB0aGUgYnV0dG9uXG4gICAgLmJsb2NrIC5hY3Rpb25zIC5idXR0b24gfiBhIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMzcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAuc2lkZWJhciB7XG4gICAgICAgIC8vIERvbid0IGFwcGx5IHRvIGxheWVyZWQgbmF2LCBzaW5jZSBpdCBnZXRzIHNwZWNpYWwgdHJlYXRtZW50XG4gICAgICAgIC5ibG9jazpub3QoLmJsb2NrLWxheWVyZWQtbmF2KSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAuYmxvY2stdGl0bGUge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgICAgID4gc3Ryb25nIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgYWNjb3JkaW9uRHRCYXNlKCdyaWdodCcsICRjLW1vZHVsZS1ib3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgID4gc3Ryb25nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbkR0QmFzZSgnZG93bicsICRjLW1vZHVsZS1ib3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYmxvY2stY29udGVudCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDFweDtcbiAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIHNlbGVjdG9yIGlzIGhpZ2hseSBmaWNrbGUsIGJlY2F1c2UgaWYgYSBkaXYgZ2V0cyBhZGRlZCBiZW5lYXRoIHRoZSBsYXN0IG5vcm1hbCBibG9jayBpbiBhIHNpZGViYXIsXG4gICAgICAgIC8vIGl0IHdpbGwgYnJlYWsuIEhvd2V2ZXIgaXQgaXMgdGhlIHNpbXBsZXN0IHNvbHV0aW9uIHRvIGFwcGx5aW5nIHRoaXMgdHJpdmlhbCBzdHlsZS5cbiAgICAgICAgLmJsb2NrOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2Vjb25kYXJ5IE5hdmlnYXRpb25cbiAqL1xuXG4uYmxvY2stYWNjb3VudCxcbi5ibG9jay1jbXMtbWVudSB7XG4gICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgIFxuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgbWFyZ2luOiA3cHggMDtcblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICBcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQnV0dG9uc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogU2Vjb25kYXJ5IEJ1dHRvbnMgKi9cbi5jYXJ0IC5idXR0b25zLXNldCAuYnV0dG9uLFxuLmNhcnQtdGFibGUgLmJ1dHRvbixcbi5zaWRlYmFyIC5hY3Rpb25zIC5idXR0b24sXG4uYnV0dG9uLmJ1dHRvbi1zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6ICRjLWJ1dHRvbi1zZWNvbmRhcnk7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgcGFkZGluZzogN3B4IDE1cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYnV0dG9uLXNlY29uZGFyeS1ob3ZlcjtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmU7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmU7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4uc2lkZWJhciAuYWN0aW9ucyBidXR0b24uYnV0dG9uIHtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4vKiBQcmltYXJ5IEJ1dHRvbnMgKi9cblxuLmJ1dHRvbixcbi5jYXJ0LXRhYmxlIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyAuYnV0dG9uLFxuI2NvLXNoaXBwaW5nLW1ldGhvZC1mb3JtIC5idXR0b25zLXNldCAuYnV0dG9uLFxuLmZvb3RlciAuYnV0dG9uLCBhLmJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogJGMtYnV0dG9uO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiA3cHggMTVweDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjb2xvcjogIzYzNjM2MztcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMjVzIGVhc2UtaW4tb3V0O1xuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvOiAkYy1idXR0b24taG92ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1idXR0b24tYWN0aXZlO1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICB9XG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1hY3RpdmU7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgIH1cbn1cblxuYS5idXR0b24ge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzYzNjM2Mztcbn1cblxuYS5idXR0b246aG92ZXIge1xuICAgIGNvbG9yOiAjRkZGRkZGO1xufVxuXG4vKiBEaXNhYmxlZCAtIGNsYXNzIGZvciBhbmNob3IsIHN0YXRlIGZvciBmb3JtIGVsZW1lbnRzICovXG4uYnV0dG9uLmRpc2FibGVkLFxuLmJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogI0M4QzhDODtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogQWRqYWNlbnQgYnV0dG9ucyAqL1xuLmJ1dHRvbiArIC5idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4kaG92ZXItY29sb3IteWVsbG93OiBkYXJrZW4oJGMteWVsbG93LWVubmlzLDEwJSk7XG5cbi5jb250YWN0LXVze1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICBjb2xvcjogJGMtYmxhY2stdGV4dC1jb250YWN0O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIHBhZGRpbmc6IDlweCAyNXB4O1xuICAgIGJvcmRlcjogMCBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRob3Zlci1jb2xvci15ZWxsb3c7XG4gICAgfVxufVxuXG4uZW5uaXMtYnV0dG9uLXNtLCAuZW5uaXMtYnV0dG9uLW1kLCAuZW5uaXMtYnV0dG9uLWxne1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICBjb2xvcjogJGMtYmxhY2stdGV4dC1jb250YWN0O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWNvbG9yLXllbGxvdztcbiAgICAgICAgXG4gICAgfVxufVxuXG4uZW5uaXMtYnV0dG9uLXNte1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBwYWRkaW5nOiA5cHggMjVweDtcbn1cblxuLmVubmlzLWJ1dHRvbi1tZHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgcGFkZGluZzogMTJweCAyOHB4O1xufVxuXG4uZW5uaXMtYnV0dG9uLWxne1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBwYWRkaW5nOiAxNXB4IDMxcHg7XG59XG5cbi8vIFRoaXMgbWl4aW4gZ2V0cyBhcHBsaWVkIHRvIGVsZW1lbnRzIHRoYXQgYXJlIG9ubHkgYnV0dG9ucyBvbiBzbWFydHBob25lcyAob3Igc29tZXRpbWVzIHRhYmxldHMpLCBzdWNoIGFzIGxheWVyZWRcbi8vIG5hdiBsaW5rcyBvciBjaGVja2JveCBsYWJlbHMuXG4vLyBCdWlsZGluZyB0aGlzIGFzIGEgbWl4aW4gKHJhdGhlciB0aGFuIGFuIGV4dGVuZGFibGUgY2xhc3MpIHNpbmNlIGl0IHdpbGwgYmUgaW5jbHVkZWQgd2l0aGluIG1xIGJyZWFrcG9pbnRzLCBhbmRcbi8vIGV4dGVuZGluZyBkb2Vzbid0IHdvcmsgd2l0aGluIG1lZGlhIHF1ZXJpZXM6IGh0dHA6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vZmlsZS5TQVNTX1JFRkVSRU5DRS5odG1sI19pbl9kaXJlY3RpdmVzXG5AbWl4aW4gdG91Y2gtYnV0dG9uIHtcbiAgICBjb2xvcjogJGMtdGV4dDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcbn1cblxuLmJ1dHRvbjIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwIDVweDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5idXR0b24yOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuXG4uYnV0dG9uMiBzcGFuLFxuLmJ1dHRvbjIgc3BhbiBzcGFuIHtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBjb2xvcjogJGMtc3RpbXVsdXM7XG4gICAgfSAgICBcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmNvbDItc2V0IC5idXR0b25zLXNldCB7XG4gICAgICAgIC5idXR0b24sXG4gICAgICAgIC5idXR0b24yIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgICAuYmFjay1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLnJlcXVpcmVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICAuYmFjay1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLnJlcXVpcmVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFBheXBhbCBCdXR0b24gZFxuICovXG5cbi5wYXlwYWwtbG9nby5wYXlwYWwtYWZ0ZXIge1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4ucGF5cGFsLWFmdGVyIC5wYXlwYWwtb3Ige1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4ucGF5cGFsLW9yIHtcbiAgICBsaW5lLWhlaWdodDogMzRweDtcbiAgICBtYXJnaW46IDBweCAxMHB4IDVweDtcbn1cblxuLnBheXBhbC1hZnRlciAucGF5cGFsLWJ1dHRvbiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5wYXlwYWwtYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMHB4O1xufVxuXG4ucGF5cGFsLWJ1dHRvbiBpbWcge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA3NDBweCkge1xuICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICB9XG5cbiAgICAucGF5cGFsLWxvZ28sXG4gICAgLnBheXBhbC1vcixcbiAgICAucGF5cGFsLWJ1dHRvbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEJ1dHRvbiBTZXRzXG4gKi9cblxuLmJ1dHRvbnMtc2V0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBtYXJnaW46ICRib3gtc3BhY2luZyAwIDA7XG4gICAgcGFkZGluZy10b3A6ICRib3gtc3BhY2luZztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgIHAucmVxdWlyZWQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkZ2FwO1xuICAgICAgICBsaW5lLWhlaWdodDogMzNweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgICAuYmFjay1saW5rIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMzcHg7XG4gICAgfVxuICAgIGE6bm90KC5idXR0b24pIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgIH1cbiAgICBidXR0b24uYnV0dG9uIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICBtaW4td2lkdGg6IDE0MHB4O1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEljb25zXG4gKi9cblxuLmljb24tc3ByaXRlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2ljb25fc3ByaXRlLnBuZyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBAaW5jbHVkZSBpbWFnZS1yZXBsYWNlbWVudDtcbn1cblxuQGluY2x1ZGUgaWYtbWluLXJlc29sdXRpb24oMikge1xuICAgIC5pY29uLXNwcml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvaWNvbl9zcHJpdGVAMngucG5nKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDBweCAxMDAwcHg7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBCcmVhZGNydW1ic1xuICovXG5cbi5icmVhZGNydW1icyB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW46IDE1cHggMCAyNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBkb3R0ZWQgJGMtdGV4dC1ncmF5O1xufVxuXG4uYnJlYWRjcnVtYnMgbGkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbn1cblxuLmJyZWFkY3J1bWJzIGEge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGNvbG9yOiAkYy10ZXh0O1xufVxuXG4uYnJlYWRjcnVtYnMgYTpob3ZlciB7XG4gICAgY29sb3I6ICRjLWFjdGlvbjtcbn1cblxuLmJyZWFkY3J1bWJzIHN0cm9uZyB7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuLmJyZWFkY3J1bWJzIHNwYW4ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgN3B4O1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC5icmVhZGNydW1icyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEJ1dHRvbiAtIFJlbW92ZSAvIFByZXZpb3VzXG4gKi9cblxuLmJ0bi1yZW1vdmUsXG4uYnRuLXByZXZpb3VzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIC8qIEhpZGUgdGV4dCAqL1xuICAgIGZvbnQ6IDAvMCBhO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICBib3JkZXItY29sb3I6ICRjLWFjdGlvbjtcbiAgICB9XG59XG5cbi5idG4tcmVtb3ZlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJ1gnO1xuICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBmb250LWZhbWlseTogQXJpYWwsICRmLXN0YWNrLXNhbnM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi5idG4tcmVtb3ZlMiB7XG4gICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgJGljb24tcGFkZGluZzogM3B4O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDRweCAtNjUwcHgrMnB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvLyBBZGRpbmcgdGhpcyBzbyB0aGF0IHRoZSBidXR0b24gd2lsbCBzaG93IGF0IHRoZSB0b3Agb2YgdGhlIGNhcnQgcm93cywgcmF0aGVyIHRoYW4gYXQgdGhlIGJhc2VsaW5lXG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBAaW5jbHVkZSBvcGFjaXR5KDAuOCk7XG4gICAgfVxufVxuXG4uYnRuLXByZXZpb3VzIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUobGVmdCwgNHB4LCAkYy1hY3Rpb24pO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAtNHB4O1xuICAgIH1cbiAgICAmOmhvdmVyOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUobGVmdCwgNHB4LCAjRkZGRkZGKTtcbiAgICB9XG59XG5cbi5ibG9jay1sYXllcmVkLW5hdiAuY3VycmVudGx5LFxuLm1pbmktcHJvZHVjdHMtbGlzdCxcbiNjb21wYXJlLWl0ZW1zIHtcblxuICAgIC5idG4tcmVtb3ZlLFxuICAgIC5idG4tcHJldmlvdXMge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBDaGVja291dCBBZ3JlZW1lbnRzXG4gKi9cblxuLmNoZWNrb3V0LWFncmVlbWVudHMgbGkge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5jaGVja291dC1hZ3JlZW1lbnRzIC5hZ3JlZW1lbnQtY29udGVudCB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtYXgtd2lkdGg6IDY3MHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBDVlYgU2VjdXJpdHkgQ29kZVxuICovXG5cbi5jdnYtd2hhdC1pcy10aGlzIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQ29udGFpbmVyXG4gKi9cbi5tYWluLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyLXRvcDogMXB4ICMwMDAgc29saWQ7XG4gICAgLmN3c1NsaWRlcntcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OTlweCkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNXB4IWltcG9ydGFudDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTE1cHghaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5wYWdlckJlbG93IC5jd3MtcGFnZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3R0b206IDIwcHg7XG4gICAgICAgIHJpZ2h0OiAyMHB4O1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cbiAgICAucGFnZXJCZWxvdyAuY3dzLXBhZ2VyLmNpci1iYXIsIC5wYWdlckJlbG93IC5jd3MtcGFnZXIuc3F1LWJhciB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gICAgLmN3cy1wYWdlciBsaSBhe1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIH1cbiAgICAjYm5yU2xpZGVyLTEge1xuICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4ICM1ZTVlNWUgc29saWQ7XG4gICAgIH1cbiAgICAjYm5yU2xpZGVyLTEgLmN3cy1hcncgYTpiZWZvcmV7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIH1cbiAgICAjYm5yU2xpZGVyLTEgLmN3cy1wYWdlciBhLmN3cy1hY3RpdmV7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICB9XG4gICAgLnNsaWRlciB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCAjMDAwIHNvbGlkO1xuICAgICAgICBcbiAgICB9XG59XG4ubWFpbi1jb250YWluZXIsXG4uZm9vdGVyLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGluaXRpYWw7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMDtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbi5tYXJrZXQtbWVudXtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL21hcmtldC1tZW51LWJnLmpwZykgbm8tcmVwZWF0ICRjLWJsYWNrO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgcGFkZGluZzogMjVweCAwIDUwcHg7XG4gICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlci10b3A6IDEwcHggIzAxMDEwMSBzb2xpZDtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OThweCkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNXB4IWltcG9ydGFudDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTE1cHghaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG4gICAgJiA+IGRpdiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTBweCAwO1xuICAgICAgICBoZWlnaHQ6IDkwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2shaW1wb3J0YW50O1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcblxuICAgICAgICAmID4gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICY6YmVmb3JlIHsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0ZW07XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL21hcmtldC1tZW51LnBuZ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHsgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvbWFya2V0LW1lbnUtYWx0LnBuZ1wiKTtcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vICY6aG92ZXIsXG4gICAgICAgIC8vICY6YWN0aXZlIHtcbiAgICAgICAgLy8gICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9tYXJrZXQtbWVudS1hbHQucG5nXCIpO1xuICAgICAgICAvLyAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgLy8gICAgICYgPiBhIHtcbiAgICAgICAgLy8gICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJiA+IC5nbG9iYWwgYTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMHB4O1xuICAgIH1cbiAgICAmID4gLmdvdmVybm1lbnQgYTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgLTE3MHB4O1xuICAgIH1cbiAgICAmID4gLmNvbnRyYWN0b3JzIGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0zODBweDtcbiAgICB9XG4gICAgJiA+IC5jb21tZXJjaWFsIGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC02MDVweDtcbiAgICB9XG4gICAgJiA+IC5lbmdpbmVlcnMgYTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgLTg0MHB4O1xuICAgIH1cbiAgICAmID4gLmFpcnBvcnRzIGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0xMDYwcHg7XG4gICAgfVxuICAgIFxuICAgIGgyIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhsO1xuICAgIH1cbiAgICAuZ2xvYmFsIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDEwcHg7XG4gICAgfVxuICAgIC5nb3Zlcm5tZW50IHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0xNjBweDtcbiAgICB9XG4gICAgLmNvbnRyYWN0b3Jze1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgLTM3MHB4O1xuICAgIH1cbiAgICAuY29tbWVyY2lhbHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC01OTVweDtcbiAgICB9XG4gICAgLmVuZ2luZWVyc3tcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC04MzBweDtcbiAgICB9XG4gICAgLmFpcnBvcnRze1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgLTEwNTBweDtcbiAgICB9XG4gICAgLmJ0biB7XG4gICAgICAgIGEgeyBjb2xvcjogI2ZkYjgxMzt9XG4gICAgfVxuICAgIG9sLm1lZ2EtZHJvcGRvd24tbWVudSB7XG4gICAgICAgIGxpe1xuICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IC41ZW07XG4gICAgICAgICAgICAgICAgICAgIC5uby1wYWRkaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jb2wtc20tNiwgLmNvbC1tZC02IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAuY29sLXNtLTUsIC5jb2wtbWQtNSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICBcbn1cblxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDQ4MHB4KSB7XG4gICAgLm1haW4tY29udGFpbmVyLFxuICAgIC5mb290ZXItY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSAtIDEpIHtcbiAgICAubWFya2V0LW1lbnUge1xuICAgICAgICBwYWRkaW5nOiAxNXB4IDAgMjBweCAwO1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgNzY4cHgpIHtcbiAgICAubWFya2V0LW1lbnUgPiBkaXYge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgICAgIGZsb2F0OiBub25lIWltcG9ydGFudDtcbiAgICAgICAgJiA+IGEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG4gICAgfSAgXG4gICAgXG59XG5cbi5mb290ZXItY29udGFpbmVyIHtcbiAgICBwYWRkaW5nLXRvcDogMHB4O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBDb2x1bW4gTGF5b3V0c1xuICovXG5cbi5tYWluOmFmdGVyLFxuLmNvbC13cmFwcGVyOmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cbi5tYWlue1xuICAgIC5iYXNTbGlkZXIuZGVmYXVsdFRoZW1le1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICB9XG5cbn1cblxuLmNvbC1sZWZ0LFxuLmNvbC1yaWdodCxcbi5jb2wtbWFpbiB7XG4gICAgcGFkZGluZzogMCAxMHB4O1xufVxuXG4uY29sLWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDI0MHB4Lzk2MHB4KTtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7IC8qIFJlbW92ZSB0aGUgMTVweCBwYWRkaW5nICovXG4gICAgY2xlYXI6IGxlZnQ7XG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uY29sLXJpZ2h0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjQwcHgvOTYwcHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IC8qIFJlbW92ZSB0aGUgMTVweCBwYWRkaW5nICovXG5cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uY29sLW1haW4ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDcyMHB4Lzk2MHB4KTtcbiAgICBtaW4taGVpZ2h0OiA0NTBweDtcbiAgICBcbn1cblxuLmNvbDEtbGF5b3V0IHtcbiAgICAuY29sLW1haW4geyAgICAgICAgXG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgcGFkZGluZzogMCAxNXB4OyBcbiAgICB9XG59XG5cbi5jb2wyLWxlZnQtbGF5b3V0IHtcbiAgICAuY29sLW1haW4ge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7IC8qIFJlbW92ZSB0aGUgMTVweCBwYWRkaW5nICovXG4gICAgfVxufVxuXG4uY29sMi1yaWdodC1sYXlvdXQge1xuICAgIC5jb2wtbWFpbiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDsgLyogUmVtb3ZlIHRoZSAxNXB4IHBhZGRpbmcgKi9cbiAgICB9XG59XG5cbi5jb2wzLWxheW91dCB7XG4gICAgLmNvbC1yaWdodCB7XG4gICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDIwMHB4Lzk2MHB4KTtcbiAgICB9XG5cbiAgICAuY29sLXdyYXBwZXIge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoNzYwcHgvOTYwcHgpO1xuXG4gICAgICAgIC5jb2wtbWFpbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB3aWR0aDogcGVyY2VudGFnZSg1NjBweC83NjBweCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sLWxlZnQge1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjAwcHgvNzYwcHgpO1xuICAgICAgICB9XG4gICAgfVxufVxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAxMDk1cHgpIHtcbiAgICAuY29sLW1haW4ge1xuICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4O1xuICAgICAgICAgICAgfVxufVxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAxMDAwcHgpIHtcbiAgICAuY29sMy1sYXlvdXQge1xuICAgICAgICAuY29sLXJpZ2h0IHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjQwcHgvOTYwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbC13cmFwcGVyIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAuY29sLW1haW4ge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICB3aWR0aDogcGVyY2VudGFnZSg3MjBweC85NjBweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtbGVmdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjQwcHgvOTYwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuY29sLWxlZnQsXG4gICAgLmNvbC1yaWdodCxcbiAgICAuY29sLW1haW4sXG4gICAgLmNvbDEtbGF5b3V0IC5jb2wtbGVmdCxcbiAgICAuY29sMS1sYXlvdXQgLmNvbC1yaWdodCxcbiAgICAuY29sMS1sYXlvdXQgLmNvbC1tYWluLFxuICAgIC5jb2wyLWxlZnQtbGF5b3V0IC5jb2wtbGVmdCxcbiAgICAuY29sMi1sZWZ0LWxheW91dCAuY29sLXJpZ2h0LFxuICAgIC5jb2wyLWxlZnQtbGF5b3V0IC5jb2wtbWFpbixcbiAgICAuY29sMi1yaWdodC1sYXlvdXQgLmNvbC1sZWZ0LFxuICAgIC5jb2wyLXJpZ2h0LWxheW91dCAuY29sLXJpZ2h0LFxuICAgIC5jb2wyLXJpZ2h0LWxheW91dCAuY29sLW1haW4sXG4gICAgLmNvbDMtbGF5b3V0IC5jb2wtd3JhcHBlciAuY29sLWxlZnQsXG4gICAgLmNvbDMtbGF5b3V0IC5jb2wtcmlnaHQsXG4gICAgLmNvbDMtbGF5b3V0IC5jb2wtd3JhcHBlciAuY29sLW1haW4ge1xuICAgICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IC8vIFNpbmNlIGNvbHVtbnMgYXJlIHN0YWNrZWQsIHdlIHdhbnQgdGhlcmUgdG8gYmUgdmVydGljYWwgc3BhY2luZ1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLmNvbDMtbGF5b3V0IC5jb2wtd3JhcHBlciB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG5cbiAgICAuY29sLW1haW4ge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLmNvbC1tYWluIC5jb2wtbGVmdCB7XG4gICAgICAgIHBhZGRpbmc6IDA7IC8qIE9uIHByb2R1Y3QgbGlzdGluZyBwYWdlcywgdGhlIGxlZnQgY29sdW1uIGdldHMgbW92ZWQgaW5zaWRlIGNvbC1tYWluIG9uIHNtYWxsIHZpZXdwb3J0cyAqL1xuICAgIH1cbn1cblxuLyogQ29udGVudCBDb2x1bW5zICovXG5cbi5jb2wyLXNldCB7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuY29sLTEsXG4gICAgLmNvbC0yIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nLWxhcmdlO1xuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbC0xIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICAuY29sLTIge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIC5jb2wtMSxcbiAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5hcnJvdyB7XG4gICAgICAgIHdpZHRoOiAzMyU7XG4gICAgfVxuXG4gICAgLndpZGUge1xuICAgICAgICB3aWR0aDogNjUlO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFRvcCBDb250YWluZXJcbiAqL1xuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC50b3AtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAkbWF4LWNvbnRhaW5lci13aWR0aDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgJHRyaW07XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBHbG9iYWwgU2l0ZSBOb3RpY2VcbiAqL1xuXG4uZ2xvYmFsLXNpdGUtbm90aWNlIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1kYXJrO1xuICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG5cbiAgICAubm90aWNlLWlubmVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMjBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogJG1heC1jb250ZW50LXdpZHRoO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBsaW5lLWhlaWdodDogJGYtc2l6ZS14eHM7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAoNDBweCAtICRmLXNpemUteHhzKSAvIDI7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAoNDBweCAtICRmLXNpemUteHhzKSAvIDI7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2RlbW8tbG9nby5wbmcnKTtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdDtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByb21vdGlvbmFsIE1lc3NhZ2UgQmFubmVyXG4gKi9cblxuLnByb21vLW1zZyB7XG4gICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAkYm94LXNwYWNpbmc7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogR3JpZFxuICovXG5cbi5ncmlkOmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogTWVzc2FnZXNcbiAqL1xuLnN1Y2Nlc3Mge1xuICAgIGNvbG9yOiAkYy1zdWNjZXNzO1xufVxuXG4uZXJyb3Ige1xuICAgIGNvbG9yOiAkYy1kYW5nZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5ub3RpY2Uge1xuICAgIGNvbG9yOiAkYy13YXJuO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBNZXNzYWdlc1xuICovXG5cbi5tZXNzYWdlcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbn1cblxuLm1lc3NhZ2VzIGxpIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIHBhZGRpbmc6IDdweCAxMHB4IDdweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1sO1xufVxuXG4ubWVzc2FnZXMgbGkgbGk6YmVmb3JlIHtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IC02cHg7XG59XG5cbi5tZXNzYWdlcyAuZXJyb3ItbXNnIGxpIHtcbiAgICBjb2xvcjogJGMtYmxhY2s7XG4gICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAkYy1kYW5nZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtZGFuZ2VyLWJhY2tncm91bmQ7XG59XG5cbi5tZXNzYWdlcyAuZXJyb3ItbXNnIGxpOmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDZweCwgJGMtZGFuZ2VyKTtcbn1cblxuLm1lc3NhZ2VzIC5ub3RpY2UtbXNnIGxpIHtcbiAgICBjb2xvcjogJGMtYmxhY2s7XG4gICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAkYy13YXJuO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXdhcm4tYmFja2dyb3VuZDtcbn1cblxuLm1lc3NhZ2VzIC5ub3RpY2UtbXNnIGxpOmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDZweCwgJGMtd2Fybik7XG59XG5cbi5tZXNzYWdlcyAuc3VjY2Vzcy1tc2cgbGkge1xuICAgIGNvbG9yOiAkYy1ibGFjaztcbiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICRjLXN1Y2Nlc3M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtc3VjY2Vzcy1iYWNrZ3JvdW5kO1xufVxuXG4ubWVzc2FnZXMgLnN1Y2Nlc3MtbXNnIGxpOmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDZweCwgJGMtc3VjY2Vzcyk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDkxNXB4KSB7XG5cbiAgICAub3JkZXItbGlzdC1ncmlkIC5jb2wtMSB7XG4gICAgICAgIHdpZHRoOiAzMCU7XG4gICAgfVxuXG4gICAgLm9yZGVyLWxpc3QtZ3JpZCAuY29sLTIge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICAgIH1cblxuICAgIC5vcmRlci1saXN0LWdyaWQgLmNvbC0zIHtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQYWdlIFBvcHVwXG4gKi9cblxuLnBhZ2UtcG9wdXAge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbi5wYWdlLXBvcHVwIGgxIHtcbiAgICBtYXJnaW46IDAgMCAwLjVlbTtcbiAgICBmb250LXNpemU6IDM2cHg7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFBheW1lbnQgTWV0aG9kc1xuICovXG5cbi5wYXltZW50LW1ldGhvZHMge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5wYXltZW50LW1ldGhvZHMgZHQge1xuICAgIHBhZGRpbmc6IDVweCAwO1xufVxuXG4ucGF5bWVudC1tZXRob2RzIGRkIHtcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyAuZm9ybS1saXN0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDVweCAxNXB4IDE1cHg7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xufVxuXG4ucGF5bWVudC1tZXRob2RzIC5mb3JtLWxpc3Q6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSB0cmlhbmdsZSh1cCwgMTBweCwgJGMtbW9kdWxlLWJvcmRlcik7XG4gICAgdG9wOiAtMTFweDtcbiAgICBsZWZ0OiAzMHB4O1xufVxuXG4ucGF5bWVudC1tZXRob2RzIC5mb3JtLWxpc3Q6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHVwLCAxMHB4LCAkYy1tb2R1bGUtYmFja2dyb3VuZCk7XG4gICAgdG9wOiAtMTBweDtcbiAgICBsZWZ0OiAzMHB4O1xufVxuXG4ucGF5bWVudC1tZXRob2RzIC5mb3JtLWxpc3QgbGk6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUGxlYXNlIFdhaXQgKExvYWRpbmcgSW5kaWNhdG9yKVxuICovXG5cbi5wbGVhc2Utd2FpdCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgLyogUHJldmVudCB0aGUgbGluZWJyZWFrIGluIHRoZSBIVE1MIGZyb20gY2F1c2luZyBsYXlvdXQgaXNzdWVzICovXG5cbiAgICBpbWcge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIHdpZHRoOiAyNHB4OyAvLyBBY3R1YWwgaW1hZ2UgaXMgNDhweCwgdGhlcmVieSBzdXBwb3J0aW5nIGhpLXJlcyBzY3JlZW5zXG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcmljZSBCb3ggLSBTdGFuZGFyZFxuICovXG5cbi5wcmljZS1ib3gge1xuICAgIG1hcmdpbjogJGVsZW1lbnQtc3BhY2luZyAwO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xufVxuXG4ucHJpY2UtYm94IHAge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wcmljZS1ub3RpY2Uge1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG59XG5cbi5wcmljZS1ib3ggLnByaWNlIHtcbiAgICBjb2xvcjogJGMtdGV4dC1wcmltYXJ5O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbn1cblxuLnByaWNlLWJveCAucHJpY2UsXG4ucHJpY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xufVxuXG4ucHJpY2UtYm94IC5wcmljZS1sYWJlbCB7XG4gICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xufVxuXG4ucHJpY2UtYm94IC5taW5pbWFsLXByaWNlLWxpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMWVtO1xuICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgZGlzcGxheTogYmxvY2s7IC8qIFdlIHdhbnQgdGhpcyB0byBzaG93IG9uIGl0cyBvd24gbGluZSwgb3RoZXJ3aXNlIHRoZSBsYXlvdXQgbG9va3MgZnVua3kgKi9cblxuICAgIC5sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcmljZSBCb3ggLSBTcGVjaWFsXG4gKi9cblxuLnByaWNlLWJveCAub2xkLXByaWNlLFxuLnByaWNlLWJveCAuc3BlY2lhbC1wcmljZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLnByaWNlLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucHJpY2Uge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4ucHJpY2UtYm94IC5vbGQtcHJpY2Uge1xuICAgIC5wcmljZSB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgIH1cbn1cblxuLnByaWNlLWJveCAuc3BlY2lhbC1wcmljZSB7XG4gICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcblxuICAgIC5wcmljZS1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAjRDg0RDNDO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUHJpY2UgQm94IC0gVGF4ZXNcbiAqL1xuXG4ucHJpY2UtYm94IC5wcmljZS1leGNsdWRpbmctdGF4LFxuLnByaWNlLWJveCAucHJpY2UtaW5jbHVkaW5nLXRheCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbnNwYW4ud2VlZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFRpZXIgUHJpY2VzXG4gKi9cblxuLnByb2R1Y3QtcHJpY2luZyxcbi50aWVyLXByaWNlcyxcbi50aWVyLXByaWNlcy1ncm91cGVkIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAjRkJGNERFO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFMkQ0Qzc7XG4gICAgbWFyZ2luLXRvcDogJGVsZW1lbnQtc3BhY2luZztcblxuICAgIGxpIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgIH1cbiAgICAuYmVuZWZpdCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG4gICAgLnByaWNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBJdGVtIE9wdGlvbnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5pdGVtLW9wdGlvbnMge1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICBkdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnOiAnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMCA2cHg7XG4gICAgfVxufVxuXG4udHJ1bmNhdGVkLFxuLnRydW5jYXRlZCBhLmRvdHMge1xuICAgIGN1cnNvcjogaGVscDtcbn1cblxuLnRydW5jYXRlZCBhLmRldGFpbHMge1xuICAgIGN1cnNvcjogaGVscDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLnRydW5jYXRlZCAudHJ1bmNhdGVkX2Z1bGxfdmFsdWUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi50cnVuY2F0ZWQgLnRydW5jYXRlZF9mdWxsX3ZhbHVlIC5pdGVtLW9wdGlvbnMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDMwMDtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWFjdGlvbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjZGNkY2O1xuICAgIHRvcDogMjFweDtcbiAgICBsZWZ0OiAtMTAwcHg7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsIDdweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgbGVmdDogKDEwMHB4ICsgLTNweCk7XG4gICAgICAgIHRvcDogLTdweDtcbiAgICB9XG59XG5cbi50cnVuY2F0ZWQgLnRydW5jYXRlZF9mdWxsX3ZhbHVlIC5pdGVtLW9wdGlvbnMgPiBwIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLnRydW5jYXRlZCAuc2hvdyAuaXRlbS1vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG5cbiAgICAudHJ1bmNhdGVkIHtcbiAgICAgICAgY3Vyc29yOiBpbmhlcml0O1xuXG4gICAgICAgIGEuZGV0YWlscyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRydW5jYXRlZF9mdWxsX3ZhbHVlIHtcbiAgICAgICAgICAgIC5pdGVtLW9wdGlvbnMge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByaW50ZXIgRnJpZW5kbHkgUGFnZVxuICovXG5cbi5wYWdlLXByaW50IHtcbiAgICB3aWR0aDogNi41aW47XG4gICAgbWFyZ2luOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEFkZCB0byBsaW5rc1xuICovXG5cbi5hZGQtdG8tbGlua3Mge1xuICAgIG1hcmdpbjogJGVsZW1lbnQtc3BhY2luZyAwO1xuXG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogMHB4IDNweCAzcHg7XG4gICAgfVxufVxuXG4uYWRkLXRvLWxpbmtzIC5zZXBhcmF0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByb2R1Y3QgSW1hZ2VcbiAqL1xuXG4ucHJvZHVjdC1pbWFnZSxcbi5uby10b3VjaCAucHJvZHVjdC1pbWctYm94IC5wcm9kdWN0LWltYWdlOm5vdCguem9vbS1hdmFpbGFibGUpOmhvdmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBpbmNsdWRlIGJwIChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICBib2R5IC5wcm9kdWN0LWltZy1ib3ggLnByb2R1Y3QtaW1hZ2U6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgfVxufVxuXG4ubm8tdG91Y2ggLnByb2R1Y3QtaW1hZ2U6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlci1oaWdobGlnaHQ7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFJhdGluZ3NcbiAqL1xuXG4ucmF0aW5ncyB7XG4gICAgbWFyZ2luOiA3cHggMDtcblxuICAgIC5yYXRpbmctYm94LFxuICAgIC5yYXRpbmctbGlua3Mge1xuICAgICAgICBtYXJnaW46IDVweCAwO1xuICAgIH1cblxuICAgIC5yYXRpbmctYm94IHtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIHdpZHRoOiA2NXB4O1xuICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjE1cHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC5yYXRpbmctYm94IC5yYXRpbmcge1xuICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGhlaWdodDogMTNweDtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC02MDBweDtcbiAgICB9XG4gICAgLmFtb3VudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDVweCBhdXRvO1xuICAgIH1cblxuICAgIC5yYXRpbmctbGlua3Mge1xuICAgICAgICAuc2VwYXJhdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByb2R1Y3QgRGV0YWlscyBcblxuICovXG4uZG93bmxvYWQtaXRlbSB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFN0YW5kYXJkIEZvcm1hdHRlZCBUZXh0IEJsb2NrXG4gKi9cblxuLnN0ZCBwIHtcbiAgICBtYXJnaW46IDAgMCAkYi1tYXJnaW4tYm90dG9tO1xufVxuXG4uc3RkIG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsIG91dHNpZGU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGItbWFyZ2luLWJvdHRvbTtcbn1cblxuLnN0ZCBvbCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDJlbTtcbn1cblxuLnN0ZCB1bCB7XG4gICAgbGlzdC1zdHlsZTogZGlzYyBvdXRzaWRlO1xuICAgIG1hcmdpbi1ib3R0b206ICRiLW1hcmdpbi1ib3R0b207XG59XG5cbi5zdGQgbGkge1xuICAgIG1hcmdpbi1sZWZ0OiAyZW07XG59XG5cbi5zdGQgLm5vdGUge1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFRhYnNcbiAqL1xuXG4udGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUb29sYmFyXG4gKi9cblxuLnRvb2xiYXIge1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4IDBweCAxMHB4O1xuICAgIGNsZWFyOiBib3RoO1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbi5wYWdlci1uby10b29sYmFyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG59XG5cbi8vIFRoaXMgd2lsbCBhcHBseSB0byB0aGUgYm90dG9tIHRvb2xiYXJcbi5wYWdlci1uby10b29sYmFyIH4gLnBhZ2VyLW5vLXRvb2xiYXIge1xuICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZztcbn1cblxuLnRvb2xiYXIsXG4ucGFnZXIge1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbn1cbi5wYWdlciB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpIGEge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufSBcbi52aWV3LW1vZGUge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLnRvb2xiYXIgbGFiZWwsXG4ucGFnZXItbm8tdG9vbGJhciBsYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4kdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0OiA4cHg7XG5cbi5zb3J0ZXIge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNvcnRlciA+IC5zb3J0LWJ5IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICAuc29ydC1ieS1zd2l0Y2hlciB7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgfVxuICAgIC5zb3J0LWJ5LXN3aXRjaGVyLS1hc2Mge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwKzRweCAoLTU1MHB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQpO1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4KzRweCAoLTU1MHB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zb3J0LWJ5LXN3aXRjaGVyLS1kZXNjIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCs0cHggKC01NzVweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTBweCs0cHggKC01NzVweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNvcnRlciA+IC52aWV3LW1vZGUge1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIC5ncmlkLFxuICAgIC5saXN0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgIH1cbiAgICAuZ3JpZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0ICgtNTAwcHgrJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCk7XG4gICAgfVxuICAgIHN0cm9uZy5ncmlkLFxuICAgIGEuZ3JpZDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQgKC01MDBweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICB9XG4gICAgLmxpc3Qge1xuICAgICAgICAvLyBXZSB3YW50IHRoZSBpY29uIHRvIGxpbmUgdXAgd2l0aCB0aGUgY29udGFpbmVyIHdpZHRoLCBzbyB3ZSBhcmUgYWRkaW5nIDNweFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KzNweCAoLTUyNXB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQpO1xuICAgIH1cbiAgICBzdHJvbmcubGlzdCxcbiAgICBhLmxpc3Q6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTBweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KzNweCAoLTUyNXB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQpO1xuICAgIH1cbn1cblxuLnBhZ2VyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYgPiAuY291bnQtY29udGFpbmVyIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLmFtb3VudCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgbWFyZ2luOiAwIDE1cHggMCAwO1xuICAgIH1cblxuICAgIC5saW1pdGVyIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG5cbiAgICAgICAgJiA+IGxhYmVsIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJzonO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFtb3VudCxcbiAgICAubGltaXRlcixcbiAgICAucGFnZXMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgfVxuXG59XG5cbi5wYWdlcyB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG5cbiAgICBzdHJvbmcge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLnBhZ2VzIGxpIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cblxuLnBhZ2VzIGEsXG4ucGFnZXMgLmN1cnJlbnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXI6IDA7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAyNXB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG59XG5cbi5wYWdlcyAuY3VycmVudCxcbi5wYWdlcyAuY3VycmVudDpob3ZlciB7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICB3aWR0aDogMzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLnBhZ2VzIC5uZXh0LFxuLnBhZ2VzIC5wcmV2aW91cyB7XG4gICAgLy8gTmV3IEhQNUJQIHRlY2huaXF1ZTogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvY29tbWl0L2FhMDM5NmVhZTc1N2M5ZTAzZGRhNGU0NjNmYjBkNGRiNWE1ZjgyZDdcbiAgICBmb250OiAwLzAgYTtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWFjdGlvbjtcbiAgICB9XG59XG5cbi5wYWdlcyAubmV4dCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgNHB4LCAkYy1hY3Rpb24pO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICB9XG4gICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgNHB4LCAkYy1zdGltdWx1cyk7XG4gICAgfVxufVxuXG4ucGFnZXMgLnByZXZpb3VzIHtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGxlZnQsIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgfVxuICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUobGVmdCwgNHB4LCAkYy1zdGltdWx1cyk7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAvLyBPbmx5IGhpZGUgdGhlIFwiYW1vdW50XCIgZWxlbWVudCBpZiBwYWdlIGhhcyBwYWdpbmF0aW9uIEFORCBpcyBpbnNpZGUgb2YgdG9vbGJhciAoc2luY2Ugd2Ugb25seSB3YW50IGl0IGhpZGluZyBvbiBwcm9kdWN0IGxpc3RpbmcpXG4gICAgLy8gT3RoZXJ3aXNlIHNob3cgdGhlIGFtb3VudCBzaW5jZSB0aGVyZSBpcyBwbGVudHkgb2Ygc3BhY2VcbiAgICAucGFnZXIgLmFtb3VudC0taGFzLXBhZ2VzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucGFnZXMge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAvLyBXaGVuIHRoZXJlIGFyZSA1KyBwYWdlcywgaXQgaXMgaW1wb3J0YW50IHRvIGhpZGUgdGhpcyBsYWJlbCBpbiBvcmRlciB0byBub3QgYnJlYWsgdG8gdGhyZWUgbGluZXNcbiAgICAubGltaXRlciBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAvLyBPbmUgb25lIGNvbHVtbiBsYXlvdXRzLCB0aGUgdG9vbGJhciBkb2Vzbid0IGhhdmUgdG8gYnJlYWsgdW50aWwgYSBzbWFsbGVyIHZpZXdwb3J0XG4gICAgLmNvbDEtbGF5b3V0IHtcbiAgICAgICAgLnNvcnRlcixcbiAgICAgICAgLnBhZ2VyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBhZ2VyIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG5cbiAgICAgICAgICAgIC5wYWdlcyB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb3VudC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcblxuICAgIC5jb2wyLWxlZnQtbGF5b3V0LFxuICAgIC5jb2wyLXJpZ2h0LWxheW91dCxcbiAgICAuY29sMy1sYXlvdXQge1xuICAgICAgICAuc29ydGVyLFxuICAgICAgICAucGFnZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucGFnZXIge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcblxuICAgICAgICAgICAgLnBhZ2VzIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvdW50LWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDEyNzlweCkge1xuXG4gICAgLnRvb2xiYXIgLnZpZXctbW9kZSA+IGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFRheCAtIEZ1bGwgVGF4IFN1bW1hcnlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNjaGVja291dC1yZXZpZXctdGFibGUsXG4jc2hvcHBpbmctY2FydC10b3RhbHMtdGFibGUsXG5ib2R5LmN1c3RvbWVyLWFjY291bnQgLmRhdGEtdGFibGUge1xuICAgIC5zdW1tYXJ5LWNvbGxhcHNlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoZG93biwgN3B4LCAkYy1ibHVlKTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShkb3duLCA3cHgsICRjLXN0aW11bHVzKTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zaG93LWRldGFpbHMge1xuICAgICAgICAuc3VtbWFyeS1jb2xsYXBzZSB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsIDdweCwgJGMtYmx1ZSk7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsIDdweCwgJGMtc3RpbXVsdXMpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBDZW50ZXIgdGhlIGFycm93LCBhcyB0aGUgZm9udCBpcyBsYXJnZXIgaW4gdGZvb3RcbiNzaG9wcGluZy1jYXJ0LXRvdGFscy10YWJsZSB0Zm9vdCB0ZCAuc3VtbWFyeS1jb2xsYXBzZSB7XG4gICAgJjpiZWZvcmUsXG4gICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBNYWdlbnRvIEhlbHBlcnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5hLWNlbnRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYS1yaWdodCxcbi5hbGlnbi1yaWdodCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5uby1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5ub2JyLFxuLm5vd3JhcCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLndpZHRoLWZ1bGwge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDdXN0b20gSGVscGVyc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUHJpbnQgU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucGFnZS1wcmludCAucHJpbnQtaGVhZCB7XG4gICAgbWFyZ2luOiAwIDAgMTVweDtcbn1cblxuLnBhZ2UtcHJpbnQgLnByaW50LWhlYWQgLmxvZ28ge1xuICAgIGZsb2F0OiBub25lO1xuICAgIG1heC1oZWlnaHQ6IDUwcHg7XG4gICAgd2lkdGg6IGF1dG87XG59XG5cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDb21tb24gc3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuaGlkZS1vbi1tb2JpbGV7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5zaG93LW9uLW1vYmlsZXtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC5oaWRlLW9uLW1vYmlsZXtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICAuc2hvdy1vbi1tb2JpbGV7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIGJvZHkgLm1vZGFsLWNvbnRlbnQgLmRyb3Bkb3duLW1lbnV7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5ib2R5e1xuICAgIC5tb2RhbC1jb250ZW50e1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ibGFjaztcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgLmRyb3Bkb3duLW1lbnV7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJsYWNrO1xuICAgICAgICB9XG4gICAgICAgIC5tZWdhLWRyb3Bkb3duLW1lbnUgPiBsaSA+IHVsID4gbGl7XG4gICAgICAgICAgIC8qIGRpc3BsYXk6IGlubGluZS1ibG9jazsqL1xuICAgICAgICB9XG4gICAgICAgIC5tZWdhLWRyb3Bkb3duLW1lbnUgPiBsaSA+IHVsID4gbGkgPiBhe1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgICAgIH1cbiAgICAgICAgLm1lZ2EtZHJvcGRvd24tbWVudTpiZWZvcmUsIC5tZWdhLWRyb3Bkb3duLW1lbnU6YWZ0ZXJ7XG4gICAgICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAubWVnYS1tZW51e1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMCBub25lO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbi5idG4td2FybmluZ3tcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICBjb2xvcjogJGMtYmxhY2s7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgICAgICAgIG91dGxpbmUtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIG91dGxpbmUtY29sb3I6IG5vbmU7XG4gICAgICAgICAgICBvdXRsaW5lLXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAmOmhvdmVye1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy1ibGFjaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidXR0b24uY2xvc2V7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgICAgIH1cbiAgICAgICAgLmJ0bi5mb2N1cywgLmJ0bjpmb2N1cywgLmJ0bjpob3ZlcntcbiAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFplYnJhIHN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnByb2R1Y3QtbW9yZXtcbiAgICBib3JkZXItdG9wOiAycHggZG90dGVkICRjLXplYnJhLWdyZXk7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IGRvdHRlZCAkYy16ZWJyYS1ncmV5O1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICBtYXJnaW46IDEwcHggMDtcbiAgICAucm93LnplYnJhLXN0eWxle1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgcGFkZGluZzogMTVweCAxMHB4O1xuICAgICAgICAmOm50aC1jaGlsZChvZGQpe1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtemVicmEtZ3JleTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubGkgLmdseXBoaWNvbntcbiAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUmVsYXRlZCBQcm9kdWN0cyBTdHlsZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5yZWxhdGVkLXByb2R1Y3RzIHtcbiAgICBtYXJnaW4tdG9wOiA4MHB4O1xuICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cbiAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICAubmFtZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGkge1xuICAgICAgICB3aWR0aDogMzAlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBHZXQgSW5zcGlyZWQgU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaW5zcGlyZS1ncmlkIHtcbiAgICAuZ3JpZC1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICBib3JkZXI6IDFweCAjQzhDOEM4IHNvbGlkO1xuICAgIH1cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICB9XG59XG5cbi8qIGluZGl2aWR1YWwgcHJvamVjdCBwYWdlICovXG5cbi5wcm9qZWN0LXN0b3J5IHtcbiAgICBpbWcge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbiAgICB9XG4gICAgLnllbGxvdyB7XG4gICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICBwLmJvbGRlci10eXBlIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4IWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuN2VtIWltcG9ydGFudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxufVxuLnByb2plY3QtbmF2aWdhdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogNDVweDtcbiAgICBib3JkZXItdG9wOiAycHggZG90dGVkICNhMGEwYTA7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG4gICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgaDIge3RleHQtZGVjb3JhdGlvbjogbm9uZTt9XG4gICAgfVxuICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMWVtO1xuICAgIH1cbiAgICAuY29sLXNtLTMge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbn1cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgLnByb2plY3QtbmF2aWdhdGlvbiB7XG4gICAgICAgIC5jb2wtc20tMyB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyMjBweDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEZPUk1TIC0gQ09NTU9OXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBGaWVsZHNldHNcbiAqL1xuXG4uZmllbGRzZXQge1xuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgfVxuXG4gICAgcC5yZXF1aXJlZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgfVxufVxuXG4uZmllbGRzZXQgKyAuZmllbGRzZXQge1xuICAgIG1hcmdpbi10b3A6ICgkZ2FwIC8gMik7XG59XG5cbmZvcm0gLmxlZ2VuZCB7XG4gICAgQGluY2x1ZGUgaDM7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogN3B4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBJbnB1dCBCb3hcbiAqL1xuXG4uaW5wdXQtYm94IHtcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cblxubGkuY2VudGluZWwtbG9nb3MgZGl2LmlucHV0LWJveCAge1xuICAgIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG59XG5cblxuLyogRm9yIGFkamFjZW50IHNlbGVjdCBpbnB1dHMuICovXG4vKiBFeGFtcGxlOiBjcmVkaXQgY2FyZCBleHBpcmF0aW9uIG1vbnRoIGFuZCB5ZWFyLiAqL1xuLmlucHV0LWJveCAudi1maXgge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogTGFiZWxzXG4gKi9cblxubGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIEBpbmNsdWRlIG5vdC1zZWxlY3RhYmxlO1xufVxuXG5sYWJlbC5yZXF1aXJlZDphZnRlcixcbnNwYW4ucmVxdWlyZWQ6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcgKic7XG4gICAgY29sb3I6ICRjLWRhbmdlcjtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbn1cblxubGFiZWwucmVxdWlyZWQgZW0sXG5zcGFuLnJlcXVpcmVkIGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBIaW50c1xuICovXG5cbi5pbnB1dC1oaW50IHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2VsZWN0XG4gKi9cblxuc2VsZWN0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbnNlbGVjdCArIHNlbGVjdCB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuc2VsZWN0W211bHRpcGxlXSB7XG4gICAgd2lkdGg6IDI3MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWlucHV0LWJvcmRlcjtcbiAgICBmb250LXNpemU6ICRmLXNpemUtbDtcbiAgICBwYWRkaW5nOiA1cHg7XG59XG5cbi5zZWxlY3Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogLjVlbSAxLjVlbTtcbiAgICAvKm1pbi13aWR0aDogMjBlbTsqL1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgNTAlO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQTRBQUFBTUNBWUFBQUJTZ0l6YUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeUpwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNQzFqTURZd0lEWXhMakV6TkRjM055d2dNakF4TUM4d01pOHhNaTB4Tnpvek1qb3dNQ0FnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTlNCTllXTnBiblJ2YzJnaUlIaHRjRTFOT2tsdWMzUmhibU5sU1VROUluaHRjQzVwYVdRNk5EWkZOREV3TmpsR056RkVNVEZGTWtKRVEwVkRSVE0xTjBSQ016TXlNa0lpSUhodGNFMU5Pa1J2WTNWdFpXNTBTVVE5SW5odGNDNWthV1E2TkRaRk5ERXdOa0ZHTnpGRU1URkZNa0pFUTBWRFJUTTFOMFJDTXpNeU1rSWlQaUE4ZUcxd1RVMDZSR1Z5YVhabFpFWnliMjBnYzNSU1pXWTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTmtVME1UQTJOMFkzTVVReE1VVXlRa1JEUlVORk16VTNSRUl6TXpJeVFpSWdjM1JTWldZNlpHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBOa1UwTVRBMk9FWTNNVVF4TVVVeVFrUkRSVU5GTXpVM1JFSXpNekl5UWlJdlBpQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNGdQQzl5WkdZNlVrUkdQaUE4TDNnNmVHMXdiV1YwWVQ0Z1BEOTRjR0ZqYTJWMElHVnVaRDBpY2lJL1B1R3Nnd1FBQUFBNVNVUkJWSGphWXZ6Ly96OERPWUNKZ1V4QWY0Mk1RSXpUazBEL00rS3prUkdQb1FTZHlraUtKckJHcE9oZ0pGWVRXTkVJaUVlQUFBTUF6TkVORU9IK2RvOEFBQUFBU1VWT1JLNUNZSUk9KTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVlbTtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJ2hleSc7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUZXh0YXJlYVxuICovXG5cbnRleHRhcmVhIHtcbiAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogNDUwcHg7XG4gICAgcGFkZGluZzogNXB4O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBJbnB1dHNcbiAqL1xuXG4uaW5wdXQtdGV4dCB7XG4gICAgQGluY2x1ZGUgYXBwZWFyYW5jZShub25lKTtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtaW5wdXQtYm9yZGVyO1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLWw7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIH1cbn1cblxuLmlucHV0LXRleHQudmFsaWRhdGlvbi1mYWlsZWQge1xuICAgIGJvcmRlci1jb2xvcjogJGMtZGFuZ2VyO1xufVxuXG4vLyBDb2xvciB0aGUgb3V0bGluZSBmb3IgZm9jdXNlZCBmaWVsZHMgaW4gQ2hyb21lLCBvciBlbHNlIHRoZSBkZWZhdWx0IGJsdWUgZHJvd25zIG91dCB0aGUgMXB4IHJlZCBib3JkZXJcbi5pbnB1dC10ZXh0LnZhbGlkYXRpb24tZmFpbGVkOmZvY3VzIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB0aW50KCRjLWRhbmdlciwgNTAlKTtcbn1cblxuaW5wdXRbdHlwZT1lbWFpbF0sXG5pbnB1dFt0eXBlPXNlYXJjaF0sXG5pbnB1dFt0eXBlPW51bWJlcl0sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXSxcbmlucHV0W3R5cGU9dGVsXSxcbmlucHV0W3R5cGU9dGV4dF0ge1xuICAgIGhlaWdodDogMzBweDtcbiAgICBwYWRkaW5nOiAwIDhweDtcbn1cblxuaW5wdXRbdHlwZT1lbWFpbF0sXG5pbnB1dFt0eXBlPXNlYXJjaF0sXG5pbnB1dFt0eXBlPW51bWJlcl0sXG5pbnB1dFt0eXBlPXBhc3N3b3JkXSxcbmlucHV0W3R5cGU9dGVsXSxcbmlucHV0W3R5cGU9dGV4dF0ge1xuICAgIHdpZHRoOiAoMjMwcHggKyAxMzVweCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBPbmx5IHNob3cgb24gaVBob25lcyAobm90IGlQYWRzIG9yIGFueSBvdGhlciBkZXZpY2UpICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA1NjhweCkgYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDApIHtcbiAgICBpbnB1dFt0eXBlPWVtYWlsXSxcbiAgICBpbnB1dFt0eXBlPXNlYXJjaF0sXG4gICAgaW5wdXRbdHlwZT1udW1iZXJdLFxuICAgIGlucHV0W3R5cGU9cGFzc3dvcmRdLFxuICAgIGlucHV0W3R5cGU9dGVsXSxcbiAgICBpbnB1dFt0eXBlPXRleHRdLFxuICAgIHNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDsgLyogUHJldmVudCBmcm9tIHpvb21pbmcgb24gZm9jdXMgKi9cbiAgICB9XG59XG5cbi5pZTggLmlucHV0LXRleHQge1xuICAgIG1heC13aWR0aDogbm9uZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogSW5wdXRzIC0gUXVhbnRpdHlcbiAqL1xuXG5pbnB1dFt0eXBlPW51bWJlcl0ucXR5LFxuaW5wdXRbdHlwZT10ZXh0XS5xdHkge1xuICAgIHdpZHRoOiAzZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFBsYWNlaG9sZGVyXG4gKi9cblxuOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJGMtaW5wdXQtcGxhY2Vob2xkZXI7XG59XG5cbmlucHV0Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiAkYy1pbnB1dC1wbGFjZWhvbGRlcjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQ2hlY2tib3ggQW5kIFJhZGlvXG4gKi9cblxuLmNoZWNrYm94LFxuLnJhZGlvIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMXB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmNoZWNrYm94ICsgbGFiZWwsXG4ucmFkaW8gKyBsYWJlbCB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWF4LXdpZHRoOiA4NSU7XG4gICAgcGFkZGluZzogMCAwIDAgOHB4O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFZhbGlkYXRpb25cbiAqL1xuXG5wLnJlcXVpcmVkLFxuLnZhbGlkYXRpb24tYWR2aWNlIHtcbiAgICBtYXJnaW46IDVweCAwIDA7XG4gICAgY29sb3I6ICRjLWRhbmdlcjtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogRm9ybSBMaXN0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZm9ybS1saXN0IHtcblxuICAgICYgPiBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICB9XG4gICAgc2VsZWN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICB3aWR0aDogKDIzMHB4ICsgMTM1cHgpO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmlucHV0LXJhbmdlIC5pbnB1dC10ZXh0IHtcbiAgICAgICAgd2lkdGg6IDc0cHg7XG4gICAgfVxuXG4gICAgLmZpZWxkLFxuICAgIC53aWRlLFxuICAgIC5jb250cm9sIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgIH1cbn1cblxuLyogVHVybiB0aGUgbGFiZWwgb2YgY29udHJvbHMgKHJhZGlvL2NoZWNrYm94KSBpbnRvIGEgYnV0dG9uIHN0eWxlIHRoYXQgd3JhcHMgdGhlIGlucHV0ICovXG4uZm9ybS1saXN0IC5jb250cm9sLFxuLnNwLW1ldGhvZHMgZHQsXG4jY2hlY2tvdXQtc2hpcHBpbmctbWV0aG9kLWxvYWQgLnNwLW1ldGhvZHMgZGQsXG4jY28tc2hpcHBpbmctbWV0aG9kLWZvcm0gLnNwLW1ldGhvZHMgZGQsXG4ucHJvZHVjdC1vcHRpb25zIHVsLm9wdGlvbnMtbGlzdCB7XG5cbiAgICBkaXYuaW5wdXQtYm94IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBmbG9hdDogbGVmdDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dC5yYWRpbyxcbiAgICBpbnB1dC5jaGVja2JveCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC00MHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIHRvdWNoLWJ1dHRvbjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICBtaW4td2lkdGg6IDI1MHB4O1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHggNnB4IDQwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZC1ob3ZlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIFdoZW4gYSBsYWJlbCBpcyBuZXh0IHRvIGFuIGlucHV0IHRoYXQgaXMgc2V0IHRvIG5vdCBkaXNwbGF5LCB3ZSBzaG91bGQgc3R5bGUgdGhlIGxhYmVsIGluIGEgbm9uLWNsaWNrYWJsZSBzdGF0ZSAqL1xuICAgIC5uby1kaXNwbGF5ICsgbGFiZWwge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3QgbGFiZWwsXG4uY29sMi1zZXQgLmZvcm0tbGlzdCAuY29udHJvbCBsYWJlbCB7XG4gICAgbWluLXdpZHRoOiBpbmhlcml0O1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi5mb3JtLWxpc3QgLmNvbnRyb2wucmVtZW1iZXItbWUtYm94IHtcbiAgICBsYWJlbCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIG1pbi13aWR0aDogaW5oZXJpdDtcbiAgICB9XG59XG5cbi5mb3JtLWxpc3QgLmNvbnRyb2wge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbiAgICAucmFkaW8sXG4gICAgLmNoZWNrYm94IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxuICAgIC5pbnB1dC1ib3gge1xuICAgICAgICBjbGVhcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbmZvcm0ge1xuICAgIC5mb3JtLWluc3RydWN0aW9ucyB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICB9XG59XG4ucmVnaXN0ZXJlZC11c2VycyB7XG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdCFpbXBvcnRhbnQ7XG4gICAgICAgIGJ1dHRvbi5idXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmUhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufSIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogVGFibGUgSGVscGVyc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmhpZGUtdGgge1xuICAgIHRleHQtaW5kZW50OiAtOTk5OXB4O1xufVxudGQge3ZlcnRpY2FsLWFsaWduOiB0b3A7fVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogRGF0YSBUYWJsZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmRhdGEtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uZGF0YS10YWJsZSB0ZCxcbi5kYXRhLXRhYmxlIHRoIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi5kYXRhLXRhYmxlIHRoIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy10YWJsZS1iYWNrZ3JvdW5kO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZGF0YS10YWJsZSB0aGVhZCB0aCxcbi5kYXRhLXRhYmxlIHRib2R5IHRkIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtdGFibGUtYm9yZGVyO1xufVxuXG4uZGF0YS10YWJsZSB0Ym9keSB0ZCxcbi5kYXRhLXRhYmxlIHRmb290IHRkIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG59XG5cbi5kYXRhLXRhYmxlIHRmb290IHRyIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy10YWJsZS1iYWNrZ3JvdW5kO1xufVxuXG4uZGF0YS10YWJsZSB0Ym9keSB0ZCAuaXRlbS1vcHRpb25zIHtcbiAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgZHQ6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnOic7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBHZW5lcmljIEluZm8gVGFibGVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5pbmZvLWJveCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtdGFibGUtYm9yZGVyO1xuICAgIHBhZGRpbmc6IDEycHggMTVweDtcbiAgICBtYXJnaW46IDAgMCAxNXB4O1xuXG4gICAgaDIge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgIH1cbn1cblxuLmluZm8tdGFibGUgdGgsXG4uaW5mby10YWJsZSB0ZCB7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLmluZm8tdGFibGUgdGgge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmc6IDRweCAyMHB4IDRweCAwO1xufVxuXG4uaW5mby10YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogNHB4IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFplYnJhLVN0cmlwZSBUYWJsZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnplYnJhLXRhYmxlIHtcbiAgICB0cjpmaXJzdC1jaGlsZCxcbiAgICB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG4gICAgfVxuXG4gICAgdGQsXG4gICAgdGgge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtdGFibGUtYm9yZGVyO1xuICAgICAgICBwYWRkaW5nOiA2cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIHRyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtdGFibGUtemVicmEtZXZlbjtcbiAgICB9XG5cbiAgICB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXRhYmxlLXplYnJhLW9kZDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIExpbmVhcml6ZSBUYWJsZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1peGluIGxpbmVhcml6ZS10YWJsZSB7XG5cbiAgICB0cixcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHRoZWFkIHRoIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG5cbiAgICB0aGVhZCB0aC5saW4taGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgdGhlYWQgdGg6bnRoLWNoaWxkKDFuKzIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICB0Ym9keSB0ciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgfVxuXG4gICAgdGJvZHkgdGQge1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHggNHB4O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgdGJvZHkgdGQubGluLWhpZGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIHRib2R5IHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgfVxuXG4gICAgdGJvZHkgdGQ6Zmlyc3QtY2hpbGQsXG4gICAgdGJvZHkgdGQ6Zmlyc3QtY2hpbGQgaDMge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbiAgICB0Ym9keSB0ZFtkYXRhLXJ3ZC1sYWJlbF0ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG4gICAgfVxuXG4gICAgdGJvZHkgdGRbZGF0YS1yd2QtbGFiZWxdOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1yd2QtbGFiZWwpIFwiOlwiO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgdGZvb3QgdHIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgdGZvb3QgdHI6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeCgpO1xuICAgIH1cblxuICAgIHRmb290IHRkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIHRmb290IHRkLmxpbi1oaWRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICB0Zm9vdCB0ZDpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgzLzUpO1xuICAgIH1cblxuICAgIHRmb290IHRkOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDIvNSk7XG4gICAgfVxuXG4gICAgLyogSGVscGVycyAqL1xuXG4gICAgLmxpbmVhcml6ZS1oaWRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAubGluZWFyaXplLXVucGFkIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubGluZWFyaXplLXNob3cge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5saW5lYXJpemUtdGFibGUge1xuICAgICAgICBAaW5jbHVkZSBsaW5lYXJpemUtdGFibGU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5saW5lYXJpemUtdGFibGUtbGFyZ2Uge1xuICAgICAgICBAaW5jbHVkZSBsaW5lYXJpemUtdGFibGU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1zbWFsbCArIDEpIHtcbiAgICAubGluZWFyaXplLXRhYmxlIC5saW5lYXJpemUtY29sbGFwc2Uge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogR2xvYmFsXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5odG1sLFxuYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ucm93IHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi5tYWluLWNvbnRhaW5lciB7ICAgIFxuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG59XG4uZm9vdGVyLFxuLnBhZ2UtaGVhZGVyLFxuLnRvcC1oZWFkZXItYmFja2dyb3VuZCxcbi5tYWluIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG4uY21zLWhvbWUgLm1haW4ge1xuICAgIG1heC13aWR0aDogbm9uZTtcbn1cblxuLnBhZ2UtaGVhZGVyIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLmhlYWRlci13cmFwcGVyLFxuLmZvb3Rlci1jb250YWluZXIgeyAgICBcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuICAgIGNsZWFyOiBib3RoO1xufVxuLmZvb3Rlci1jb250YWluZXIge1xuICAgIGNsZWFyOiBib3RoOyAgICBcbn1cbi5zaXRlbWFwLCAucHJvZHVjdC1zaXRlbWFwLCAuY21zLXNpdGVtYXAsIC5jbXMtcHJvZHVjdHMtc2l0ZW1hcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAuc2l0ZW1hcC1saW5rIHtcbiAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgICBoMSB7XG4gICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICB1bCBsaSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICAuc2l0ZW1hcC1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zaG93LWluLW1vYmlsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5zaG93LWluLW1vYmlsZSB7ZGlzcGxheTogbm9uZTt9XG59XG5cbi5jb2wtbWFpbiB7XG4gICAgaW1nIHttYXgtd2lkdGg6IDEwMCU7fVxufVxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAudmlkZW9XcmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOyAvKiAxNjo5ICovXG4gICAgICAgIHBhZGRpbmctdG9wOiAyNXB4O1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgaWZyYW1lIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubWFwLWNvbnRhaW5lciB7IFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOyBcbiAgICAgICAgaGVpZ2h0OiAwOyBcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgXG4gICAgICAgIG1heC13aWR0aDogMTAwJTsgXG4gICAgICAgIGlmcmFtZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IFxuICAgICAgICAgICAgdG9wOiAwOyBcbiAgICAgICAgICAgIGxlZnQ6IDA7IFxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7IFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgfSBcbiAgICAubWFpbi1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgIH1cbn1cbi5jbXMtaG9tZSB7XG4gICAgLmNvbDEtbGF5b3V0IHtcbiAgICAgICAuY29sLW1haW57XG4gICAgICAgICBwYWRkaW5nOiAwcHggMHB4O1xuICAgICAgICB9XG4gICAgICAgIC5ob21lLWNvbnRlbnQge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4OyBwYWRkaW5nLXJpZ2h0OiAxNXB4OyBcbiAgICAgICAgfSBcbiAgICB9XG4gICAgXG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ1MHB4KSB7XG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxufVxuXG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEhlYWRlclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgJHRyaW07XG4gICAgfVxuXG4gICAgLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbn1cblxuLmhlYWRlci13cmFwcGVye1xuICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYmctdG9wLWFzcGhhbHQuanBnKSBuby1yZXBlYXQgMTclIDAgc2Nyb2xsICRjLWJsYWNrOyBcbiAgICBib3JkZXItYm90dG9tOiAxcHggIzM1MzUzNSBzb2xpZDtcbiAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICB9XG59XG5cbi5wYWdlLWhlYWRlciB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuI2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA0NXB4O1xuICAgIHRvcDogMDsgXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFRvcCBoZWFkZXIgbGlua3NcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi50b3AtaGVhZGVyLWJhY2tncm91bmQge1xuICAgIHBhZGRpbmc6ICRnYXA7XG4gICAgcGFkZGluZy1yaWdodDogNDVweDtcbiAgICAuaGVhZGVyLWxpbmtze1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1oZWFkZXItbGlua3M7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbGl7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy1zZXBhcmF0b3ItaGVhZGVyLWxpbmtzO1xuICAgICAgICAgICAgYXtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtdGV4dC1oZWFkZXItbGlua3M7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDAgbm9uZTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgICAgICAgICAgICAgYXtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFuZ3VhZ2UsXG4gICAgLmN1cnJlbmN5LXN3aXRjaGVyIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJGdhcDtcbiAgICB9XG5cbiAgICAud2VsY29tZS1tc2cge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxufVxuLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ucGFnZS1oZWFkZXItY29udGFpbmVyIC5zdG9yZS1sYW5ndWFnZS1jb250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXgtd2lkdGg6IDM1JTtcbiAgICBwYWRkaW5nOiAxM3B4IDE1cHggMTBweCAxMHB4O1xuXG4gICAgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICBzZWxlY3Qge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuaGVhZGVyLWxpbmtzIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0OyAgICBcbiAgICAgICAgYSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgIH0gICAgXG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAucGFnZS1oZWFkZXItY29udGFpbmVyIC5zdG9yZS1sYW5ndWFnZS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAvLyBTZXR0aW5nIHRoaXMgZm9udC1zaXplIHdpbGwgY2F1c2luZyB6b29taW5nIG9uIGlPcyBkZXZpY2VzLCBidXQgaXQga2VlcHMgaGVhZGVyIG1vcmUgdGlkeVxuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaGVhZGVyLWxhbmd1YWdlLWJhY2tncm91bmQsXG4uaGVhZGVyLWxhbmd1YWdlLWJhY2tncm91bmQgYSB7XG4gICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLmhlYWRlci1sYW5ndWFnZS1iYWNrZ3JvdW5kIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTG9nb1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmxvZ28ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xcyBlYXNlLWluO1xuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAzNXB4O1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLnNtYWxsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxNDBweDtcbiAgICAgICAgcGFkZGluZzogMWVtIDA7XG4gICAgfVxuICAgIC5sYXJnZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAyNzVweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgIH1cbn1cblxuLmxvZ286aG92ZXIge1xuICAgIG9wYWNpdHk6IDAuODtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgIC5sb2dvIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDI1cHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA5MHB4O1xuXG4gICAgICAgIC5zbWFsbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5sYXJnZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTa2lwIExpbmtzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2tpcC1saW5rcyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBjbGVhcjogYm90aDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRURFREVEO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRURFREVEO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnNraXAtbGlua3Mge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNraXAgLSBMaW5rXG4gKi9cblxuLnNraXAtbGluayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiAyMCU7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIGxpbmUtaGVpZ2h0OiA0MnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuYS5za2lwLWxpbmsge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLnNraXAtbGluazpub3QoLnNraXAtYWN0aXZlKTpob3ZlciB7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAuc2tpcC1saW5rIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0VERURFRDtcbiAgICB9XG5cbiAgICAuc2tpcC1saW5rOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgfVxuXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDUwMHB4KSB7XG5cbiAgICAuc2tpcC1saW5rIHtcbiAgICAgICAgd2lkdGg6IDI1JTtcbiAgICB9XG5cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2tpcCBMaW5rIC0gQWN0aXZlXG4gKi9cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLypcbiAgICAuc2tpcC1saW5rLnNraXAtYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogI0VERURFRDtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLnNraXAtbGluay5za2lwLWFjdGl2ZSBzcGFuIHtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICAgICovXG5cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2tpcCBMaW5rIC0gSWNvblxuICovXG5cbi5za2lwLWxpbmsgLmljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLnNraXAtbGluay5za2lwLW5hdiAuaWNvbixcbi5za2lwLWxpbmsuc2tpcC1jYXJ0Om5vdCgubm8tY291bnQpIC5pY29uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA1MDBweCkge1xuXG4gICAgLnNraXAtbGluayAuaWNvbiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTa2lwIExpbmsgLSBMYWJlbFxuICovXG5cbi5za2lwLWxpbmsgLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA1MDBweCkge1xuXG4gICAgLnNraXAtbGluayAubGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxuXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEdsb2JhbCBIZWFkZXIgTmF2aWdhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmhlYWRlci1tYWluLWxpbmtze1xuICAgIGNvbG9yOiAkYy10ZXh0LWhlYWRlci1saW5rcztcbiAgICBsaXtcbiAgICAgICAgLypkaXNwbGF5OiBpbmxpbmUtYmxvY2shaW1wb3J0YW50OyovXG4gICAgICAgIHBvc2l0aW9uOiBpbmhlcml0O1xuICAgICAgICBhe1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtaGVhZGVyLWxpbmtzO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgfVxuICAgICAgICAmOmxhc3QtY2hpbGR7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDAgbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRvcC1oZWFkZXItY29udGFpbmVyLmxvZy1pbiAubG9naW4tb3B0e1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4udG9wLWhlYWRlci1jb250YWluZXIubG9nLW91dCAubG9nb3V0LW9wdHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2tpcCBDb250ZW50XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2tpcC1jb250ZW50IHtcbiAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uc2tpcC1jb250ZW50LnNraXAtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICAvKmJhY2tncm91bmQ6ICNFREVERUQ7Ki9cbiAgICAuaGVhZGVyLW1haW4tbGlua3Mge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogLjVlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIE1lZ2EgbWVudVxuICovXG4uaGVhZGVyLXdyYXBwZXJ7XG4gICAgLm5hdiAub3Blbj5hLCAubmF2IC5vcGVuPmE6Zm9jdXMsIC5uYXYgLm9wZW4+YTpob3ZlcntcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgfVxuICAgIC5uYXY+bGk+YTpmb2N1cywgLm5hdj5saT5hOmhvdmVye1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG59XG4uc3RkIG9sLCAuc3RkIHVse1xuICAgIGxpc3Qtc3R5bGU6IG5vbmUhaW1wb3J0YW50O1xuICAgIHVsIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5zaG93LWluLW1vYmlsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICNoZWFkZXItbmF2e1xuICAgICAgICAuYnktYnJhbmR7XG4gICAgICAgICAgICBsaXtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB3aWR0aDogNDklO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuYnktY2F0ZWdvcnl7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjLXRleHQtZ3JheTtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLXRleHQtZ3JheTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubWVnYS1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYmxhY2stYmctbWVnYS1tZW51O1xuICAgICAgICB3aWR0aDogOTAlO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMCU7XG4gICAgICAgIGEudGl0bGUge1xuICAgICAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgfVxuICAgICAgICBsaSwgbGkgPiBhIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgICAgIC5ieS11c2UsIC5ieS1icmFuZCB7XG4gICAgICAgICAgIFxuICAgICAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIC5ieS1jYXRlZ29yeXtcbiAgICAgICAgICAgXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1lZ2EtZHJvcGRvd24tbWVudTpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNXB4O1xuICAgICAgICBsZWZ0OiAzNTBweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxuICAgIC5tZWdhLWRyb3Bkb3duLW1lbnU6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItbGVmdDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xN3B4O1xuICAgICAgICBsZWZ0OiAzNTBweDtcbiAgICAgICAgei1pbmRleDogODtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSAtIDEpIHtcbiAgICAvKnV0aWxpdHkgbmF2IGluIG1vYmlsZSovXG4gICAgLnRvcC1oZWFkZXItYmFja2dyb3VuZCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgICAgLmhlYWRlci1saW5rcyB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOCk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4ICMzNTM1MzUgc29saWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAucmlnaHQtbmF2IHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIGxpLmhpZGUtaW4tbW9iaWxlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAudG9wLWhlYWRlci1jb250YWluZXIge1xuICAgICAgICAuc2hvdy1pbi1tb2JpbGUge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0NSU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICAgICAgI3NlYXJjaF9taW5pX2Zvcm0ge1xuICAgICAgICAgICAgICAgICAgICAuc2VhcmNoLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2cHggLTExNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiA4MHB4IDgwMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAjc2VhcmNoIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4ICMzNTM1MzUgc29saWQ7XG4gICAgICAgICAgICB9XG4gICB9XG4gICAgfVxuICAgIFxuICAgIC8qIGhlYWRlciBuYXYgaW4gbW9iaWxlICovXG4gICAgLm5hdi1waWxscz5saStsaSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgICAuaGVhZGVyLW1haW4tbGlua3M+bGl7XG4gICAgICAgIGJvcmRlcjogMXB4ICMwMDAgc29saWQ7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMTMwMzA7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmhlYWRlci1tYWluLWxpbmtzIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4ICM2NzY2NjYgc29saWQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCAjNjc2NjY2IHNvbGlkO1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4ICMwMDAgc29saWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDBweDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubWVnYS1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0b3A6IDE1cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBhLnRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIH1cbiAgICAgICAgbGksIGxpID4gYSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubWVnYS1kcm9wZG93bi1tZW51OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE1cHg7XG4gICAgICAgIGxlZnQ6IDUwcHg7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgIH1cbiAgICAubWVnYS1kcm9wZG93bi1tZW51OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMTdweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTdweDtcbiAgICAgICAgbGVmdDogNTBweDtcbiAgICAgICAgei1pbmRleDogODtcbiAgICB9XG59XG5cbi5kcm9wZG93bi1tZW51e1xuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICAuZHJvcGRvd24tbWVudXtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGw7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbjogMHB4O1xuICAgIH1cbn1cblxuLmRyb3B1cCAuZHJvcGRvd24tbWVudXtcbiAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICAmOmhvdmVye1xuICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICB9XG4gICAgLmJ0bi1ncm91cHtcbiAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcblxuICAgICAgICAmOmhvdmVye1xuICAgICAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgfVxuICAgIH1cbiAgICAuYnRuOmhvdmVye1xuICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgIH1cbiAgICBidXR0b24uYnRuLXdhcm5pbmd7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgY29sb3I6ICRjLWJsYWNrO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBvdXRsaW5lLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIG91dGxpbmUtY29sb3I6IG5vbmU7XG4gICAgICAgIG91dGxpbmUtd2lkdGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAmOmhvdmVye1xuICAgICAgICAgICAgY29sb3I6ICRjLWJsYWNrO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zY3JvbGwtYXJlYXtcbiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIFxuICAgIH1cbn1cbi5zdGQge1xuICAgIC5zY3JvbGwtYXJlYSB7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luOiAwIWltcG9ydGFudDtcbiAgICAgICAgIH1cbiAgICB9XG59XG4uZHJvcGRvd24tbWVudS1lbmdpbmVlcnMgLmRyb3Bkb3duLW1lbnUsIC5kcm9wZG93bi1tZW51LWFpcnBvcnRzIC5kcm9wZG93bi1tZW51LCAuZHJvcGRvd24tbWVudS1jb21tZXJjaWFsIC5kcm9wZG93bi1tZW51LCAuZHJvcGRvd24tbWVudS1jb250cmFjdG9ycyAuZHJvcGRvd24tbWVudSwgLmRyb3Bkb3duLW1lbnUtZ292ZXJubWVudCAuZHJvcGRvd24tbWVudSwgLmRyb3Bkb3duLW1lbnUtZ2xvYmFsIC5kcm9wZG93bi1tZW51LCAuZHJvcGRvd24tbWVudS1lbmdpbmVlcnMgLmRyb3Bkb3duLW1lbnV7XG4gICAgYm9yZGVyLXRvcDogMCBub25lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC5yb3d7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgXG4gICAgLmJ5LXVzZT5hLCAuYnktY2F0ZWdvcnk+YSwgLmJ5LWJyYW5kPmF7XG4gICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJQcm9kdWN0cyBcIjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuYnktdXNlLCAuYnktYnJhbmQge1xuICAgICAgICB3aWR0aDogNDAlO1xuICAgICAgICAmPmErdWwgbGl7XG4gICAgICAgICAgICB3aWR0aDogNDklO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5ieS1jYXRlZ29yeXtcbiAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLXRleHQtZ3JheTtcbiAgICB9XG4gICAgYXtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXMgLSAxO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmRyb3Bkb3duLW1lbnV7XG4gICAgICAgIHBhZGRpbmc6IDJlbSAuMjVlbSA0ZW07XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZW5naW5lZXJze1xuICAgICAgICB3aWR0aDogNTAwJTtcbiAgICAgICAgbGVmdDogLTMwMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiAyOCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDI4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1haXJwb3J0c3tcbiAgICAgICAgd2lkdGg6IDUwMCU7XG4gICAgICAgIGxlZnQ6IC00MTAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogOCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDglO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWNvbW1lcmNpYWx7XG4gICAgICAgIHdpZHRoOiA1MDAlO1xuICAgICAgICBsZWZ0OiAtMjAwJTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDQ4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXJ7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTdweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE3cHg7XG4gICAgICAgICAgICByaWdodDogNDglO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWNvbnRyYWN0b3Jze1xuICAgICAgICB3aWR0aDogNTAwJTtcbiAgICAgICAgbGVmdDogLTEwMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiA2OCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDY4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1nb3Zlcm5tZW50e1xuICAgICAgICB3aWR0aDogNTAwJTtcbiAgICAgICAgbGVmdDogMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiA4OCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDg4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1nbG9iYWx7XG4gICAgICAgIHdpZHRoOiA1MDAlO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG59XG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0gLSAxKSB7XG4gICAgLmRyb3Bkb3duLW1lbnV7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1lbmdpbmVlcnN7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAtNzUlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogNDQlO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiA0NCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtYWlycG9ydHN7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAtMTc1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtY29tbWVyY2lhbHtcbiAgICAgICAgd2lkdGg6IDI1MCU7XG4gICAgICAgIGxlZnQ6IDI1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgbGVmdDogMCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgbGVmdDogMCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtY29udHJhY3RvcnN7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAtMTc1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZ292ZXJubWVudHtcbiAgICAgICAgd2lkdGg6IDI1MCU7XG4gICAgICAgIGxlZnQ6IC03NSU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiA0NCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDQ0JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1nbG9iYWx7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAyNSU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wZG93bi1tZW51e1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJsYWNrLWJnLW1lZ2EtbWVudTtcbn1cbi5uYXZiYXItbmF2ID4gbGkgPiAuZHJvcGRvd24tbWVudSB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5uYXZiYXItZGVmYXVsdCAubmF2YmFyLW5hdiA+IGxpID4gYSB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm1lZ2EtZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJTtcbn1cbi5tZWdhLWRyb3Bkb3duLW1lbnUge1xuICAgIHBhZGRpbmc6IDIwcHggMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xufVxuXG4ubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgPiB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG59XG4ubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgPiB1bCA+IGxpIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm1lZ2EtZHJvcGRvd24tbWVudSA+IGxpID4gdWwgPiBsaSA+IGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4O1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDI5O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG4ubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgdWwgPiBsaSA+IGE6aG92ZXIsXG4ubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgdWwgPiBsaSA+IGE6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xufVxuLm1lZ2EtZHJvcGRvd24tbWVudSAuZHJvcGRvd24taGVhZGVyIHtcbiAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5tZWdhLWRyb3Bkb3duLW1lbnUgZm9ybSB7XG4gICAgbWFyZ2luOiAzcHggMjBweDtcbn1cbi5tZWdhLWRyb3Bkb3duLW1lbnUgLmZvcm0tZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbn1cblxuXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIExpbmtcblxuXG4gICAgI2hlYWRlci1hY2NvdW50IGxpIGEsXG4gICAgLm5hdi1wcmltYXJ5IGEubGV2ZWwwIHtcbiAgICAgICAgcGFkZGluZzogMCAxNXB4IDAgMjVweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICB9XG5cbiAgICAjaGVhZGVyLWFjY291bnQgbGk6bGFzdC1jaGlsZCBhLFxuICAgIC5uYXYtcHJpbWFyeSBsaS5sZXZlbDA6bGFzdC1jaGlsZCBhLmxldmVsMCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLm5vLXRvdWNoICNoZWFkZXItYWNjb3VudCBhOmhvdmVyLFxuICAgIC5uby10b3VjaCAubmF2LXByaW1hcnkgYTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG59XG5cbi5hY2NvdW50LWNhcnQtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDowcHg7XG4gICAgcmlnaHQ6MHB4O1xuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBOYXYgLSBTa2lwIExpbmtcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5za2lwLW5hdiB7XG4gICAgd2lkdGg6IDQwJTtcblxuICAgICY6bm90KC5za2lwLWFjdGl2ZSk6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHgrNHB4ICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2tpcC1uYXYgLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5za2lwLW5hdiAuaWNvbiB7XG4gICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCs0cHggKCR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQvMik7XG59XG5cbi5oZWFkZXItbWFpbi1saW5rcyB7XG4gICAgYSB7dGV4dC1kZWNvcmF0aW9uOm5vbmU7fVxuICAgIC5tZWdhLW1lbnUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZm9udC1zaXplOiAuOWVtO1xuICAgICAgICBsaSB7ICAgICAgICAgICAgXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgbWF4LWhlaWdodDogaW5pdGlhbDtcbiAgICAgICAgfSAgICAgICAgXG4gICAgfVxuICAgIFxufVxuLmRyb3Bkb3duW3N0eWxlXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrIWltcG9ydGFudDtcbn1cbi8vIERvZXNuJ3QgcmVuZGVyIHdpdGhvdXQgTVEgc3VwcG9ydFxuQGluY2x1ZGUgYnAgKG1heC13aWR0aCwgMzgwcHgpIHsgXG4gICAgLmhlYWRlci1tYWluLWxpbmtzIHtcbiAgICAubWVnYS1tZW51IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgfVxuICAgIFxufVxufVxuXG5cbi5kcm9wZG93bi1tZW51IHtcbiAgICAub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogbWVnYVRvZ2dsZSAuMnMgZWFzZS1pbjtcbiAgICB9XG4gICAgLmdsb2JhbC5vcGVuID4gJiB7ICAgICAgICBcbiAgICAgICAgYW5pbWF0aW9uOiBnbG9iYWxUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5nb3Zlcm5tZW50Lm9wZW4gPiAmIHsgICAgICAgIFxuICAgICAgICBhbmltYXRpb246IGdvdmVybm1lbnRUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5jb250cmFjdG9ycy5vcGVuID4gJiB7ICAgICAgICBcbiAgICAgICAgYW5pbWF0aW9uOiBjb250cmFjdG9yc1RvZ2dsZSAuMnMgZWFzZS1pbjtcbiAgICB9XG4gICAgLmNvbW1lcmNpYWwub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogY29tbWVyY2lhbFRvZ2dsZSAuMnMgZWFzZS1pbjtcbiAgICB9XG4gICAgLmVuZ2luZWVycy5vcGVuID4gJiB7ICAgICAgICBcbiAgICAgICAgYW5pbWF0aW9uOiBlbmdpbmVlcnNUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5haXJwb3J0cy5vcGVuID4gJiB7ICAgICAgICBcbiAgICAgICAgYW5pbWF0aW9uOiBhaXJwb3J0c1RvZ2dsZSAuMnMgZWFzZS1pbjtcbiAgICB9XG59XG4ubW9kYWwtb3BlbiAubW9kYWwge1xuICAgIG92ZXJmbG93OiBzY3JvbGw7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgNTAwcHgpIHtcblxuICAgIC5za2lwLW5hdiB7XG4gICAgICAgIHdpZHRoOiAyNSU7XG4gICAgfVxuXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAuc2tpcC1uYXYge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBOYXYgLSBTa2lwIENvbnRlbnRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgI2hlYWRlci1uYXYge1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICB9XG5cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgICNoZWFkZXItbmF2IHtcbiAgICAgICAgLypib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDsqL1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRvcDogNzBweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMDBweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgLyogbWF4LXdpZHRoOiA3NjhweDsqL1xuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBOYXYgUHJpbWFyeVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC5uYXYtcHJpbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBHZW5lcmFsIE5hdmlnYXRpb24gU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4kbmF2LXByaW1hcnktaGVpZ2h0OiAzMHB4O1xuXG4ubmF2LXByaW1hcnkge1xuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICBsaW5lLWhlaWdodDogJG5hdi1wcmltYXJ5LWhlaWdodDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG4gICAgbGkubGV2ZWwxIGEge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICB9XG59XG5cbi8vIFNob3cgc3ViLW1lbnVzIHdoZW4gSlMgYWRkcyB0aGUgYXBwcm9wcmlhdGUgY2xhc3Nlc1xuLm5hdi1wcmltYXJ5IC5tZW51LWFjdGl2ZSA+IHVsLmxldmVsMCxcbi5uYXYtcHJpbWFyeSBsaS5sZXZlbDAgbGkuc3ViLW1lbnUtYWN0aXZlID4gdWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubmF2LXByaW1hcnkgbGkubGV2ZWwwID4gYSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU21hbGwgVmlld3BvcnRzIC0gQWNjb3JkaW9uIFN0eWxlIE1lbnVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5oZWFkZXItbWFpbi1saW5rcyB7XG4gICAgICAgIC5tZWdhLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAubmF2LXByaW1hcnkge1xuXG4gICAgICAgIC8vIEluY3JlYXNlIGNsaWNrYWJsZSBhcmVhIG9mIGFuY2hvcnMgZm9yIHNtYWxsIHZpZXdwb3J0c1xuICAgICAgICBhLmxldmVsMCxcbiAgICAgICAgYSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogJG5hdi1wcmltYXJ5LWhlaWdodCArIDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhpZGUgYWxsIHN1Yi1tZW51c1xuICAgICAgICBsaS5sZXZlbDAgdWwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluZGVudCBzdWItbWVudXNcbiAgICAgICAgbGkubGV2ZWwwIGxpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDI1cHg7XG4gICAgICAgIH1cblxuICAgICAgICBsaS5sZXZlbDEgYSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHggMCAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkucGFyZW50ID4gYTphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgNXB4LCAjY2NjKTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1lbnUgYWN0aXZlIHN0YXRlc1xuICAgICAgICBsaS5wYXJlbnQuc3ViLW1lbnUtYWN0aXZlID4gYTphZnRlcixcbiAgICAgICAgbGkucGFyZW50Lm1lbnUtYWN0aXZlID4gYTphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShkb3duLCA1cHgsICNjY2MpO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkubWVudS1hY3RpdmUgPiBhLFxuICAgICAgICBsaS5zdWItbWVudS1hY3RpdmUgPiBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIExhcmdlIFZpZXdwb3J0cyAtIERyb3Bkb3duIE1lbnVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgIC5uYXYtcHJpbWFyeSB7XG5cbiAgICAgICAgYS5sZXZlbDAge1xuICAgICAgICAgICAgcGFkZGluZzogMCAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkubGV2ZWwwLFxuICAgICAgICBhLmxldmVsMCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBsaTpsYXN0LWNoaWxkID4gYSB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgYTpob3ZlcixcbiAgICAgICAgbGk6aG92ZXIgPiBhIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICAubWVudS1hY3RpdmUge1xuICAgICAgICAgICAgei1pbmRleDogMjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogRGVmYXVsdCBzdHlsZXMgZm9yIDErIGRyb3AtZG93biBtZW51cyAqL1xuICAgICAgICBsaS5sZXZlbDAgdWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWVudTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB0b3A6ICRuYXYtcHJpbWFyeS1oZWlnaHQ7IC8qIEhlaWdodCBvZiBcIi5uYXYtcHJpbWFyeSBhLmxldmVsMFwiICovXG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLyogSGlkZSB1bnRpbCBkaXNwbGF5ZWQuICovXG4gICAgICAgIH1cblxuICAgICAgICAvKiBMZXZlbCAyKyAqL1xuICAgICAgICBsaS5sZXZlbDEgdWwge1xuICAgICAgICAgICAgbGVmdDogNjBweDtcbiAgICAgICAgICAgIHRvcDogMTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIENsYXNzIGZvciBqcyB0byBhZGQgYnJpZWZseSB0byBldmFsdWF0ZSBlbGVtZW50IHBvc2l0aW9uaW5nLiAqL1xuICAgICAgICBsaS5sZXZlbDAgdWwubGV2ZWwwLnBvc2l0aW9uLXRlc3Qge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBDb3JyZWN0IG1lbnVzIHRoYXQgd2lsbCBoYW5nIG9mZiB0aGUgcGFnZSAoY2xhc3MgYWRkZWQgYnkganMpICovXG4gICAgICAgIGxpLmxldmVsMCB1bC5sZXZlbDAuc3BpbGwge1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBsZWZ0OiBhdXRvO1xuXG4gICAgICAgICAgICAvLyBTdWItbWVudSBkcm9wIGRvd24gdG8gdGhlIGxlZnRcbiAgICAgICAgICAgIGxpLmxldmVsMSB1bCB7XG4gICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICByaWdodDogNTBweDtcbiAgICAgICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBMZXZlbCAxKyAqL1xuICAgICAgICBsaS5sZXZlbDAgbGkucGFyZW50ID4gYSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA0cHgsICNjY2MpO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5hdi1wcmltYXJ5IGxpLm1lbnUtYWN0aXZlIHtcbiAgICA+IHVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4ucmlnaHQtbmF2IHtcbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMzVzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDVweCAxMHB4O1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO2NvbG9yOiAjZmZmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDEwcHggOHB4O1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlciB1bCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTBweDtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk5OTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNkcm9wLW5hdjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cblxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTZWFyY2ggLSBTa2lwIExpbmtcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5za2lwLXNlYXJjaCB7XG5cbiAgICAmOm5vdCguc2tpcC1hY3RpdmUpOmhvdmVyIHtcbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwKzRweCAoLTE1MHB4ICsgKCR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQvMikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmljb24ge1xuICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCs0cHggKC0xNTBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpKTtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAuc2tpcC1zZWFyY2gge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTZWFyY2ggLSBTa2lwIENvbnRlbnRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNoZWFkZXItc2VhcmNoIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgI2hlYWRlci1zZWFyY2gge1xuICAgICAgICBkaXNwbGF5OiBibG9jazsgLy8gRm9yY2UgdmlzaWJpbGl0eVxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNjVweDtcbiAgICAgICAgcmlnaHQ6IDQwcHg7XG4gICAgICAgIHdpZHRoOiAxNSU7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICB6LWluZGV4OiAyMDtcbiAgICB9XG5cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtIC0gMSkge1xuICAgICNoZWFkZXItc2VhcmNoIHtkaXNwbGF5OiBub25lO30gXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNlYXJjaCBJbnB1dFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuI3NlYXJjaF9taW5pX2Zvcm0gLmlucHV0LWJveCwgXG4jc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgLmlucHV0LWJveCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctdG9wOiAwO1xufVxuXG4jc2VhcmNoX21pbmlfZm9ybSBsYWJlbCwgXG4jc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgbGFiZWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNzZWFyY2gsICNzZWFyY2gyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZy1yaWdodDogNDBweDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ibGFjaztcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgb3V0bGluZS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIH1cblxuICAgICY6LW1vei1wbGFjZWhvbGRlciB7IC8qIEZpcmVmb3ggMTgtICovXG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIH1cblxuICAgICY6Oi1tb3otcGxhY2Vob2xkZXIgeyAgLyogRmlyZWZveCAxOSsgKi9cbiAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgfVxuXG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICB9XG59XG5cblxuI3NlYXJjaF9taW5pX2Zvcm0gLnNlYXJjaC1idXR0b24sICNzZWFyY2hfbWluaV9mb3JtX21vYmlsZSAuc2VhcmNoLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgaW1hZ2UtcmVwbGFjZW1lbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogN3B4O1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICMzOTM5Mzk7XG59XG5cbiNzZWFyY2hfbWluaV9mb3JtIC5zZWFyY2gtYnV0dG9uOmJlZm9yZSwgXG4jc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgLnNlYXJjaC1idXR0b246YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBtYXJnaW4tdG9wOiAtMTVweDtcbiAgICBtYXJnaW4tbGVmdDogLTE1cHg7XG4gICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCs0cHggKC0xNTBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpKTtcbn1cblxuI3NlYXJjaF9taW5pX2Zvcm0gLnNlYXJjaC1idXR0b246aG92ZXI6YmVmb3JlLCBcbiNzZWFyY2hfbWluaV9mb3JtX21vYmlsZSAuc2VhcmNoLWJ1dHRvbjpob3ZlcjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDAuODtcbn1cblxuI3NlYXJjaF9taW5pX2Zvcm0gLnNlYXJjaC1idXR0b246YWN0aXZlOmJlZm9yZSwgXG4jc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgLnNlYXJjaC1idXR0b246YWN0aXZlOmJlZm9yZSB7XG4gICAgbWFyZ2luLXRvcDogLTE1cHggKyAycHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4ICsgMnB4O1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBIZWFkZXIgLSBBY2NvdW50XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTa2lwIExpbmsgLSBBY2NvdW50XG4gKi9cblxuLnNraXAtYWNjb3VudCB7XG5cbiAgICAmOm5vdCguc2tpcC1hY3RpdmUpOmhvdmVyIHtcbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHgrNHB4ICgtNTBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpICsgMnB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0wcHgrNHB4ICgtNTBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpICsgMnB4KTtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAuc2tpcC1hY2NvdW50IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICAuc2tpcC1hY2NvdW50OmhvdmVyIHtcbiAgICB9XG5cbiAgICAjaGVhZGVyLWFjY291bnQuc2tpcC1hY3RpdmUge1xuICAgICAgICBAaW5jbHVkZSBtZW51O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAyMDA7XG4gICAgICAgIHRvcDogNDBweDtcbiAgICAgICAgcmlnaHQ6IDExNXB4O1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgfVxuXG4gICAgI2hlYWRlci1hY2NvdW50IGEge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICBsaW5lLWhlaWdodDogMjtcbiAgICB9XG5cbiAgICAjaGVhZGVyLWFjY291bnQgYTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEFjY291bnQgTGlua3NcbiAqL1xuXG4jaGVhZGVyLWFjY291bnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgcGFkZGluZzogNXB4IDA7XG59XG5cbiNoZWFkZXItYWNjb3VudCBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6MjNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbiNoZWFkZXItYWNjb3VudCBhOmhvdmVyIHtcbiAgICBjb2xvcjogJGMtYWN0aW9uO1xufVxuXG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEhlYWRlciAtIENhcnRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNraXAgTGluayAtIENhcnRcbiAqL1xuXG4uc2tpcC1jYXJ0IHtcbiAgICAmOm5vdCguc2tpcC1hY3RpdmUpOmhvdmVyIHtcbiAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHggKC0xMDBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpICsgMXB4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0wcHggKC0xMDBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpICsgMXB4KTtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAuc2tpcC1jYXJ0IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICB9XG5cbiAgICAuc2tpcC1jYXJ0OmhvdmVyIHtcbiAgICB9XG5cbiAgICAjaGVhZGVyLWNhcnQuc2tpcC1hY3RpdmUge1xuICAgICAgICBAaW5jbHVkZSBtZW51O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAyMDA7XG4gICAgICAgIHRvcDogNDBweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNraXAgQ2FydCBOb3RpZmllclxuICovXG5cbi5za2lwLWNhcnQgLmNvdW50IHtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDEycHgpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0b3A6IC02cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDU7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoJGMtYWN0aW9uLCAwLjkpO1xuICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xufVxuLnNraXAtbGluay5za2lwLWFjdGl2ZSAuY291bnQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLy8gVXNpbmcgZXh0cmEgLnNraXAtbGluayBzZWxlY3RvciB0byBpbmNyZWFzZSBzcGVjaWZpY2l0eVxuLnNraXAtbGluay5za2lwLWNhcnQgLmNvdW50IHtcbn1cblxuLnNraXAtY2FydC5uby1jb3VudCAuY291bnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNDk5cHgpIHtcbiAgICAuc2tpcC1jYXJ0IC5jb3VudCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMTJweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAuc2tpcC1jYXJ0IHtcbiAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb3VudCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDBweCk7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcoJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcpJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2tpcC1jYXJ0IC5jb3VudCxcbiAgICAuc2tpcC1saW5rLnNraXAtYWN0aXZlIC5jb3VudCB7XG4gICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgfVxufVxuXG4uc2tpcC1jYXJ0IC5jb3VudC5lbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogTWluaSBDYXJ0IC0gRW1wdHlcbiAqL1xuXG4uY2FydC1tZW51IC5lbXB0eSB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIE1pbmkgQ2FydCAtIEZ1bGxcbiAqL1xuXG4vKiBBY3Rpb25zICovXG5cbi5jYXJ0LW1lbnUgLmFjdGlvbnMge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZzogMTVweDtcbn1cblxuLmNhcnQtbWVudSAuYWN0aW9ucyAuYnV0dG9uIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogNDglO1xufVxuXG4uY2FydC1tZW51IC5hY3Rpb25zIC5idXR0b24gKyAuYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNCU7XG59XG5cbi8qIFN1YnRvdGFsICovXG5cbi5jYXJ0LW1lbnUgLnN1YnRvdGFsIHtcbiAgICBwYWRkaW5nOiAwIDE1cHggMTVweDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLyogTGlzdCAqL1xuXG4ubWluaS1jYXJ0LWxpc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLm1pbmktY2FydC1saXN0IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogKDE1cHggKyA2MHB4ICsgMTVweCk7XG4gICAgcGFkZGluZzogMTVweCAxNXB4IDE1cHggKDE1cHggKyA2MHB4ICsgMTVweCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgbGluZS1oZWlnaHQ6IDEuMzU7XG59XG5cbi5taW5pLWNhcnQtbGlzdCAucHJvZHVjdC1uYW1lIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5taW5pLWNhcnQtbGlzdCAucHJvZHVjdC1pbWFnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDE1cHg7XG4gICAgdG9wOiAxNXB4O1xufVxuXG4ubWluaS1jYXJ0LWxpc3QgLnByb2R1Y3QtaW1hZ2UgaW1nIHtcbiAgICB3aWR0aDogNjBweDtcbiAgICBoZWlnaHQ6IDYwcHg7XG59XG5cbi8vLm1pbmktY2FydC1saXN0IC5kZXRhaWxzIHsgfVxuXG4ubWluaS1jYXJ0LWxpc3QgLmhhcy1vcHRpb25zIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xufVxuXG4vKiBUb28gZnVsbCAtIGFkZGl0aW9uYWwgaXRlbXMgd2lsbCBiZSBzaG93biBpbiBjYXJ0ICovXG4uY2FydC1tZW51IC5sYXN0LWFkZGVkIHtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHggMTVweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogRm9vdGVyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBGb290ZXJcbiAqL1xuXG4uZm9vdGVyLFxuLmZvb3RlciBidXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xufVxuXG4uZm9vdGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogNmVtIDFlbSAyZW07XG4gICAgbWFyZ2luLXRvcDogM2VtO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2JnLWZvb3Rlci1hc3BoYWx0LmpwZykgbm8tcmVwZWF0IDEwMCUgMCBzY3JvbGwgJGMtYmxhY2s7XG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkdHJpbS1zbWFsbDtcbiAgICB9XG5cbiAgICAuYmxvY2stdGl0bGUge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItdG9wOiAwIG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDNweCAwO1xuICAgIH1cblxuICAgIC5ibG9jay10aXRsZSBzdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgfVxuXG4gICAgLmJsb2NrLXRpdGxlLFxuICAgIGFkZHJlc3Mge1xuICAgICAgICBjb2xvcjogJGMtY29weXJpZ2h0LXRleHQ7XG4gICAgfVxuICAgIC5mb290ZXIge1xuICAgICAgICAubGlua3Mge1xuICAgICAgICAgICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBhIHtjb2xvcjogJGMtY29weXJpZ2h0LXRleHQ7fVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5saW5rcy1zb2NpYWwtbWVkaWF7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHN0cm9uZ3tcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgICAgICAgIFxuICAgICAgICB1bCBsaXtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgIC5pY29uLXRleHQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAuaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAuMjVlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cbiAgICAubGlua3Mtc29jaWFsLW1lZGlhLmxpbmtzLnNvY2lhbC1tZWRpYXtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuICAgIC5waG9uZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICB9XG4gICAgLmNvcHlyaWdodC1saW5rc3tcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGxpe1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYXtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtY29weXJpZ2h0LXRleHQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy1jb3B5cmlnaHQtdGV4dDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saW5rcyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHggMCAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4MHB4O1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtd2hpdGUtdGV4dC1mb290ZXI7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmxpbmtzLm5ld3NsZXR0ZXJ7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7Ly9jYW4gZGVsZXRlIHRoaXMgbGluZSB3aGVuIHdhbnQgdG8gZW5hYmxlLlxuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAuaW5wdXQtYm94LCAuYWN0aW9uc3tcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgICAgICBwe1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVlbTtcbiAgICAgICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG4gICAgICAgIGlucHV0e1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYmxhY2s7XG4gICAgICAgICAgICB3aWR0aDogMTYwcHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbntcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1uZXdzbGV0dGVyO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtYnV0dG9uLW5ld3NsZXR0ZXItYm9yZGVyO1xuICAgICAgICAgICAgY29sb3I6ICRjLXdoaXRlLXRleHQtZm9vdGVyO1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDE1cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgY29sb3I6ICMwMDA7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAkaG92ZXItY29sb3I6IGRhcmtlbigkYy1idXR0b24tbmV3c2xldHRlciwgMTAlKTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkaG92ZXItY29sb3I7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmxvY2stc3Vic2NyaWJlIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB3aWR0aDogMzIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltO1xuICAgIH1cblxuICAgIC5saW5rcyxcbiAgICAuYmxvY2stc3Vic2NyaWJlIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBjb2xvcjogJGMtd2hpdGUtdGV4dC1mb290ZXI7XG4gICAgfVxuXG4gICAgLmZvcm0tc3Vic2NyaWJlLWhlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICAgICAqIFNvY2lhbCBpY29uc1xuICAgICAqL1xuICAgIC5saW5rcy5zb2NpYWwtbWVkaWEgYXtcbiAgICAgICAgZm9udC1zaXplOiAwO1xuICAgIH1cbiAgICAubGlua3Muc29jaWFsLW1lZGlhIGVtIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDdweDtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9zb2NpYWxfdGhlbWUuanBnKSBuby1yZXBlYXQgMCAwIHNjcm9sbCAkYy1ibGFjaztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICAmLmdvb2dsZXBsdXN7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0yOHB4O1xuICAgICAgICB9XG4gICAgICAgICYudHdpdHRlcntcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTU2cHg7XG4gICAgICAgIH1cbiAgICAgICAgJi5mYWNlYm9va3tcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTg0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLmJsb2NrLXN1YnNjcmliZSAuaW5wdXQtYm94IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDIxMHB4LzMyMHB4KTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuXG4gICAgLmJsb2NrLXN1YnNjcmliZSAuaW5wdXQtdGV4dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCk7XG4gICAgfVxuXG4gICAgLmJsb2NrLXN1YnNjcmliZSAuYmxvY2stY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiA3cHg7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ibG9jay1zdWJzY3JpYmUgLmFjdGlvbnMge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMTEwcHgvMzIwcHgpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmJsb2NrLXN1YnNjcmliZSAuYWN0aW9ucyAuYnV0dG9uIHtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTdweDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLmJ1Z3MsXG4gICAgYWRkcmVzcyB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgIC5idWdzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuZm9ybS1sYW5ndWFnZSxcbiAgICAuY3VycmVuY3ktc3dpdGNoZXIsXG4gICAgLnN0b3JlLXN3aXRjaGVyIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFuZ3VhZ2UsXG4gICAgLmN1cnJlbmN5LXN3aXRjaGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBhZGRyZXNzIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4cztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgMCAwIDE1cHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmNvcHlyaWdodC13cmFwcGVye1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhsYXJnZSkge1xuICAgICAgICAkbGlua3MtdHJpbTogcGVyY2VudGFnZSgzMHB4IC8gOTYwcHgpO1xuICAgICAgICAkbGlua3Mtd2lkdGg6ICgxMDAgLSAoJGxpbmtzLXRyaW0gKiAzKSkgLyA0O1xuXG4gICAgICAgIC5saW5rcyB7XG4gICAgICAgICAgICB3aWR0aDogJGxpbmtzLXdpZHRoO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGxpbmtzLXRyaW07XG4gICAgICAgIH1cblxuICAgICAgICAubGlua3M6bnRoLWNoaWxkKDQpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jay1zdWJzY3JpYmUge1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICR0cmltIGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgLmZvcm0tbGFuZ3VhZ2UsXG4gICAgICAgIC5jdXJyZW5jeS1zd2l0Y2hlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgICAgICRsaW5rcy10cmltOiBwZXJjZW50YWdlKDE1cHggLyA0ODBweCk7XG4gICAgICAgICRsaW5rcy13aWR0aDogKDEwMCAtICRsaW5rcy10cmltKSAvIDI7XG4gICAgICAgIC5jb250YWN0LXVze1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgfVxuICAgICAgICAuZm9vdGVyIHtcbiAgICAgICAgICAgIC5saW5rcyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmxpbmtzIHB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yOyBcbiAgICAgICAgfVxuICAgICAgICAubGlua3Mge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzZW07XG4gICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5saW5rcy5uZXdzbGV0dGVye1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAubGlua3M6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbGlua3MtdHJpbTtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJsb2NrLXN1YnNjcmliZSB7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm5ld3NsZXR0ZXIge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNGVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbiIsIi8qIFRoaXMgZmlsZSByZW5kZXJlZCBNaWNrZXkgKi9cbkBpbmNsdWRlIG1lbnVUb2dnbGUoZ2xvYmFsVG9nZ2xlLCAtNDAlLCA1MCUpO1xuQGluY2x1ZGUgbWVudVRvZ2dsZShnb3Zlcm5tZW50VG9nZ2xlLCAtMzAlLCA1MCUpO1xuQGluY2x1ZGUgbWVudVRvZ2dsZShjb250cmFjdG9yc1RvZ2dsZSwgLTE1JSwgNTAlKTtcbkBpbmNsdWRlIG1lbnVUb2dnbGUoY29tbWVyY2lhbFRvZ2dsZSwgNSUsIDUwJSk7XG5AaW5jbHVkZSBtZW51VG9nZ2xlKGVuZ2luZWVyc1RvZ2dsZSwgMjUlLCA1MCUpO1xuQGluY2x1ZGUgbWVudVRvZ2dsZShhaXJwb3J0c1RvZ2dsZSwgNDAlLCA1MCUpO1xuQGluY2x1ZGUgbWVudVRvZ2dsZShtZWdhVG9nZ2xlLCAtMTUlLCAtNDAlKTsiLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogR2VuZXJhbCBQcm9kdWN0IExpc3QgU3R5bGVzIChub3QgbW9kdWxlLXNwZWNpZmljKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcm9kdWN0IExpc3QgR2VuZXJhbFxuICovXG5cblxuLy8gUHJldmVudCBidXR0b24gb3ZlcmxhcHBpbmcgd2hlbiBidXR0b25zIGhhdmUgbG9uZyB0ZXh0LCBzdWNoIGFzIG5vbi1FbmdsaXNoIHRyYW5zbGF0aW9uc1xuLnByb2R1Y3RzLWxpc3QgLmFjdGlvbiAuYnV0dG9uLFxuLnByb2R1Y3RzLWdyaWQgLmFjdGlvbnMgLmJ1dHRvbiB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUHJvZHVjdCBOYW1lXG4gKi9cblxuaDIucHJvZHVjdC1uYW1lLFxuaDMucHJvZHVjdC1uYW1lLFxuaDQucHJvZHVjdC1uYW1lLFxuaDUucHJvZHVjdC1uYW1lLFxucC5wcm9kdWN0LW5hbWUge1xuICAgIEBpbmNsdWRlIGgyO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJvZHVjdHMtZ3JpZCAucHJvZHVjdC1uYW1lLFxuLnByb2R1Y3RzLWxpc3QgLnByb2R1Y3QtbmFtZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcblxuICAgIGEge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBQcm9kdWN0IEdyaWRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nOiAyMHB4O1xuXG4ucHJvZHVjdHMtZ3JpZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucHJvZHVjdHMtZ3JpZDphZnRlciB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi5wcm9kdWN0cy1ncmlkID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAkcHJvZHVjdC1jb2x1bW4tc3BhY2luZztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4ucHJvZHVjdHMtZ3JpZCAucHJvZHVjdC1pbWFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtaW1hZ2UgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAmOmhpZGRlbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4ud2lkZ2V0LW5ldy1wcm9kdWN0cyB7XG4gICAgLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICB3aWR0aDogNzUlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgIH1cbn1cblxuLy8gSWYgdGhlIGhlaWdodCBvZiB0aGUgLnByb2R1Y3QtaW5mbyBlbGVtZW50IGNoYW5nZXMsIHRoaXMgdmFsdWUgc2hvdWxkIGJlIGFkanVzdGVkXG4kcHJvZHVjdHNHcmlkQWN0aW9uSGVpZ2h0OiA4NXB4O1xuXG4ucHJvZHVjdHMtZ3JpZCAucHJvZHVjdC1pbmZvIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZy1ib3R0b206ICRwcm9kdWN0c0dyaWRBY3Rpb25IZWlnaHQgKyAxMHB4O1xufVxuXG4ucHJvZHVjdHMtZ3JpZCAuYWN0aW9ucyB7XG4gICAgcGFkZGluZy10b3A6ICRib3gtc3BhY2luZztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgbWluLWhlaWdodDogJHByb2R1Y3RzR3JpZEFjdGlvbkhlaWdodDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLnJhdGluZ3MgLnJhdGluZy1ib3gge1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4ucHJvZHVjdHMtZ3JpZCAucmF0aW5ncyAuYW1vdW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucHJvZHVjdHMtZ3JpZCAucHJpY2UtYm94IHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIG1hcmdpbjogMCAwIDVweDtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLmFkZC10by1saW5rcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qIENvbmZpZzogVHdvIGNvbHVtbnMgKyBmbGV4aWJsZSBndXR0ZXIgKi9cblxuLy8gQ29udGFpbmVyOiA0ODAgLSAoMiAqIDIwIHRyaW0pID0gNDQwXG4vLyBNYXRoOiAoNDQwIC0gKDIwIGd1dHRlcikpIC8gMiBpdGVtcyA9IDIxMFxuXG4ucHJvZHVjdHMtZ3JpZCA+IGxpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSgyMTAgLyA0NDApO1xuICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgyMCAvIDQ0MCk7XG59XG5cbi5wcm9kdWN0cy1ncmlkID4gbGk6bnRoLWNoaWxkKG9kZCkge1xuICAgIGNsZWFyOiBsZWZ0O1xufVxuXG4ucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZChldmVuKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4ucHJvZHVjdHMtZ3JpZCAucHJvZHVjdC1pbWFnZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gICAgQGluY2x1ZGUgbG9hZGluZ092ZXJsYXkoKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLXhzbWFsbCArIDEpIHtcbiAgICAvKiBDb25maWc6IFRocmVlIGNvbHVtbnMgKyBmbGV4aWJsZSBndXR0ZXIgKi9cbiAgICAvLyBDb250YWluZXI6IDYwMCAtICgyICogMzAgdHJpbSB3aWRlKSA9IDU0MFxuICAgICRjb2x1bW4tY291bnQ6IDM7XG4gICAgJGNvbHVtbi1ndXR0ZXJzOiAyO1xuICAgICRjb250YWluZXI6IDYwMCAtICgyICogJHRyaW0pO1xuXG4gICAgLy8gTWF0aDogKDU0MCAtICgyICogMzAgZ3V0dGVyKSkgLyAzIGl0ZW1zID0gMTYwXG4gICAgJGNvbHVtbi13aWR0aDogKCRjb250YWluZXIgLSAoJGNvbHVtbi1ndXR0ZXJzICogJHByb2R1Y3QtY29sdW1uLXNwYWNpbmcpKSAvICRjb2x1bW4tY291bnQ7XG5cbiAgICAucHJvZHVjdHMtZ3JpZCB7XG4gICAgICAgIC8qIFVuZG8gdHdvLWNvbHVtbiBjb25maWcgKi9cbiAgICAgICAgPiBsaTpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBjbGVhcjogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICA+IGxpOm50aC1jaGlsZChldmVuKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHBlcmNlbnRhZ2UoJHByb2R1Y3QtY29sdW1uLXNwYWNpbmcgLyAkY29udGFpbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFNldCB0aHJlZS1jb2x1bW4gY29uZmlnICovXG4gICAgICAgID4gbGkge1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbi13aWR0aCAvICRjb250YWluZXIpO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBwZXJjZW50YWdlKCRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nIC8gJGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgICAgPiBsaTpudGgtY2hpbGQoI3skY29sdW1uLWNvdW50fW4rMSkge1xuICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgPiBsaTpudGgtY2hpbGQoI3skY29sdW1uLWNvdW50fW4pIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBvdXRwdXRzIHRoZSBzdHlsZXMgdG8gYWxsb3cgZm9yIGdyaWRzIHdpdGggbW9yZSB0aGFuIDMgY29sdW1uc1xuQG1peGluIHByb2R1Y3QtZ3JpZCgkY29sdW1uLWNvdW50LCAkY29udGFpbmVyLXdpZHRoLCAkY2xhc3MtYXBwZW5kOlwiXCIpIHtcblxuICAgIC8vIEFsbG93IHRoaXMgbWl4aW4gdG8gYmUgdXNlZCBmb3IgbW9yZSBzcGVjaWZpYyBwdXJwb3Nlcywgc3VjaCBhcyBncmlkcyBjb250YWluZWQgd2l0aGluIHdpZGdldHNcbiAgICBAaWYgJGNsYXNzLWFwcGVuZCAhPSBcIlwiIHtcbiAgICAgICAgJGNsYXNzLWFwcGVuZDogLSN7JGNsYXNzLWFwcGVuZH07XG4gICAgfVxuXG4gICAgLyogQ29uZmlnOiBDb2x1bW5zICsgZmxleGlibGUgZ3V0dGVyICovXG4gICAgJGNvbHVtbi1ndXR0ZXJzOiAoJGNvbHVtbi1jb3VudCkgLSAxO1xuICAgICRjb250YWluZXI6ICRjb250YWluZXItd2lkdGggLSAoMiAqICR0cmltKTtcbiAgICAkY29sdW1uLXdpZHRoOiAoJGNvbnRhaW5lciAtICgkY29sdW1uLWd1dHRlcnMgKiAkcHJvZHVjdC1jb2x1bW4tc3BhY2luZykpIC8gJGNvbHVtbi1jb3VudDtcblxuICAgIC8qIFVuZG8gdGhyZWUtY29sdW1uIGNvbmZpZyAqL1xuICAgIC5wcm9kdWN0cy1ncmlkLS1tYXgtI3skY29sdW1uLWNvdW50fS1jb2wjeyRjbGFzcy1hcHBlbmR9ID4gbGk6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaTpudGgtY2hpbGQoM24rMSkge1xuICAgICAgICBjbGVhcjogbm9uZTtcbiAgICB9XG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaTpudGgtY2hpbGQoZXZlbiksXG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaTpudGgtY2hpbGQoM24pIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBwZXJjZW50YWdlKCRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nIC8gJGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgLyogU2V0IGNvbHVtbiBjb25maWcgKi9cbiAgICAucHJvZHVjdHMtZ3JpZC0tbWF4LSN7JGNvbHVtbi1jb3VudH0tY29sI3skY2xhc3MtYXBwZW5kfSA+IGxpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBwZXJjZW50YWdlKCRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nIC8gJGNvbnRhaW5lcik7XG4gICAgfVxuICAgIC5wcm9kdWN0cy1ncmlkLS1tYXgtI3skY29sdW1uLWNvdW50fS1jb2wjeyRjbGFzcy1hcHBlbmR9ID4gbGkge1xuICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgkY29sdW1uLXdpZHRoIC8gJGNvbnRhaW5lcik7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgkcHJvZHVjdC1jb2x1bW4tc3BhY2luZyAvICRjb250YWluZXIpO1xuICAgIH1cbiAgICAucHJvZHVjdHMtZ3JpZC0tbWF4LSN7JGNvbHVtbi1jb3VudH0tY29sI3skY2xhc3MtYXBwZW5kfSA+IGxpOm50aC1jaGlsZCgjeyRjb2x1bW4tY291bnR9bisxKSB7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgIH1cbiAgICAucHJvZHVjdHMtZ3JpZC0tbWF4LSN7JGNvbHVtbi1jb3VudH0tY29sI3skY2xhc3MtYXBwZW5kfSA+IGxpOm50aC1jaGlsZCgjeyRjb2x1bW4tY291bnR9bikge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA5NjBweCkge1xuICAgIEBpbmNsdWRlIHByb2R1Y3QtZ3JpZCg0LCA5NjApO1xuICAgIEBpbmNsdWRlIHByb2R1Y3QtZ3JpZCg1LCA5NjApO1xuICAgIEBpbmNsdWRlIHByb2R1Y3QtZ3JpZCg2LCA5NjApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBQcm9kdWN0IExpc3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5wcm9kdWN0cy1saXN0IHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG5cbiAgICAmID4gbGkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgICAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEvMyk7XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICYgPiBsaTpsYXN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4ucHJvZHVjdHMtbGlzdCAucHJvZHVjdC1zaG9wIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMi8zKTtcbiAgICBwYWRkaW5nLWxlZnQ6ICgkYm94LXNwYWNpbmcgKiAyKTtcblxuICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgICAucmF0aW5ncyB7XG4gICAgICAgIG1hcmdpbjogMDtcblxuICAgICAgICAucmF0aW5nLWJveCxcbiAgICAgICAgLnJhdGluZy1saW5rcyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGVsZW1lbnQtc3BhY2luZztcbiAgICAgICAgfVxuICAgICAgICAucmF0aW5nLWxpbmtzIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucHJpY2UtYm94IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gICAgLnByaWNlLWJveCAucHJpY2Uge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhsO1xuICAgIH1cbiAgICAuYWN0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAkZWxlbWVudC1zcGFjaW5nIDA7XG4gICAgfVxuICAgIC5kZXNjIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG5cbiAgICAucHJvZHVjdC1wcmltYXJ5LFxuICAgIC5kZXNjIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiA2NSU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC5wcm9kdWN0LXNlY29uZGFyeSB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgd2lkdGg6IDM1JTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGNsZWFyOiByaWdodDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLXhzbWFsbCArIDEpIHtcbiAgICAucHJvZHVjdHMtbGlzdCAucHJvZHVjdC1uYW1lIGEge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhsO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAxMjc5cHgpIHtcbiAgICAucHJvZHVjdHMtbGlzdCAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgLnByb2R1Y3QtcHJpbWFyeSxcbiAgICAgICAgLmRlc2Mge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgICAgfVxuICAgICAgICAucHJvZHVjdC1zZWNvbmRhcnkge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgd2lkdGg6IDQwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA2MDBweCkge1xuICAgIC5wcm9kdWN0cy1saXN0IC5wcm9kdWN0LXNob3AgLnByaWNlLWJveCAuc3BlY2lhbC1wcmljZSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG4gICAgLnByb2R1Y3RzLWxpc3QgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgIC5wcm9kdWN0LXByaW1hcnksXG4gICAgICAgIC5wcm9kdWN0LXNlY29uZGFyeSxcbiAgICAgICAgLmRlc2Mge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBNaW5pIFByb2R1Y3QgTGlzdFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm1pbmktcHJvZHVjdHMtbGlzdCB7XG5cbiAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtaW4td2lkdGg6IDUwcHg7XG4gICAgfVxuICAgIC5wcm9kdWN0LWRldGFpbHMge1xuICAgICAgICBtYXJnaW4tbGVmdDogNjBweDtcbiAgICB9XG5cbiAgICAvLyBWZXJ0aWNhbGx5IGNlbnRlciBwcm9kdWN0IG5hbWVcbiAgICAucHJvZHVjdC1kZXRhaWxzIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1pbmktcHJvZHVjdHMtaW1hZ2VzLWxpc3Qge1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIGxpLml0ZW0ge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwIDVweCAxMHB4IDA7XG5cbiAgICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDYXRhbG9nIC0gTGlzdFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhdGVnb3J5LWltYWdlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIHBhZGRpbmc6IDEwcHg7XG5cbiAgICBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgICAgICY6aGlkZGVuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIExheWVyZWQgTmF2aWdhdGlvblxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmJsb2NrLWxheWVyZWQtbmF2IC5ibG9jay1zdWJ0aXRsZS0tZmlsdGVyIHtcbiAgICAvLyBXaWxsIGJlIHNob3duIGF0IHNtYWxsZXIgdmlld3BvcnRzXG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb25EdEJhc2U7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYmxvY2stbGF5ZXJlZC1uYXYgLmJsb2NrLWNvbnRlbnQge1xuICAgIC8vIEFjY29yZGlvbnMgYXJlIGZ1bGx5IGV4cGFuZGVkIHVudGlsIGEgc21hbGxlciByZXNvbHV0aW9uLlxuICAgIEBpbmNsdWRlIGFjY29yZGlvbjtcbn1cblxuLmJsb2NrLWxheWVyZWQtbmF2IGRsIGRkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG4gICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nO1xuXG4gICAgb2wgPiBsaSA+IHNwYW4sIG9sID4gbGkgPiBhIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICBvbCA+IGxpID4gYSAuY291bnQge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKzEpIHtcbiAgICAuYmxvY2stbGF5ZXJlZC1uYXYgLmJsb2NrLWNvbnRlbnQgPiBkbCA+IGR0IHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLnNpZGViYXIgLmJsb2NrLmJsb2NrLWxheWVyZWQtbmF2IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBXZSBkb24ndCB3YW50IFwiU2hvcCBCeVwiIHRvIHNob3cgd2hlbiB0aGVyZSBhcmUgbm8gZmlsdGVycyBhcHBsaWVkLCBhcyB0aGUgXCJGaWx0ZXJcIiBsaW5rIHdpbGwgc3VmZmljZVxuICAgIC5ibG9jay1sYXllcmVkLW5hdi0tbm8tZmlsdGVycyAuYmxvY2stdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgdG9wIHBhZGRpbmcgYW5kIHJlLWFkZCBpdCBhcyBtYXJnaW4tdG9wIHNvIHRoYXQgdGhlIG1hcmdpbiB3aWxsIGNvbGxhcHNlIHdpdGggZWxlbWVudHMgYWJvdmUgaXRcbiAgICAuYmxvY2stbGF5ZXJlZC1uYXYgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgQGluY2x1ZGUgYWNjb3JkaW9uQ29sbGFwc2U7XG4gICAgfVxuXG4gICAgLmJsb2NrLWxheWVyZWQtbmF2IC5ibG9jay1zdWJ0aXRsZS0tZmlsdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA0cHgsICNGRkZGRkYpO1xuICAgICAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC01cHg7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1ob3ZlcjtcbiAgICAgICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmU6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoZG93biwgNHB4LCAjRkZGRkZGKTtcbiAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtM3B4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI25hcnJvdy1ieS1saXN0LFxuICAgICNuYXJyb3ctYnktbGlzdDIge1xuICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgfVxuXG4gICAgLmJsb2NrLWxheWVyZWQtbmF2IGRsIG9sID4gbGkgPiBhLFxuICAgIC5ibG9jay1sYXllcmVkLW5hdiBkbCBvbCA+IGxpID4gc3BhbiB7XG4gICAgICAgIHBhZGRpbmc6IDdweDtcbiAgICAgICAgbWFyZ2luOiA1cHg7XG4gICAgfVxuXG4gICAgLmJsb2NrLWxheWVyZWQtbmF2IGRsIG9sID4gbGkgPiBhIHtcbiAgICAgICAgQGluY2x1ZGUgdG91Y2gtYnV0dG9uO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGMtbW9kdWxlLWJhY2tncm91bmQtaG92ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5ibG9jay1sYXllcmVkLW5hdiAuY3VycmVudGx5IHtcbiAgICAuYmxvY2stc3VidGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgQGluY2x1ZGUgaDQ7XG4gICAgfVxuXG4gICAgb2wge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgIH1cbiAgICBvbCBsaSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcblxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmxvY2stbGF5ZXJlZC1uYXYgLmFjdGlvbnMge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG59XG5cbi5jb2xvci1ib3gtd3JhcHBlciB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMjBweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItaW1hZ2Utc291cmNlOiBpbml0aWFsO1xuICAgIGJvcmRlci1pbWFnZS1zbGljZTogaW5pdGlhbDtcbiAgICBib3JkZXItaW1hZ2Utd2lkdGg6IGluaXRpYWw7XG4gICAgYm9yZGVyLWltYWdlLW91dHNldDogaW5pdGlhbDtcbiAgICBib3JkZXItaW1hZ2UtcmVwZWF0OiBpbml0aWFsO1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLmNvbG9yLWJveCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLXRleHQtZ3JheTtcbiAgICAgICAgYm9yZGVyLWltYWdlLXNvdXJjZTogaW5pdGlhbDtcbiAgICAgICAgYm9yZGVyLWltYWdlLXNsaWNlOiBpbml0aWFsO1xuICAgICAgICBib3JkZXItaW1hZ2Utd2lkdGg6IGluaXRpYWw7XG4gICAgICAgIGJvcmRlci1pbWFnZS1vdXRzZXQ6IGluaXRpYWw7XG4gICAgICAgIGJvcmRlci1pbWFnZS1yZXBlYXQ6IGluaXRpYWw7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiA1MHB4O1xuICAgIH1cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgJi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6JGMteWVsbG93LWVubmlzO1xuICAgIH1cbn0iLCIvKlxuVG8gY2hhbmdlIHRoaXMgbGljZW5zZSBoZWFkZXIsIGNob29zZSBMaWNlbnNlIEhlYWRlcnMgaW4gUHJvamVjdCBQcm9wZXJ0aWVzLlxuVG8gY2hhbmdlIHRoaXMgdGVtcGxhdGUgZmlsZSwgY2hvb3NlIFRvb2xzIHwgVGVtcGxhdGVzXG5hbmQgb3BlbiB0aGUgdGVtcGxhdGUgaW4gdGhlIGVkaXRvci5cbiovXG4vKiBcbiAgICBDcmVhdGVkIG9uIDogRmViIDUsIDIwMTYsIDU6MDc6MjcgUE1cbiAgICBBdXRob3IgICAgIDogU2t5IFRvbm5lc3NlblxuKi9cbi5ldmVudHMtY29udGFpbmVyIHtcbiAgICBoMiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICB9XG4gICAgLmV2ZW50cy1oZXJvIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNWVtO1xuICAgIH1cbn1cbi5ldmVudC1saXN0IHtcbiAgICBtYXJnaW4tdG9wOiAxLjVlbTtcbiAgICBsaSB7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAuNWVtO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZGF0ZS1udW1iZXJzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgIFxufVxuXG4uY2FsZW5kYXJ7XG5cdG1hcmdpbjouMjVlbSAxMHB4IDEwcHggMDtcblx0cGFkZGluZy10b3A6NXB4O1xuXHRmbG9hdDpsZWZ0O1xuXHR3aWR0aDo2MHB4O1xuXHRiYWNrZ3JvdW5kOiNmZmZmZmY7XG5cdFxuXHRmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Y29sb3I6IzM3MzYzNjtcdFxuXHQtbW96LWJvcmRlci1yYWRpdXM6M3B4O1xuXHQtd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4O1xuXHRib3JkZXItcmFkaXVzOjNweDtcdFxuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0LW1vei1ib3gtc2hhZG93OjAgMnB4IDJweCAjZDhkOGRhO1xuXHQtd2Via2l0LWJveC1zaGFkb3c6MCAycHggMnB4ICNkOGQ4ZGE7XG5cdGJveC1zaGFkb3c6MCAycHggMnB4ICNkOGQ4ZGE7XG4gICAgICAgIGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgICAgICBjb2xvcjojZmZmO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC1zaGFkb3c6I2Q3OGExYyAwIC0xcHggMDtcdFxuICAgICAgICAgICAgYmFja2dyb3VuZDojZmQ5ZDEzO1xuICAgICAgICAgICAgYmFja2dyb3VuZDotd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNmZDlkMTMpLCB0bygjZDc4YTFjKSk7IFxuICAgICAgICAgICAgYmFja2dyb3VuZDotbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICAjZmQ5ZDEzMywgICNkNzhhMWMpOyBcbiAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDozcHg7XG4gICAgICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtcdFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6M3B4O1xuICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6M3B4O1xuICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweDtcdFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHg7XHRcbiAgICAgICAgICAgIGJvcmRlci10b3A6MXB4IHNvbGlkICNmZGJlMjg7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDonJztcbiAgICAgICAgICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICAgICAgICAgIGxlZnQ6MTNweDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6LTVweDtcdFxuICAgICAgICAgICAgICAgIHdpZHRoOjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6MTRweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiNhYWE7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB6LWluZGV4OjI7XG4gICAgICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOjJweDtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6MnB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6MnB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICByaWdodDoxM3B4O1xuICAgICAgICAgICAgICAgICAgICB0b3A6LTVweDtcdFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDo0cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDoxNHB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiNhYWE7XG4gICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjtcbiAgICAgICAgICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOjJweDtcbiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czoycHg7ICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgXG5cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2F0YWxvZyAtIFByb2R1Y3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5wcm9kdWN0LXZpZXcge1xuICAgIC5wcm9kdWN0LWVzc2VudGlhbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLmV4dHJhLWluZm8ge1xuICAgICAgICAgICAgLnJhdGluZ3Mge1xuICAgICAgICAgICAgICAgIC5yYXRpbmctYm94LFxuICAgICAgICAgICAgICAgIC5hbW91bnQge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucmF0aW5nLWJveCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkZ2FwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kb3dubG9hZHMtaXRlbSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAuNWVtO1xuICAgIH1cbiAgICAucHJvZHVjdC1zaG9wIC5wcm9kdWN0LW5hbWUgLmgxLFxuICAgIC5wcm9kdWN0LWltZy1ib3ggLnByb2R1Y3QtbmFtZSBoMSB7XG4gICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuXG4gICAgICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIC5wcm9kdWN0LW5hbWUgLmgxIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmV4dHJhLWluZm8ge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkdHJpbS8yO1xuICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLWluZm8ge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkdHJpbS8yO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZXh0cmEtaW5mbyxcbiAgICAgICAgLnByaWNlLWluZm8ge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA3MCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAuc2hvcnQtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICAuc3RkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAuNWVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnJhdGluZ3Mge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmF2YWlsYWJpbGl0eSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgIH1cblxuICAgICAgICAucHJpY2UtYm94IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICAgICAgICAgIC5vbGQtcHJpY2UsXG4gICAgICAgICAgICAuc3BlY2lhbC1wcmljZSxcbiAgICAgICAgICAgIC5yZWd1bGFyLXByaWNlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZWd1bGFyLXByaWNlIC5wcmljZSxcbiAgICAgICAgICAgIC5zcGVjaWFsLXByaWNlIC5wcmljZSxcbiAgICAgICAgICAgIC5mdWxsLXByb2R1Y3QtcHJpY2UgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNwZWNpYWwtcHJpY2Uge1xuXG4gICAgICAgICAgICAgICAgLnByaWNlLWxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNwYW4ud2VlZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuXG4gICAgICAgICAgICAgICAgICAgIHNwYW4ucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJpY2UtZXhjbHVkaW5nLXRheCxcbiAgICAgICAgICAgIC5wcmljZS1pbmNsdWRpbmctdGF4IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuXG4gICAgICAgICAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcmljZS1ib3gubWFwLWluZm8gYSB7XG4gICAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLm9sZC1wcmljZSB7XG4gICAgICAgIC5wcmljZS1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFkZC10by1jYXJ0LXdyYXBwZXIsXG4gICAgLmJsb2NrLXJlbGF0ZWQge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIGNsZWFyOiByaWdodDtcbiAgICB9XG5cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA4NTBweCkge1xuICAgIC5wcm9kdWN0LXZpZXcge1xuICAgICAgICAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgICAgIC5wcmljZS1ib3gge1xuICAgICAgICAgICAgICAgIC5wcmljZS1leGNsdWRpbmctdGF4LFxuICAgICAgICAgICAgICAgIC5wcmljZS1pbmNsdWRpbmctdGF4IHtcbiAgICAgICAgICAgICAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1sO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5wcm9kdWN0LXZpZXcge1xuICAgICAgICAuYWRkLXRvLWNhcnQtd3JhcHBlciB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgICAgIC5wcmljZS1ib3gge1xuICAgICAgICAgICAgICAgIC5wcmljZS1leGNsdWRpbmctdGF4LFxuICAgICAgICAgICAgICAgIC5wcmljZS1pbmNsdWRpbmctdGF4IHtcbiAgICAgICAgICAgICAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNDIwcHgpIHtcbiAgICAucHJvZHVjdC12aWV3IHtcbiAgICAgICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgICAgICAucHJpY2UtYm94IHtcbiAgICAgICAgICAgICAgICAucHJpY2UtZXhjbHVkaW5nLXRheCxcbiAgICAgICAgICAgICAgICAucHJpY2UtaW5jbHVkaW5nLXRheCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcblxuICAgICAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wcm9kdWN0LWltZy1ib3gge1xuICAgICAgICAgICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDFlbSAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5wcm9kdWN0LWltYWdlLXRodW1icyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgdG9wOiBhdXRvOyBcbiAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJvZHVjdC1pbWctYm94IHtcbiAgICB3aWR0aDogNTAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LWltYWdlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgICAgICBtYXJnaW4tbGVmdDogMTUlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAvLyBTaW5jZSBwcm9kdWN0IGRldGFpbCBwYWdlIGltYWdlcyBhcmUgbm90IGNyb3BwZWQgdG8gYSBzcGVjaWZpYyBhc3BlY3QgcmF0aW8sIGluIG9yZGVyIHRvIG1ha2UgdGhlIGltYWdlIG5vdFxuICAgICAgICAvLyBjdXQgb2ZmIG9uIHRhbGwgc2tpbm55IHNjcmVlbnMsIHdlIGFyZSBzZXR0aW5nIGEgbWF4LWhlaWdodCBvbiB0aGUgaW1hZ2VcbiAgICAgICAgbWF4LWhlaWdodDogNzUwcHg7XG5cbiAgICAgICAgLy8gQ2VudGVyaW5nIHRoZSBpbWFnZSBmb3IgaW5zdGFuY2VzIHdoZXJlIG1heC1oZWlnaHQga2lja3MgaW5cbiAgICAgICAgbWFyZ2luOiAwcHggYXV0bztcbiAgICB9XG59XG5cbi8vIE9uIHNtYWxsZXIgZGV2aWNlcywgd2Ugd2FudCB0byBmdXJ0aGVyIGxpbWl0IHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLCB0byBwcmV2ZW50IGNyb3BwaW5nXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAucHJvZHVjdC1pbWctYm94IC5wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDQ1MHB4O1xuICAgIH1cbn1cblxuLnByb2R1Y3QtaW1hZ2UtZ2FsbGVyeSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC5nYWxsZXJ5LWltYWdlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAmLnZpc2libGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgICYuaGlkZGVuIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OmhpZGRlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGxvYWRpbmdPdmVybGF5KCk7XG59XG5cbi5wcm9kdWN0LWltYWdlLXRodW1icyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiA3LjUlO1xuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICB9XG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgfVxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIH1cbn1cblxuLm5vLXRvdWNoIC5wcm9kdWN0LWltYWdlLXRodW1icyB7XG4gICAgYTpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKCRjLW1vZHVsZS1ib3JkZXItbGlnaHQsIDE1JSk7XG4gICAgfVxufVxuXG4ucHJvZHVjdC12aWV3IC5wcm9kdWN0LXNob3AsXG4ucHJvZHVjdC12aWV3IC5hZGQtdG8tY2FydC13cmFwcGVyLFxuLnByb2R1Y3QtdmlldyAuYmxvY2stcmVsYXRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkdHJpbS8yO1xufVxuXG4ucHJvZHVjdC1pbWctYm94IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkdHJpbS8yO1xufVxuXG4ucHJvZHVjdC12aWV3IC5wcm9kdWN0LXNob3AsXG4ucHJvZHVjdC1pbWctYm94LFxuLnByb2R1Y3QtY29sbGF0ZXJhbCxcbi5wcm9kdWN0LXZpZXcgLmJsb2NrLXJlbGF0ZWQsXG4uYm94LWNvbGxhdGVyYWwge1xuICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbn1cblxuLnByb2R1Y3QtdmlldyB7XG5cbiAgICAuYWRkLXRvLWJveDphZnRlcixcbiAgICAuYWRkLXRvLWNhcnQ6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICAuYWRkLXRvLWNhcnQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogM3B4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICB9XG5cbiAgICAvKiBTZXQgYSBtaW4taGVpZ2h0IHNvIHRoYXQgdGhlIGZsb2F0ZWQgZWxlbWVudHMgYnJlYWsgYXBwcm9wcmlhdGVseSAqL1xuICAgIC5hZGQtdG8tY2FydCAucXR5LXdyYXBwZXIsXG4gICAgLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnByaWNlLWJveCxcbiAgICAuYWRkLXRvLWNhcnQtYnV0dG9ucyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnByaWNlLWJveCxcbiAgICAuYWRkLXRvLWNhcnQgLnF0eS13cmFwcGVyLFxuICAgIC5hZGQtdG8tY2FydC1idXR0b25zIC5idXR0b24sXG4gICAgLmFkZC10by1jYXJ0LWJ1dHRvbnMgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG5cbiAgICAuYWRkLXRvLWNhcnQgLnF0eS13cmFwcGVyLFxuICAgIC5hZGQtdG8tY2FydCAucXR5LXdyYXBwZXIgbGFiZWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDdweDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLmFkZC10by1jYXJ0IC5xdHktd3JhcHBlciBsYWJlbCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydCAucXR5LXdyYXBwZXIgLnF0eSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgLmFkZC10by1jYXJ0LWJ1dHRvbnMge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7IC8vIENvbnN0cmFpbiB3aWR0aCBpbiBGaXJlZm94XG5cbiAgICAgICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICAucGF5cGFsLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE3MHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYm1sX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE3NHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydC1idXR0b25zIC5idXR0b24ge1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICBwYWRkaW5nOiAwcHggMzBweDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1pbi13aWR0aDogMTYwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIH1cblxuICAgIC5hbGVydC1wcmljZSxcbiAgICAuYWxlcnQtc3RvY2sge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5wcm9kdWN0LXZpZXcgLmFkZC10by1jYXJ0LWJ1dHRvbnMge1xuICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnBheXBhbC1sb2dvLFxuICAgICAgICAucGF5cGFsLW9yLFxuICAgICAgICAucGF5cGFsLWJ1dHRvbixcbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogVGhpcyBpcyB0aGUgXCJvclwiIHRoYXQgc2VwYXJhdGVzIHRoZSBcIkFkZCB0byBDYXJ0XCIgYW5kIFwiQWRkIHRvIFhcIiBsaW5rcyAqL1xuLmFkZC10by1ib3ggLm9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucHJvZHVjdC12aWV3IC5hZGQtdG8tbGlua3Mge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIG1hcmdpbi10b3A6IDBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgICAgcGFkZGluZzogMnB4IDdweCAycHggMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogN3B4O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIH1cblxuICAgIGxpOmZpcnN0LWNoaWxkIGEge1xuICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIH1cblxuICAgIGxpOmxhc3QtY2hpbGQgYSB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMHB4O1xuICAgIH1cbn1cblxuLnByb2R1Y3QtdmlldyAuc2hhcmluZy1saW5rcyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcGFkZGluZzogMHB4IDdweCA3cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIEBpbmNsdWRlIGltYWdlLXJlcGxhY2VtZW50O1xuICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAyNnB4O1xuICAgICAgICBoZWlnaHQ6IDI2cHg7XG4gICAgfVxuICAgIGE6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuICAgIGEubGluay13aXNobGlzdCB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtMjI1cHg7XG4gICAgfVxuICAgIGEubGluay1jb21wYXJlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IC0yNTBweDtcbiAgICB9XG4gICAgYS5saW5rLWVtYWlsLWZyaWVuZCB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAoLTMyNXB4ICsgM3B4KTtcbiAgICB9XG4gICAgYS5saW5rLWZhY2Vib29rIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IC00MjVweDtcbiAgICB9XG4gICAgYS5saW5rLXR3aXR0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggKC0zNzVweCArIDNweCk7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDU5OXB4KSB7XG4gICAgLmFkZC10by1ib3ggLmFkZC10by1saW5rcyB7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIEBpbmNsdWRlIGltYWdlLXJlcGxhY2VtZW50LW92ZXJyaWRlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJvZHVjdC1jb2xsYXRlcmFsIHtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmNvbGxhdGVyYWwtdGFicyB7XG4gICAgZGQge1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYm94LWNvbGxhdGVyYWwge1xuICAgIGNsZWFyOiBib3RoO1xufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAucHJvZHVjdC1jb2xsYXRlcmFsIHtcbiAgICAgICAgQGluY2x1ZGUgdGFicztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLnByb2R1Y3QtY29sbGF0ZXJhbCB7XG4gICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbjtcbiAgICAgICAgQGluY2x1ZGUgYWNjb3JkaW9uQ29sbGFwc2U7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC5wcm9kdWN0LXZpZXcgLnByb2R1Y3Qtc2hvcCxcbiAgICAucHJvZHVjdC12aWV3IC5hZGQtdG8tY2FydC13cmFwcGVyLFxuICAgIC5wcm9kdWN0LXZpZXcgLmJsb2NrLXJlbGF0ZWQsXG4gICAgLnByb2R1Y3QtaW1nLWJveCxcbiAgICAucHJvZHVjdC1jb2xsYXRlcmFsIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAucHJvZHVjdC12aWV3IC5wcm9kdWN0LXNob3AgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAucHJvZHVjdC1pbWctYm94IC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG5cbiAgICAucHJvZHVjdC12aWV3IC5wcm9kdWN0LXNob3AsXG4gICAgLnByb2R1Y3QtaW1nLWJveCxcbiAgICAucHJvZHVjdC1jb2xsYXRlcmFsLFxuICAgIC5wcm9kdWN0LXZpZXcgLmJsb2NrLXJlbGF0ZWQsXG4gICAgLmJveC1jb2xsYXRlcmFsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgfVxufVxuXG4ucHJvZHVjdC12aWV3IC5yYXRpbmdzIHtcbiAgICAucmF0aW5nLWxpbmtzIHtcbiAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbn1cblxuI3Byb2R1Y3QtYXR0cmlidXRlLXNwZWNzLXRhYmxlIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtc3RkLWZvcm1hdHRlZC13aWR0aDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG5cbiAgICB0aCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIENhdGFsb2cgLSBHcm91cGVkIFByb2R1Y3QgTGlzdFxuICovXG5cbi5ncm91cGVkLWl0ZW1zLXRhYmxlLXdyYXBwZXIge1xuICAgIGJvcmRlcjogc29saWQgMXB4ICRjLXRhYmxlLWJvcmRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgfVxufVxuXG4uZ3JvdXBlZC1pdGVtcy10YWJsZSB7XG4gICAgLm5hbWUtd3JhcHBlciB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIH1cblxuICAgIC5xdHktd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIH1cblxuICAgIC5xdHktbGFiZWwge1xuICAgICAgICBtYXJnaW4tbGVmdDogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG5cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogNHB4O1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucHJpY2UtYm94e1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIENhdGFsb2cgLSBQcm9kdWN0IE9wdGlvbnNcbiAqL1xuXG4ucHJvZHVjdC1vcHRpb25zIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDEwcHggMCAwO1xuICAgIHBhZGRpbmc6IDEwcHggMTVweCAxNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWZpZWxkc2V0LWJvcmRlcjtcbiAgICBjbGVhcjogYm90aDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgcC5yZXF1aXJlZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNnB4O1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIC5wcm9kdWN0LXZpZXcgLnByb2R1Y3Qtb3B0aW9ucyAucmVxdWlyZWQge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkdCB7XG4gICAgbWFyZ2luOiAkZ2FwIDAgM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZHQ6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgLnF0eS1ob2xkZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRnYXAgMCAwIDA7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgLnF0eS1ob2xkZXIgLnF0eSB7XG4gICAgd2lkdGg6IDNlbTtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCAucXR5LWhvbGRlciBsYWJlbCB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCAucXR5LWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwIDJweDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCB7XG4gICAgcGFkZGluZzogMCAwIDEwcHggMDtcbiAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWZpZWxkc2V0LWJvcmRlci1saWdodDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkbC5sYXN0IGRkLmxhc3Qge1xuICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIC5pbnB1dC10ZXh0IHtcbiAgICB3aWR0aDogOTglO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIC5pbnB1dC1ib3gge1xuICAgIHBhZGRpbmctdG9wOiAwO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIGlucHV0LmRhdGV0aW1lLXBpY2tlciB7XG4gICAgd2lkdGg6IDE1MHB4O1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIC50aW1lLXBpY2tlciB7XG4gICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDJweCAwO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgdGV4dGFyZWEge1xuICAgIHdpZHRoOiA5OCU7XG4gICAgaGVpZ2h0OiA4ZW07XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgc2VsZWN0IHtcbiAgICB3aWR0aDogMzMwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHVsLm9wdGlvbnMtbGlzdCB7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IGxpIHtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIG1hcmdpbi1ib3R0b206IDdweDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3QgbGk6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3QgLnJhZGlvLFxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3QgLmNoZWNrYm94IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IC5sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IGxhYmVsIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHAubm90ZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtZmllbGRzZXQtYm9yZGVyO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbTphZnRlciB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC5wcm9kdWN0LXByaWNpbmcsXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAudGllci1wcmljZXMge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMCAwICRnYXA7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6IDA7XG4gICAgY29sb3I6ICRjLXRleHQ7XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14bGFyZ2UpIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRnYXAgLyAyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtZmllbGRzZXQtYm9yZGVyO1xuICAgIH1cbn1cblxuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnRpZXItcHJpY2VzIGxpIHtcbiAgICBiYWNrZ3JvdW5kOiAwO1xuICAgIHBhZGRpbmc6IDJweCAwO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAudGllci1wcmljZXMgLnByaWNlLFxuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnRpZXItcHJpY2VzIC5iZW5lZml0IHtcbiAgICBjb2xvcjogJGMtdGV4dDtcbn1cblxuLyogXCJkaXNwbGF5OiBub25lXCIgc2hvdWxkIGJlIHJlbW92ZWQgaWYgcHJvZHVjdHMgb24gc2l0ZSBoYXZlIGEgbG9uZyBsaXN0IG9mIHByb2R1Y3Qgb3B0aW9ucyBhbmQgdGhvc2UgcHJvZHVjdCBvcHRpb25zICovXG4vKiAgYWZmZWN0IHRoZSBwcmljZSBzbyB0aGF0IHRoZSBjdXN0b21lciBjYW4gc2VlIHRoZSB1cGRhdGVkIHByaWNlIGNsb3NlIHRvIHRoZSBcIkFkZCB0byBDYXJ0XCIgYnV0dG9uICovXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAucHJpY2UtYm94IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW46IDAgMCAkZ2FwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC5wcmljZS1ib3ggLnByaWNlLWFzLWNvbmZpZ3VyZWQge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICAucHJpY2UtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC5wcmljZS10YXgge1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBSZWxhdGVkIFByb2R1Y3RzXG4gKi9cblxuLyogQmxvY2s6IFJlbGF0ZWQgKi9cblxuLmJsb2NrLXJlbGF0ZWQge1xuXG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIH1cblxuICAgIC5ibG9jay10aXRsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgQGluY2x1ZGUgaDIoKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmxvY2stc3VidGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIH1cblxuICAgIC5wcm9kdWN0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLmNoZWNrYm94IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi10b3A6IDM2cHg7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA5MHB4O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtZGV0YWlscyAucHJpY2UtYm94IHtcbiAgICAgICAgbWFyZ2luOiAycHggMCAzcHg7XG5cbiAgICAgICAgYSxcbiAgICAgICAgcCxcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG5cbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubGluay13aXNobGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBVcHNlbGwgUHJvZHVjdHNcbiAqL1xuXG4uYm94LXVwLXNlbGwge1xuICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZy1sYXJnZTtcblxuICAgIC5yYXRpbmdzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENhdGFsb2cgLSBNU1JQIE1BUCBQb3B1cFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhcnQtbXNycC10b3RhbHMge1xuICAgIGNvbG9yOiByZWQ7XG4gICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luOiAxMHB4IDEwcHggMDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5tYXAtY2FydC1zaWRlYmFyLXRvdGFsIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmc6IDJweCA1cHg7XG59XG5cbi5tYXAtcG9wdXAge1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgYm9yZGVyOiA1cHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBtYXJnaW46IDEycHggMCAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHdpZHRoOiA0NTBweDtcbiAgICB6LWluZGV4OiAxMDA7XG5cbiAgICBAaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG4gICAgICAgICYubWFwLXBvcHVwLXJpZ2h0IHtcbiAgICAgICAgICAgIGxlZnQ6ICRnYXAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubWFwLXBvcHVwLWxlZnQge1xuICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcmlnaHQ6ICRnYXAgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm1hcC1wb3B1cC1oZWFkaW5nIHtcbiAgICAgICAgcGFkZGluZzogOHB4IDEwcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNDBweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtY2xvc2Uge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgcmlnaHQ6IDBweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtY29udGVudCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtY2hlY2tvdXQge1xuICAgICAgICBwYWRkaW5nOiAkZ2FwIDA7XG5cbiAgICAgICAgZm9ybTphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZGl0aW9uYWwtYWRkdG9jYXJ0LWJveCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMjEwcHg7IC8vIGZpeCBmb3IgYSB3ZWIta2l0IGJveC1tb2RlbCBkaXNwbGF5IGJ1Z1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTVweDtcbiAgICAgICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5ibWxfYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIC5idXR0b24sXG4gICAgICAgICAgICAuYWRkaXRpb25hbC1hZGR0b2NhcnQtYm94LFxuICAgICAgICAgICAgLnBheXBhbC1sb2dvIGEsXG4gICAgICAgICAgICAucGF5cGFsLWxvZ28gLnBheXBhbC1vciB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZGRpdGlvbmFsLWFkZHRvY2FydC1ib3gge1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucGF5cGFsLWxvZ28gLnBheXBhbC1vciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWFwLXBvcHVwLXByaWNlIHtcbiAgICAgICAgcGFkZGluZzogJGdhcCAwO1xuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAucHJpY2UtYm94LFxuICAgICAgICAucHJpY2UtYm94IC5zcGVjaWFsLXByaWNlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAucHJpY2UtYm94IC5taW5pbWFsLXByaWNlLWxpbmsge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1hcC1wb3B1cC10ZXh0IHtcbiAgICAgICAgcGFkZGluZzogMTBweCAwO1xuICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtdGV4dCxcbiAgICAubWFwLXBvcHVwLW9ubHktdGV4dCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2F0YWxvZyAtIE1TUlAgUHJvZHVjdCBMaXN0aW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucHJpY2UtYm94IC5tYXAtbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDYXRhbG9nIC0gQ29tcGFyZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmJsb2NrLWNvbXBhcmUgLnByb2R1Y3QtbmFtZTphZnRlciB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi5jb21wYXJlLXRhYmxlIC5wcm9kdWN0LWltYWdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5jb21wYXJlLXRhYmxlIHtcbiAgICAucHJvZHVjdC1zaG9wLXJvdyB7XG4gICAgICAgICYudG9wIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYm90dG9tIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDaGVja291dCAtIExheW91dFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhcnQtdGFibGUge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiA2MCU7XG59XG5cbi5jYXJ0IC5idXR0b24ge1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi5jYXJ0LWZvcm1zLFxuLmNhcnQtdG90YWxzLXdyYXBwZXIsXG4uY3Jvc3NzZWxsIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgY2xlYXI6IHJpZ2h0O1xuICAgIHdpZHRoOiA0MCU7XG4gICAgcGFkZGluZy1sZWZ0OiAkYm94LXNwYWNpbmctbGFyZ2U7XG59XG5cbi5jYXJ0LXRvdGFscyxcbi5jYXJ0LWZvcm1zIC5kaXNjb3VudCxcbi5jYXJ0LWZvcm1zIC5naWZ0Y2FyZCxcbi5jYXJ0LWZvcm1zIC5zaGlwcGluZyB7XG4gICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG59XG5cbi5jYXJ0LXRhYmxlLFxuLmNhcnQtdG90YWxzLFxuLmNhcnQtZm9ybXMgLmRpc2NvdW50LFxuLmNhcnQtZm9ybXMgLmdpZnRjYXJkLFxuLmNhcnQtZm9ybXMgLnNoaXBwaW5nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmctbGFyZ2U7XG59XG5cbi5jaGVja291dC1jYXJ0LWluZGV4IHtcbiAgICAjcG9zdGNvZGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbkBtaXhpbiBvbmVDb2x1bW5DYXJ0SXRlbXMge1xuICAgIC5jYXJ0LXRhYmxlIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5jYXJ0LWZvcm1zIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC5jYXJ0LXRvdGFscy13cmFwcGVyLFxuICAgIC5jcm9zc3NlbGwge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRib3gtc3BhY2luZztcbiAgICB9XG5cbiAgICAuY2FydC1mb3JtcyxcbiAgICAuY2FydC10b3RhbHMtd3JhcHBlcixcbiAgICAuY3Jvc3NzZWxsIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG5cbiAgICAuY3Jvc3NzZWxsIHtcbiAgICAgICAgY2xlYXI6IHJpZ2h0O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxufVxuXG4uZGlzcGxheS1ib3RoLXByaWNlcyB7XG4gICAgQGluY2x1ZGUgb25lQ29sdW1uQ2FydEl0ZW1zO1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIC5kaXNwbGF5LXNpbmdsZS1wcmljZSB7XG4gICAgICAgIEBpbmNsdWRlIG9uZUNvbHVtbkNhcnRJdGVtcztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNTk5cHgpIHtcbiAgICAucHJvZHVjdC1jYXJ0LXNrdSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRpc3BsYXktYm90aC1wcmljZXMsXG4gICAgLmRpc3BsYXktc2luZ2xlLXByaWNlIHtcbiAgICAgICAgLmNhcnQtZm9ybXMsXG4gICAgICAgIC5jYXJ0LXRvdGFscy13cmFwcGVyLFxuICAgICAgICAuY3Jvc3NzZWxsIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kaXNwbGF5LXNpbmdsZS1wcmljZSB7XG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IC0gQ2FydFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhcnQgLnBhZ2UtdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuICAgIGgxIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbn1cblxuLmNoZWNrb3V0LXR5cGVzIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgbGkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIG1hcmdpbjogMCAwIDVweCA1cHg7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGk6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgLyogV2UgYWx3YXlzIHdhbnQgdGhpcyBzaGlwcGluZyBtZXRob2QgdG8gZGlzcGxheSBvbiBpdHMgb3duIGxpbmUgKi9cbiAgICAubWV0aG9kLWNoZWNrb3V0LWNhcnQtbWV0aG9kcy1tdWx0aXNoaXBwaW5nIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi50b3Age1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuYm1sX2J1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnBheXBhbC1sb2dvIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5ib3R0b20sXG4gICAgJi5taW5pY2FydCB7XG4gICAgICAgIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgNzQxcHgpIHtcbiAgICAuY2hlY2tvdXQtdHlwZXMuYm90dG9tIHtcbiAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDcwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jYXJ0LXRvdGFscyAuY2hlY2tvdXQtdHlwZXMgLmJ0bi1jaGVja291dCB7XG4gICAgbWFyZ2luLWJvdHRvbTogN3B4O1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDc0MHB4KSB7XG4gICAgLmNoZWNrb3V0LXR5cGVzIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAmLmJvdHRvbSxcbiAgICAgICAgJi5taW5pY2FydCB7XG4gICAgICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jaGVja291dC10eXBlcyBsaSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5idG4tY2hlY2tvdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi5jYXJ0LXRhYmxlIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcblxuICAgIHRoLFxuICAgIHRkLFxuICAgIHRib2R5IHRkIHtcbiAgICAgICAgLy8gQWRkaW5nIHRib2R5IGZvciBleHRyYSBzZWxlY3RvciB3ZWlnaHRcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIGNvbG9yOiAkYy1oMjtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIHRoZWFkIHRoLFxuICAgIHRib2R5IHRkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1jYXJ0LWluZm8sXG4gICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIH1cblxuICAgIHRyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICB9XG5cbiAgICB0Zm9vdCB7XG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICB0ciA+IHRkOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3Bhbi5vciB7XG4gICAgICAgIGZvbnQtc2l6ZTogOXB4O1xuICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtY2FydC1pbWFnZSAuY2FydC1saW5rcyxcbiAgICAucHJvZHVjdC1jYXJ0LWluZm8gLmJ0bi1yZW1vdmUsXG4gICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zIC5idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWNhcnQtaW1hZ2Uge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG5cbiAgICAgICAgLnByb2R1Y3QtaW1hZ2UgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgYS5jYXJ0LWVkaXQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LWNhcnQtc2t1IHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgbWFyZ2luOiA1cHggMCAxMnB4O1xuXG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1lbXB0eSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWNhcnQtdG90YWwsXG4gICAgLnByb2R1Y3QtY2FydC1wcmljZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2FydC10YXgtdG90YWwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGxlZnQsIDZweCwgJGMtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogM3B4O1xuICAgICAgICAgICAgcmlnaHQ6IC0xMXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jYXJ0LXRheC10b3RhbC1leHBhbmRlZCB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShkb3duLCA2cHgsICRjLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0xNXB4O1xuICAgICAgICAgICAgICAgIHRvcDogNnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcnQtbGlua3MgPiBsaSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgbWluLXdpZHRoOiA2NXB4O1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcblxuICAgICAgICA+IGEge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyB7XG4gICAgICAgIG1pbi13aWR0aDogNjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIC5xdHkge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1pbnB1dC1ib3JkZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAzLjJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tb3B0aW9ucyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5jYXJ0LXRhYmxlIHtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIH1cblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogN3B4IDZweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyA+IGxpIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDY5OXB4KSB7XG4gICAgLmRpc3BsYXktYm90aC1wcmljZXMge1xuICAgICAgICAuY2FydC10YWJsZSB7XG4gICAgICAgICAgICB0aGVhZCB0aC5jYXJ0LXRvdGFsLWhlYWQsXG4gICAgICAgICAgICB0ZC5wcm9kdWN0LWNhcnQtdG90YWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNTk5cHgpIHtcblxuICAgIC5jYXJ0LXRhYmxlIHtcbiAgICAgICAgY29sZ3JvdXAsIHRoZWFkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGZvb3QgdHIge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgJltkYXRhLXJ3ZC1sYWJlbF0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG5cbiAgICAgICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXR0cihkYXRhLXJ3ZC1sYWJlbCkgXCI6XCI7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYucHJvZHVjdC1jYXJ0LXByaWNlIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcnQtbGlua3Mge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDVweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcblxuICAgICAgICAgICAgPiBsaSB7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgICAgICAgICA+IGEge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJ0LXRheC1pbmZvIHtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcblxuICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtaW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS80KTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAgICAgICAgIGEuY2FydC1lZGl0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LWluZm8sXG4gICAgICAgIHRkW2RhdGEtcndkLWxhYmVsXSB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgzLzQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zLFxuICAgICAgICAucHJvZHVjdC1jYXJ0LXByaWNlIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LXJlbW92ZSxcbiAgICAgICAgLnByb2R1Y3QtY2FydC10b3RhbCxcbiAgICAgICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zIC5jYXJ0LWxpbmtzIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LWltYWdlIC5jYXJ0LWxpbmtzLFxuICAgICAgICAucHJvZHVjdC1jYXJ0LWluZm8gLmJ0bi1yZW1vdmUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGlzIGVsZW1lbnQgd2lsbCBiZSBkaXNwbGF5ZWQgdmlhIEpTIG9uY2UgdGhlIHJlbGF0ZWQgaW5wdXQgaXMgZm9jdXNlZFxuICAgICAgICAucHJvZHVjdC1jYXJ0LWFjdGlvbnMgLmJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1pbmZvIHtcblxuICAgICAgICAgICAgLmJ0bi1yZW1vdmUge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IC00cHggMHB4IDJweCA3cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wcm9kdWN0LWNhcnQtc2t1IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LWFjdGlvbnMge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgLnF0eSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogN3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLFxuICAgICAgICAucHJvZHVjdC1jYXJ0LXByaWNlOmJlZm9yZSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLWw7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJ0LWZvb3Rlci1hY3Rpb25zIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAjZW1wdHlfY2FydF9idXR0b24ge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ0bi1jb250aW51ZSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4tdXBkYXRlLFxuICAgICAgICAgICAgc3Bhbi5vciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRpc3BsYXktYm90aC1wcmljZXMge1xuICAgICAgICAuY2FydC10YWJsZSB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgJltkYXRhLXJ3ZC10YXgtbGFiZWxdIHtcbiAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYXR0cihkYXRhLXJ3ZC10YXgtbGFiZWwpIFwiOlwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDaGVja291dCAtIEVzdGltYXRlIFNoaXBwaW5nIGFuZCBUYXhcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zaGlwcGluZyB7XG5cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIG1hcmdpbjogMCAwIDVweDtcbiAgICB9XG5cbiAgICBzZWxlY3Qge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWlucHV0LWJvcmRlcjtcbiAgICB9XG5cbiAgICBzZWxlY3QudmFsaWRhdGlvbi1mYWlsZWQge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjLWRhbmdlcjtcbiAgICB9XG5cbiAgICAuc2hpcHBpbmctZGVzYyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tbGlzdCB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW46IDVweCAyJSAxMHB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuc2hpcHBpbmctY291bnRyeSB7XG4gICAgICAgICAgICB3aWR0aDogMzclO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNoaXBwaW5nLXJlZ2lvbiB7XG4gICAgICAgICAgICB3aWR0aDogNDElO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNoaXBwaW5nLXBvc3Rjb2RlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxOCU7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuaW5wdXQtYm94IHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zcC1tZXRob2RzIHtcbiAgICAgICAgcGFkZGluZzogMTBweCAwIDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgZGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjby1zaGlwcGluZy1tZXRob2QtZm9ybSAuYnV0dG9ucy1zZXQgLmJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgI2NvLXNoaXBwaW5nLW1ldGhvZC1mb3JtIC5zcC1tZXRob2RzIGRkIGxhYmVsIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQtaG92ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMjIwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgkYy1tb2R1bGUtYmFja2dyb3VuZCwgMTAlKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC5zaGlwcGluZyAuc2hpcHBpbmctZm9ybSAuZm9ybS1saXN0ID4gbGkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG5cbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvdGFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jYXJ0IC5jYXJ0LXRvdGFscyB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgdGFibGUge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggMHB4O1xuICAgICAgICB9XG4gICAgICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZCxcbiAgICAgICAgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRmb290IHtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRTZFNkU2O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFNkU2RTY7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA1cHg7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3Ryb25nIHNwYW4sXG4gICAgICAgICAgICBzcGFuLnByaWNlIHtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNjAwcHgpIHtcblxuICAgIC5jYXJ0LXRvdGFscyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAuY2FydCAuY2FydC10b3RhbHMgdGFibGUgdGZvb3QgdGQge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhsO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEaXNjb3VudCBjb2RlcyBhbmQgZ2lmdCBjYXJkc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kaXNjb3VudC1mb3JtOmFmdGVyLFxuI2dpZnRjYXJkLWZvcm06YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4jZGlzY291bnQtY291cG9uLWZvcm0sXG4uY2FydCAuZ2lmdGNhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgaDIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGxhYmVsIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbWluLXdpZHRoOiAxMDVweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLmZpZWxkLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG4gICAgLnZhbGlkYXRpb24tYWR2aWNlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgIH1cblxuICAgIC5idXR0b24td3JhcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcblxuICAgICAgICA+IGJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dC10ZXh0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBtYXJnaW46IDRweCAxMHB4IDAgMDtcbiAgICAgICAgd2lkdGg6IDE5MHB4O1xuICAgIH1cbn1cblxuLmNhcnQgLmdpZnRjYXJkIHAge1xuICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG59XG5cbi5jYXJ0IC5naWZ0Y2FyZCAuY2hlY2stZ2Mtc3RhdHVzIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nOiAwcHg7XG5cbiAgICA+IHNwYW4gPiBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IC0gQ2FydCBDcm9zcyBzZWxsXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY3Jvc3NzZWxsIHtcbiAgICBoMiB7XG4gICAgICAgIGNvbG9yOiAkYy1ibHVlO1xuICAgIH1cblxuICAgIC5pdGVtIGEucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG59XG5cbi8qIENoYW5nZSB0aGUgbGF5b3V0IHRvIDIgY29sdW1ucyBhdCBhIGJyZWFrcG9pbnQgdGhhdCBpcyBoaWdoZXIgdGhhbiBhIDMgY29sdW1ucyBsYXlvdXQgd291bGQgbm9ybWFsbHkgYnJlYWsgKi9cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG4gICAgLmNyb3Nzc2VsbCB7XG4gICAgICAgIC5wcm9kdWN0cy1ncmlkID4gbGk6bnRoLWNoaWxkKGV2ZW4pLFxuICAgICAgICAucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZCgzbiksXG4gICAgICAgIC5wcm9kdWN0cy1ncmlkID4gbGkge1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjEwIC8gNDQwKTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgyMCAvIDQ0MCk7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3RzLWdyaWQgPiBsaTpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogVW5kbyB0aHJlZS1jb2x1bW4gY29uZmlnICovXG4gICAgICAgIC5wcm9kdWN0cy1ncmlkID4gbGk6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5jYXJ0LXRhYmxlIHtcbiAgICAgICAgLmNhcnQtdGF4LXRvdGFsIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtOXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5jYXJ0LXRheC10b3RhbC1leHBhbmRlZCB7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTNweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgMzIwcHgpIHtcbiAgICAuY3Jvc3NzZWxsIHtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgLml0ZW0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMHB4IDQwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wcm9kdWN0LWRldGFpbHMgLmNyb3Nzc2VsbC1hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBPbmUgUGFnZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNoZWNrb3V0LW9uZXBhZ2UtaW5kZXggLmNvbC1yaWdodCxcbi5jaGVja291dC1vbmVwYWdlLWluZGV4IC5jb2wtbGVmdCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNoZWNrb3V0LW9uZXBhZ2UtaW5kZXggLmNvbC1tYWluIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBmbG9hdDogbm9uZTtcbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbGFyZ2UrMSkge1xuICAgIC5jaGVja291dC1vbmVwYWdlLWluZGV4IHtcbiAgICAgICAgLmNvbC1tYWluIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoNjYwcHgvOTYwcHgpO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2wtcmlnaHQsXG4gICAgICAgIC5jb2wtbGVmdCB7XG4gICAgICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgzMDBweC85NjBweCk7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2wtcmlnaHQge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3BjIHtcbiAgICBzZWxlY3Qge1xuICAgICAgICB3aWR0aDogKDIzMHB4ICsgMTM1cHgpO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2VjdGlvbiBTdHlsaW5nIC0gRGVmYXVsdFxuICovXG5cbi5vcGMgLnNlY3Rpb24gLnN0ZXAtdGl0bGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1kaXZpZGVyLWJvcmRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGluY2x1ZGUgbm90LXNlbGVjdGFibGU7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4ub3BjIC5zZWN0aW9uLmFsbG93Om5vdCguYWN0aXZlKSAuc3RlcC10aXRsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBVc2luZyAubm8tdG91Y2ggc2luY2UgdG91Y2ggZGV2aWNlcyBlbXVsYXRlIGhvdmVyLCB0aGVyZWJ5IG1ha2luZyBzdGVwcyBsb29rIGFjdGl2ZSB0aGF0IGFyZSBub3QgKi9cbi5uby10b3VjaCAub3BjIC5zZWN0aW9uLmFsbG93Om5vdCguYWN0aXZlKSAuc3RlcC10aXRsZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG59XG5cbi5vcGMgLnNlY3Rpb24uYWN0aXZlIC5zdGVwLXRpdGxlIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtZGl2aWRlci1ib3JkZXI7XG59XG5cbi5vcGMgLnNlY3Rpb24gLnN0ZXAtdGl0bGUgYSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLm9wYyAuc2VjdGlvbi5hbGxvdzpub3QoLmFjdGl2ZSkgLnN0ZXAtdGl0bGUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBwYWRkaW5nOiAwcHggMTBweDtcbn1cblxuLm5vLXRvdWNoIC5vcGMgLnNlY3Rpb24gLnN0ZXAtdGl0bGUgYTpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4ub3BjIC5zZWN0aW9uIC5zdGVwLXRpdGxlIC5udW1iZXIsXG4ub3BjIC5zZWN0aW9uLmFsbG93LmFjdGl2ZSAuc3RlcC10aXRsZSAubnVtYmVyLFxuLm5vLXRvdWNoIC5vcGMgLnNlY3Rpb24uYWxsb3c6aG92ZXIgLnN0ZXAtdGl0bGUgLm51bWJlciB7XG4gICAgd2lkdGg6IDI2cHg7XG4gICAgaGVpZ2h0OiAyNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICBsaW5lLWhlaWdodDogMjZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1hY3Rpb247XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogLTEzcHg7XG59XG5cbi5vcGMgLnNlY3Rpb24uYWxsb3cgLnN0ZXAtdGl0bGUgLm51bWJlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGludCgkYy1hY3Rpb24sIDUwJSk7XG59XG5cbi5vcGMgLnNlY3Rpb24uYWxsb3cgLnN0ZXAtdGl0bGUgaDIge1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG59XG5cbi5vcGMgLnNlY3Rpb24uYWxsb3cgLnN0ZXAtdGl0bGU6aG92ZXIgaDIsXG4ub3BjIC5zZWN0aW9uLmFjdGl2ZSAuc3RlcC10aXRsZSBoMiB7XG4gICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbn1cblxuLm9wYyAuc2VjdGlvbiAuc3RlcC10aXRsZSBoMiB7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogMHB4IDRweCAwcHggNDVweDtcbn1cblxuLm9wYyAuc2VjdGlvbiAuc3RlcCB7XG4gICAgcGFkZGluZzogJGJveC1zcGFjaW5nLWxhcmdlO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG4gICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICB9XG59XG5cbi5vcGMgc2VsZWN0IHtcbiAgICBtYXgtd2lkdGg6IDM2NXB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ub3BjIGgzIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ub3BjIC5idXR0b25zLXNldCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGJ1dHRvbi5idXR0b24ge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogJGdhcDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgcC5yZXF1aXJlZCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgLmJhY2stbGluayB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICBhIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcGFkZGluZzogNXB4IDVweCA1cHggMDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5vcGMsXG4gICAgLnBheXBhbC1leHByZXNzLXJldmlldyB7XG4gICAgICAgIC5idXR0b25zLXNldCAuYnV0dG9uICsgLmJ1dHRvbnMtc2V0IC5idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5vcGMgI29wYy1sb2dpbiB7XG4gICAgLnN0ZXAge1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgfVxuXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IDVweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5vcGMgI29wYy1sb2dpbiAuZGVzY3JpcHRpb24sXG4gICAgLm9wYyAjb3BjLWxvZ2luIHAucmVxdWlyZWQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuI29wYy1wYXltZW50IC5ub3RlIHtcbiAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFRoaXMgc2VjdGlvbiBoaWRlcyBldmVyeXRoaW5nIGJ1dCB0aGUgXCJDaGVja291dCBNZXRob2RcIiBzdGVwIG9mIHRoZSBjaGVja291dCBwcm9jZXNzIGFuZCBmYWRlcyBpbiB0aGUgY29udGVudFxuICogb25jZSB0aGUgY3VzdG9tZXIgcHJvZ3Jlc3NlcyB0byB0aGUgbmV4dCBzdGVwLiBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIHNpbXBsaWZ5IHdoYXQgdGhlIGN1c3RvbWVyIGhhcyB0byBmb2N1cyBvbi5cbiAqIEl0IGlzIGxpbWl0ZWQgdG8gbGFyZ2VyIHZpZXdwb3J0cyBzaW5jZSBzbWFsbGVyIGRldmljZXMgYXJlIGluaGVyZW50bHkgZ29pbmcgdG8gYmUgZm9jdXNlZCBzb2xlbHkgb24gdGhlXG4gKiBcIkNoZWNrb3V0IE1ldGhvZFwiIHN0ZXAuXG4gKi9cblxuLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uOm5vdCgjb3BjLWxvZ2luKSAuc3RlcC10aXRsZSxcbi5vcGMtYmxvY2stcHJvZ3Jlc3Mtc3RlcC1sb2dpbiB7XG4gICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSwgMzAwbXMpO1xufVxuXG4ub3BjLm9wYy1maXJzdHN0ZXAtbG9naW4gLnNlY3Rpb24jb3BjLWxvZ2luIC5zdGVwLXRpdGxlIC5udW1iZXIge1xuICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKHdpZHRoLCA4MG1zKTtcbn1cblxuLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uI29wYy1sb2dpbiAuc3RlcC10aXRsZSBoMiB7XG4gICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24obWFyZ2luLWxlZnQsIDgwbXMpO1xufVxuXG4vKiBXaGVuIGEgdXNlciBwcm9ncmVzc2VzIGZyb20gdGhlIFwiQ2hlY2tvdXQgTWV0aG9kXCIgdG8gXCJCaWxsaW5nIEluZm9ybWF0aW9uXCIgZm9yIHRoZSBmaXJzdCB0aW1lLCB0aGUgICAgICAgICAgICAgICovXG4vKiBcIm9wYy1oYXMtcHJvZ3Jlc3NlZC1mcm9tLWxvZ2luXCIgY2xhc3MgZ2V0cyBhZGRlZCB0byB0aGUgYm9keS4gQWxzbywgdGhlIC5vcGMgZWxlbWVudCB3aWxsIG9ubHkgaGF2ZSB0aGUgICAgICAgICAqL1xuLyogXCJvcGMtZmlyc3RzdGVwLWxvZ2luXCIgY2xhc3MgaWYgdGhlIGZpcnN0IHN0ZXAgb2YgdGhlIGNoZWNrb3V0IGlzIHRoZSBcIkNoZWNrb3V0IE1ldGhvZFwiIChlZywgbm90IHdoZW4gbG9nZ2VkIGluKSAqL1xuYm9keTpub3QoLm9wYy1oYXMtcHJvZ3Jlc3NlZC1mcm9tLWxvZ2luKSAub3BjLm9wYy1maXJzdHN0ZXAtbG9naW4gLnNlY3Rpb246bm90KCNvcGMtbG9naW4pIC5zdGVwLXRpdGxlLFxuYm9keTpub3QoLm9wYy1oYXMtcHJvZ3Jlc3NlZC1mcm9tLWxvZ2luKSAub3BjLWJsb2NrLXByb2dyZXNzLXN0ZXAtbG9naW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbmJvZHk6bm90KC5vcGMtaGFzLXByb2dyZXNzZWQtZnJvbS1sb2dpbikgLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uI29wYy1sb2dpbiAuc3RlcC10aXRsZSAubnVtYmVyIHtcbiAgICB3aWR0aDogMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbmJvZHk6bm90KC5vcGMtaGFzLXByb2dyZXNzZWQtZnJvbS1sb2dpbikgLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uI29wYy1sb2dpbiAuc3RlcC10aXRsZSBoMiB7XG4gICAgbWFyZ2luLWxlZnQ6IDBweDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2hpcHBpbmcgYW5kIFBheW1lbnQgbWV0aG9kc1xuICovXG5cbi5zcC1tZXRob2RzIHtcbiAgICBtYXJnaW46IDAgMCA4cHg7XG5cbiAgICBkdCB7XG4gICAgICAgIG1hcmdpbjogMTNweCAwIDVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGQgbGkge1xuICAgICAgICBtYXJnaW46IDVweCAwO1xuICAgIH1cbiAgICBsYWJlbCBpbWcgeyAvLyBUaGlzIGFwcGxpZXMgdG8gdGhlIFBheXBhbCBFeHByZXNzIGxhYmVsXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbiAgICBsYWJlbCBhIHsgLy8gVGhpcyBhcHBsaWVzIHRvIHRoZSBQYXlwYWwgRXhwcmVzcyBsYWJlbFxuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxuICAgIC5wcmljZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuZm9ybS1saXN0IHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDhweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWxlY3QubW9udGgge1xuICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG4gICAgc2VsZWN0LnllYXIge1xuICAgICAgICB3aWR0aDogOTZweDtcbiAgICB9XG4gICAgaW5wdXQuY3Z2IHtcbiAgICAgICAgd2lkdGg6IDRlbSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAjYWR2aWNlLXZhbGlkYXRlLWNjLWV4cC1jY3NhdmVfZXhwaXJhdGlvbiB7XG4gICAgICAgIG1heC13aWR0aDogMTMwcHg7XG4gICAgfVxuXG4gICAgLmNoZWNrbW8tbGlzdCB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDVweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNjVweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGFkZHJlc3Mge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMzVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yZWxlYXNlLWFtb3VudHMge1xuICAgICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgfVxuICAgIC5yZWxlYXNlLWFtb3VudHMgYnV0dG9uIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbjogNXB4IDEwcHggMCAwO1xuICAgIH1cbn1cblxuLyogT25lIFBhZ2UgQ2hlY2tvdXQgKi9cbi5ibG9jay1wcm9ncmVzcyB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuXG4gICAgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICB9XG4gICAgZHQge1xuICAgICAgICBwYWRkaW5nLXRvcDogNnB4O1xuICAgICAgICBAaW5jbHVkZSBoNDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIH1cblxuICAgIGR0LmNvbXBsZXRlIHtcbiAgICAgICAgY29sb3I6ICRjLWg0O1xuICAgIH1cbiAgICBkZCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG5cbiAgICAgICAgYWRkcmVzcyB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjcGF5bWVudC1wcm9ncmVzcy1vcGNoZWNrb3V0IC5zdWJ0aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1pbmZvIHtcblxuICAgICAgICBkdCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgM3B4IDA7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnOiAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGQge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLyogcmV2aWV3IHN0ZXAgKi9cbiNjaGVja291dC1yZXZpZXctdGFibGUge1xuICAgIC5idG4tcmVtb3ZlIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNjaGVja291dC1yZXZpZXctdGFibGUtd3JhcHBlciB7XG4gICAgY2xlYXI6IGJvdGg7IC8vIEZpeCB0YWJsZSBjbGVhcmluZyBpc3N1ZSBpbiBGaXJlZm94XG59XG5cbiNyZXZpZXctYnV0dG9ucy1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIC5idG4tY2hlY2tvdXQge1xuICAgICAgICBtaW4td2lkdGg6IDIyMHB4O1xuICAgIH1cbiAgICAucGxlYXNlLXdhaXQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cbiAgICAuZi1sZWZ0IHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbn1cblxuLy8gSGlkZSBhbGwgYnV0IHRoZSBmaXJzdCB0ciBpbnNpZGUgb2YgdGhlYWRcbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgLmxpbmVhcml6ZS10YWJsZS1sYXJnZS5jaGVja291dC1yZXZpZXctdGFibGUgdGhlYWQgdHI6bnRoLWNoaWxkKDFuKzIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIEhpZGUgYWxsIGJ1dCB0aGUgZmlyc3QgdHIgaW5zaWRlIG9mIHRoZWFkXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAubGluZWFyaXplLXRhYmxlLmNoZWNrb3V0LXJldmlldy10YWJsZSB0aGVhZCB0cjpudGgtY2hpbGQoMW4rMikge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLyogc2hvdy9oaWRlIFwiY2hhbmdlXCIgbGluayBmb3IgcHJvZ3Jlc3Mgc3RlcCBkZXBlbmQgb24gY29tcGxldGUgc3RhdHVzXG4gKiBzaG91bGQgYmUgcGxhY2VkIGluIC5jc3MgZmlsZSAqL1xuLm9wYy1ibG9jay1wcm9ncmVzcyBkdC5jb21wbGV0ZSBhLFxuLm9wYy1ibG9jay1wcm9ncmVzcyBkdC5jb21wbGV0ZSAuc2VwYXJhdG9yIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbi5vcGMtYmxvY2stcHJvZ3Jlc3MgZHQgYSxcbi5vcGMtYmxvY2stcHJvZ3Jlc3MgZHQgLnNlcGFyYXRvciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogT24gc21hbGwgc2NyZWVucywgdGhlIHByb2dyZXNzIHJldmlldyBjb250ZW50IHdpbGwgYmUgbW92ZWQgdG8gdGhlIHJldmlldyBzdGVwIHZpYSBKUy4gU3R5bGVkIHZpYSB0aGlzIENTUzogKi9cbiNjaGVja291dC1zdGVwLXJldmlldyAub3BjLWJsb2NrLXByb2dyZXNzIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgICAuYmxvY2stdGl0bGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuYmxvY2stY29udGVudCB7XG4gICAgICAgIC8vIE92ZXJyaWRlIHRoZSBuby1kaXNwbGF5XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgJiA+IGRsID4gZGl2IHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgJiA+IGRsID4gZGl2IHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jaGFuZ2VsaW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICNjaGVja291dC1yZXZpZXctdGFibGUgdGhlYWQgPiB0ciA+IHRoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuICAgICNjaGVja291dC1yZXZpZXctdGFibGUgdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4jY2hlY2tvdXQtc3RlcC1yZXZpZXcgLmNlbnRpbmVsIHtcbiAgICAmPiBwIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgIH1cblxuICAgIGlmcmFtZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiA0MDBweDtcbiAgICB9XG59XG5cbi8qIEdpZnQgb3B0aW9ucyAqL1xuLmdpZnQtbWVzc2FnZXMtZm9ybSB7XG4gICAgLml0ZW0ge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgbWFyZ2luLXRvcDogJHRyaW07XG5cbiAgICAgICAgaDUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRldGFpbHMge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5naWZ0LW1lc3NhZ2UtZm9ybSB7XG4gICAgLmlubmVyLWJveCB7XG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAmLmV4dHJhLW9wdGlvbnMtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdpZnQtd3JhcHBpbmctZm9ybSB7XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJveC1zcGFjaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmdpZnQtd3JhcHBpbmctZGVzaWduIHtcbiAgICAgICAgICAgIGhlaWdodDogNzVweDtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5pbWFnZS1ib3gge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdpZnQtaXRlbSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2FwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggJGMtZGl2aWRlci1ib3JkZXI7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWltZy1ib3gge1xuICAgICAgICAgICAgd2lkdGg6IDIwMHB4O1xuXG4gICAgICAgICAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDc1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5maWVsZHNldCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMjAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKCdtYXgtd2lkdGgnLCAkYnAtbWVkaXVtKSB7XG4gICAgLmdpZnQtbWVzc2FnZS1mb3JtIHtcblxuICAgICAgICAuZ2lmdG1lc3NhZ2UtYXJlYXtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5naWZ0LWl0ZW0ge1xuICAgICAgICAgICAgLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5maWVsZHNldCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcblxuICAgICAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDaGVja291dCAtIFN1Y2Nlc3NcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGVja291dC1vbmVwYWdlLXN1Y2Nlc3Mge1xuICAgIC5jb2wtbWFpbiB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICBtYXJnaW46ICRnYXAgMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ29uZmlndXJhYmxlIFN3YXRjaGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBDbGVhcnMgKi9cbi5jbGVhcmZpeCxcbi5jb25maWd1cmFibGUtc3dhdGNoLWxpc3QsXG4ucHJvZHVjdC12aWV3IC5wcm9kdWN0LW9wdGlvbnMgLnN3YXRjaC1hdHRyIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4vKiBHZW5lcmFsIFN3YXRjaCBTdHlsaW5nICovXG4uc3dhdGNoLWxpbmssXG4uc3dhdGNoLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzIC0gMjtcbiAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAkYy1oNDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbi5zd2F0Y2gtbGluayB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBtYXJnaW46IDAgMCAzcHg7XG5cbiAgICBpbWcge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzIC0gMztcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgLngge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB0ZXh0LWluZGVudDogLTk5OWVtO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9iZ194LnBuZykgY2VudGVyIG5vLXJlcGVhdCB0cmFuc3BhcmVudDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxuXG4gICAgJi5oYXMtaW1hZ2Uge1xuICAgICAgICAuc3dhdGNoLWxhYmVsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc3dhdGNoLWxhYmVsIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xufVxuXG4uY29uZmlndXJhYmxlLXN3YXRjaC1saXN0IHtcbiAgICBtYXJnaW4tbGVmdDogLTNweDtcbiAgICB6b29tOiAxO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7XG5cbiAgICBsaSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB6b29tOiAxO1xuICAgICAgICBtYXJnaW46IDAgMCAwIDNweDtcbiAgICB9XG5cbiAgICAucHJvZHVjdHMtZ3JpZCAmIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cblxuICAgIC5ub3QtYXZhaWxhYmxlIHtcbiAgICAgICAgLngge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuc3dhdGNoLWxpbmsge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmLmhhcy1pbWFnZSBpbWcge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnN3YXRjaC1sYWJlbCB7XG4gICAgICAgICAgICBjb2xvcjogI2FhYTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud2lkZS1zd2F0Y2ggLnN3YXRjaC1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgIH1cblxuICAgIC5ub3QtYXZhaWxhYmxlIGE6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiAwO1xuICAgIH1cbn1cblxuI25hcnJvdy1ieS1saXN0IGRkIHtcbiAgICAuY29uZmlndXJhYmxlLXN3YXRjaC1saXN0IGxpIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMCAzcHg7XG4gICAgICAgIHdpZHRoOiA0NyU7XG4gICAgfVxuXG4gICAgLnN3YXRjaC1saW5rIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBsaW5lLWhlaWdodDogJGYtc2l6ZSArIDExcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICYuaGFzLWltYWdlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciAuc3dhdGNoLWxhYmVsIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlci1oaWdobGlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3dhdGNoLWxhYmVsIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMgLSAyO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICAgICAgbWFyZ2luOiAwIDVweCAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDFweCA1cHg7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzIC0gMnB4O1xuICAgICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaGFzLWltYWdlIC5zd2F0Y2gtbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLy8gUHJldmVudCBvZGQgd3JhcHBpbmcgaXNzdWUgd2hlbiBzd2F0Y2hlcyBoYXZlIGJvdGggdGV4dCBhbmQgaW1hZ2VzXG4gICAgI25hcnJvdy1ieS1saXN0IGRkIC5jb25maWd1cmFibGUtc3dhdGNoLWxpc3QgbGk6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICB9XG59XG5cbi5jdXJyZW50bHkge1xuICAgIC5zd2F0Y2gtY3VycmVudCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAuYnRuLXJlbW92ZSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3dhdGNoLWxpbmsge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgM3B4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBPdGhlciBTd2F0Y2ggU3RhdGVzICovXG4uY29uZmlndXJhYmxlLXN3YXRjaC1saXN0IC5ob3ZlciAuc3dhdGNoLWxpbmssXG4uY29uZmlndXJhYmxlLXN3YXRjaC1saXN0IC5zZWxlY3RlZCAuc3dhdGNoLWxpbmssXG4uc3dhdGNoLWxpbms6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlci1oaWdobGlnaHQ7XG59XG5cbi5jb25maWd1cmFibGUtc3dhdGNoLWJveCB7XG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgc2VsZWN0LnN3YXRjaC1zZWxlY3Qge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC52YWxpZGF0aW9uLWFkdmljZSB7XG4gICAgICAgIG1hcmdpbjogMCAwIDVweDtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtZGFuZ2VyO1xuICAgICAgICBwYWRkaW5nOiAycHggNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMgLSAyO1xuICAgIH1cbn1cblxuLyogQ1VTVE9NICovXG4uYXZhaWxhYmlsaXR5Lm91dC1vZi1zdG9jayBzcGFuIHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xufVxuXG4ucHJvZHVjdC12aWV3IHtcbiAgICAucHJvZHVjdC1vcHRpb25zIHtcbiAgICAgICAgLnN3YXRjaC1hdHRyIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIGJvcmRlcjogMDtcblxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAuc2VsZWN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc2VsZWN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtdGV4dC1wcmltYXJ5O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGQgLmlucHV0LWJveCB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zZWxlY3QtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydCBidXR0b24ub3V0LW9mLXN0b2NrIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTM2MnB4O1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDdXN0b21lclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmN1c3RvbWVyLWFjY291bnQtbG9naW4ge1xuICAgIC5zY2FmZm9sZC1mb3JtIHtcbiAgICAgICAgbGFiZWw6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgd2lkdGg6IDExNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbDItc2V0IHtcbiAgICAgICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAwO1xuXG4gICAgICAgICAgICBidXR0b24sXG4gICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IGRpc2M7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJGdhcCAwICRnYXAgKiAyIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtaW4td2lkdGgsICRicC14c21hbGwgKyAxKSB7XG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEsXG4gICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkdHJpbSAqIDI7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkdHJpbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogJHRyaW07XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgLmNvbDItc2V0IHAucmVxdWlyZWQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmN1c3RvbWVyLWFjY291bnQtY3JlYXRlIHtcbiAgICAuc2NhZmZvbGQtZm9ybSB7XG4gICAgICAgIGxhYmVsOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNDBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm9wYyAjb3BjLWxvZ2luIHA6bm90KC5yZXF1aXJlZCkge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbn1cblxuLnJlbWVtYmVyLW1lLWJveCB7XG4gICAgYS5oaWRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmxpbmstdGlwIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGdhcDtcbiAgICB9XG59XG5cbi5yZW1lbWJlci1tZS1wb3B1cCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLnNob3cge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLWRlZmF1bHQ7XG4gICAgfVxuXG4gICAgLnJlbWVtYmVyLW1lLXBvcHVwLWNsb3NlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICB9XG5cbiAgICAucmVtZW1iZXItbWUtcG9wdXAtY2xvc2UtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5jdXN0b21lci1hY2NvdW50LWNyZWF0ZSB7XG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWF4LXdpZHRoOiA0NTVweDtcbiAgICB9XG5cbiAgICAuZmllbGRzZXQsXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICR0cmltO1xuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmllbGRzZXQgLmhpZGRlbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgI3JlbWVtYmVyLW1lLXBvcHVwIHtcbiAgICAgICAgbWF4LXdpZHRoOiA0NTVweDtcbiAgICB9XG59XG5cbi5jdXN0b21lci1hY2NvdW50LWZvcmdvdHBhc3N3b3JkIHtcbiAgICAuZmllbGRzZXQsXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICR0cmltO1xuICAgICAgICBtYXgtd2lkdGg6IDQwMHB4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmllbGRzZXQgLmlucHV0LWJveCBpbnB1dC5pbnB1dC10ZXh0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBNeSBBY2NvdW50IEdsb2JhbCBTdHlsZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5ib2R5LmN1c3RvbWVyLWFjY291bnQge1xuICAgIC5teS1hY2NvdW50IHtcbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgaDEge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnRpdGxlLWJ1dHRvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgICAgIGgxIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgc3Bhbi5zZXBhcmF0b3Ige1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB0b3A6IC00MnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZpZWxkc2V0IGgyLFxuICAgICAgICAuYWRkcmVzc2VzLWxpc3QgaDIsXG4gICAgICAgIC5vcmRlci1kZXRhaWxzIGgyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFkZHJlc3Nlcy1saXN0IGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZmllbGRzZXQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHRyaW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhLXRhYmxlIHtcbiAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3Bhbi5ub2JyIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZC52aWV3IHtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnNlcGFyYXRvciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNpZGViYXIge1xuICAgICAgICAuYmxvY2sge1xuICAgICAgICAgICAgb2wjY29tcGFyZS1pdGVtcyB7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRib3gtc3BhY2luZyAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHAuYmxvY2stc3VidGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuYWN0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR0cmltO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9sI2NhcnQtc2lkZWJhci1yZW9yZGVyIHtcbiAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5wcm9kdWN0LW5hbWUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmJsb2NrLWNhcnQge1xuICAgICAgICAgICAgLnN1bW1hcnkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmJsb2NrLXJlb3JkZXIge1xuICAgICAgICAgICAgb2wjY2FydC1zaWRlYmFyLXJlb3JkZXIge1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZvcm0tbGlzdCB7XG4gICAgLmN1c3RvbWVyLWRvYiB7XG4gICAgICAgIC5kb2ItbW9udGgsXG4gICAgICAgIC5kb2ItZGF5IHtcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIC5kb2IteWVhciB7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBEYXNoYm9hcmRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5kYXNoYm9hcmQge1xuICAgIC5ib3gtaGVhZCB7XG4gICAgICAgIG1hcmdpbi10b3A6ICR0cmltO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDdweDtcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtbDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYm94LXRpdGxlLFxuICAgIC5ib3gtaGVhZCB7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ib3gtYWNjb3VudCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0MHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNDVweDtcblxuICAgICAgICBwLFxuICAgICAgICBhZGRyZXNzIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2wyLXNldCB7XG4gICAgICAgIC5jb2wtMSxcbiAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHBlcmNlbnRhZ2UoNzUvNjIwKTtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAuYm94LXRpdGxlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG5cbiAgICAgICAgICAgICAgICBoMixcbiAgICAgICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICgxLjQgKiAkZi1zaXplKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYm94LXJldmlld3Mge1xuICAgICAgICAmLmJveC1hY2NvdW50IHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nIDA7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm51bWJlciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG5cbiAgICAgICAgICAgICAgICAucmF0aW5ncyB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5yYXRpbmctYm94IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAzcHggMCAwIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEFkZHJlc3MgQm9va1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm15LWFjY291bnQge1xuICAgIC5hZGRyZXNzZXMtbGlzdCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcblxuICAgICAgICAuY29sLTEsXG4gICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwICR0cmltIDA7XG5cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICAgICAgLmNvbC0xLFxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcblxuICAgICAgICAgICAgICAgIGxpLmVtcHR5IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAgICAgICAgIC5hZGRyZXNzZXMtYWRkaXRpb25hbCB7XG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogT3JkZXIgVmlld1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm9yZGVyLWluZm8ge1xuICAgIHBhZGRpbmctYm90dG9tOiAkYm94LXNwYWNpbmc7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG5cbiAgICBkdCxcbiAgICBkZCxcbiAgICB1bCxcbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICB9XG5cbiAgICBkdCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogKCRib3gtc3BhY2luZyoyKTtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgKCRib3gtc3BhY2luZyoyKTtcblxuICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5vcmRlci1kYXRlIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ub3JkZXItaW5mby1ib3gge1xuICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgICsgLm9yZGVyLWluZm8tYm94IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIH1cblxuICAgIC5jb2wtMSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiA0OCU7XG4gICAgfVxuXG4gICAgLmNvbC0yIHtcbiAgICAgICAgd2lkdGg6IDUyJTtcbiAgICB9XG5cbiAgICAuY29sLTEsXG4gICAgLmNvbC0yIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5ib3gtdGl0bGUge1xuICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ib3gtY29udGVudCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG5cbiAgICAgICAgdGQsXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICAgIH1cblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJGJveC1zcGFjaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkdHJpbS1zbWFsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jbXktb3JkZXJzLXRhYmxlIHtcbiAgICAub3B0aW9uLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIH1cblxuICAgIC5vcHRpb24tdmFsdWUge1xuICAgICAgICBtYXJnaW4tbGVmdDogJGJveC1zcGFjaW5nICogMjtcbiAgICB9XG5cbiAgICB0ci5idW5kbGU6bm90KDpsYXN0LWNoaWxkKSB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxufVxuXG5vbCNjYXJ0LXNpZGViYXItcmVvcmRlciB7XG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgICNteS1vcmRlcnMtdGFibGUge1xuICAgICAgICAub3B0aW9uLWxhYmVsIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm9wdGlvbi12YWx1ZSB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMzVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkW2RhdGEtcndkLWxhYmVsPVF0eV0gLm5vYnIge1xuICAgICAgICAgICAgYnIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ci5idW5kbGUge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgdHIuYnVuZGxlLmNoaWxkIHtcbiAgICAgICAgICAgIHRkW2RhdGEtcndkLWxhYmVsXSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHk6bGFzdC1jaGlsZCB0cjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRmb290IHRyLnNoaXBwaW5nIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5vcmRlci1hZGRpdGlvbmFsIHtcbiAgICBtYXJnaW46IDQwcHggMDtcbn1cblxuLm9yZGVyLWdpZnQtbWVzc2FnZSB7XG4gICAgZGQge1xuICAgICAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14bGFyZ2UpIHtcbiAgICAuZGFzaGJvYXJkIHtcbiAgICAgICAgLmNvbDItc2V0IHtcbiAgICAgICAgICAgIC5jb2wtMSxcbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHRyaW07XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBib2R5LmN1c3RvbWVyLWFjY291bnQge1xuICAgICAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgICAgICB0ZC52aWV3IGEge1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG4gICAgYm9keS5jdXN0b21lci1hY2NvdW50IHtcbiAgICAgICAgLm15LWFjY291bnQge1xuICAgICAgICAgICAgLnRpdGxlLWJ1dHRvbnMge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICBzcGFuLnNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAtMTJweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIGJvZHkuY3VzdG9tZXItYWNjb3VudCB7XG4gICAgICAgIC5kYXRhLXRhYmxlIHtcbiAgICAgICAgICAgICYub3JkZXJzIHtcbiAgICAgICAgICAgICAgICB0aC5zaGlwLFxuICAgICAgICAgICAgICAgIHRkLnNoaXAsXG4gICAgICAgICAgICAgICAgdGQuc3RhdHVzLFxuICAgICAgICAgICAgICAgIHRoLnN0YXR1cyB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm9yZGVyLWluZm8tYm94IHtcbiAgICAgICAgLmJveC1jb250ZW50IHtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFkZHJlc3Nlcy1saXN0IHtcbiAgICAgICAgLml0ZW0ge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHRyaW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3JkZXItaW5mbyB7XG4gICAgICAgIGR0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGFzaGJvYXJkIHtcbiAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgICAgICAgICAgaDEge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAud2VsY29tZS1tc2cge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuXG4gICAgICAgICAgICAuaGVsbG8ge1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gtYWNjb3VudCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEsXG4gICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0OCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA0JTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgYm9keS5jdXN0b21lci1hY2NvdW50IHtcbiAgICAgICAgLm15LWFjY291bnQge1xuICAgICAgICAgICAgLmZvcm0tbGlzdCB7XG4gICAgICAgICAgICAgICAgLmNvbnRyb2wge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICBib2R5LmN1c3RvbWVyLWFjY291bnQge1xuICAgICAgICAubXktYWNjb3VudCB7XG4gICAgICAgICAgICAucGFnZS10aXRsZSB7XG4gICAgICAgICAgICAgICAgaDEge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAudGl0bGUtYnV0dG9ucyB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcblxuICAgICAgICAgICAgICAgICAgICArIC5idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmZpZWxkc2V0IHtcbiAgICAgICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm9yZGVyLWRldGFpbHMgaDIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZGRyZXNzZXMtbGlzdCB7XG4gICAgICAgICAgICAgICAgLml0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm9yZGVyLWluZm8ge1xuICAgICAgICBtYXJnaW4tdG9wOiAkdHJpbS1zbWFsbDtcbiAgICB9XG5cbiAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgICYub3JkZXJzIHtcbiAgICAgICAgICAgIC5saW5rLXJlb3JkZXIsXG4gICAgICAgICAgICAuZGF0ZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGQudmlldyB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGFzaGJvYXJkIHtcbiAgICAgICAgLmNvbDItc2V0IHtcbiAgICAgICAgICAgIC5jb2wtMSxcbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAub3JkZXItaW5mby1ib3gge1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgLmNvbC0xLFxuICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgICAgIHBhZGRpbmc6ICR0cmltLXNtYWxsIDA7XG4gICAgICAgIH1cblxuICAgICAgICArIC5vcmRlci1pbmZvLWJveCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNteS1yZXZpZXdzLXRhYmxlIHtcbiAgICAgICAgLm5vYnIge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTmV3c2xldHRlciBTdWJzY3JpcHRpb25zXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5ib2R5Lm5ld3NsZXR0ZXItbWFuYWdlLWluZGV4IC5teS1hY2NvdW50IHtcbiAgICAuZmllbGRzZXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cblxuICAgIC5maWVsZHNldCBoMiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmZvcm0tbGlzdCB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1maWVsZHNldC1ib3JkZXItbGlnaHQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiAkZ2FwO1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ29udGFjdHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jb250YWN0cy1pbmRleC1pbmRleCB7XG4gICAgLmNvbC1tYWluIHtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmxlZnQtZm9ybSB7XG4gICAgICAgIC5wYWdlLXRpdGxlIHtcbiAgICAgICAgICAgIGgxIHtcbiAgICAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtdGV4dC1ncmF5O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAucmlnaHQtZm9ybSB7XG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbiAgICAgICAgfVxuICAgICAgICAubWFwLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDUwcHgpIHtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2NvbnRhY3RGb3JtIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA4MHB4O1xuICAgICAgICAuaW5wdXQtYm94IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIHdpZHRoOiAzNSU7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICAgICAgZW0ge1xuICAgICAgICAgICAgICAgY29sb3I6ICRjLXJlZC1lbm5pczsgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICR0cmltO1xuICAgICAgICBtYXgtd2lkdGg6IDQzNXB4O1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICBwLnJlcXVpcmVkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzMwcHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwLnJlcXVpcmVkIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgIH1cbiAgICB9XG59XG5cbiBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgICAgIC5jb250YWN0cy1pbmRleC1pbmRleCB7XG4gICAgICAgICAgICAgICAgI2NvbnRhY3RGb3JtIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuIH1cbiIsIi5maW5kLWEtcmVwLXZpZXcge1xuXHRtYXJnaW46IDFlbTtcblx0cGFkZGluZy1ib3R0b206IDJlbTtcblx0LmJyZWFkY3J1bWJzIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdGJvcmRlci1ib3R0b206IDA7XG5cdH1cblx0LmJ1dHRvbiB7XG5cdFx0bWFyZ2luOiAwIC41ZW0gLjVlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxNXB4O1xuXHR9XG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG59XG5cbi5maW5kLWEtcmVwLXRpdGxlIHtcblx0Ym9yZGVyLXRvcDogMDtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0b3ZlcmZsb3c6IGF1dG87XG5cdHBhZGRpbmc6IDEuNWVtIDBlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgICBib3JkZXItdG9wOiAycHggZG90dGVkICNBMEEwQTA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBkb3R0ZWQgI0EwQTBBMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XHRcblx0aDEge1xuXHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcdGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0fVxuICAgICAgICAuZm9ybS1ncm91cCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggIzY0NjQ2MyBzb2xpZDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgLjI1cyBlYXNlLWluLW91dDtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24uYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkYjgxMztcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3Qge21heC13aWR0aDogMTAwJTt9XG4gICAgICAgIH1cbn1cblxuLmNhcmQtY29udGFpbmVyIHtcblx0QGluY2x1ZGUgZGlzcGxheShmbGV4KTtcblx0QGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTtcblx0QGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuXHRAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoZmxleC1zdGFydCk7XG59XG5cbi5lbm5pcy1yZXAge1xuXHRtYXJnaW46IDAgYXV0byAxZW07XG5cdEBpbmNsdWRlIGZsZXgoMSk7XG5cdC8qQGluY2x1ZGUgZmxleC1iYXNpcygxMDAlKTsqL1xuICAgICAgICBoMyB7XG5cdFx0Zm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblx0aDQge1xuXHRcdGNvbG9yOiAjMTYxNjE2O1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHR9XG5cdG1hcmdpbi1ib3R0b206IDJlbTtcblx0bWF4LXdpZHRoOiAyNDVweDtcbn1cblxuLnJlcC1pbWFnZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5yZXAtY29udGFjdCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG5cdHBhZGRpbmc6IDFlbTtcbiAgICAgICAgbWluLWhlaWdodDogNDAwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuXHRwIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblx0YSB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdH1cblx0bWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLXNtYWxsKSB7XG5cdC5jYXJkLWNvbnRhaW5lciB7XG5cdFx0QGluY2x1ZGUgZmxleC1kaXJlY3Rpb24ocm93KTtcblx0fVxuXHQuZmluZC1hLXJlcC12aWV3IHtcblx0XHQuYnV0dG9uIHtcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRcdH1cblx0XHR9XHRcdFxuXHR9XG5cdC5lbm5pcy1yZXAge1xuXHRcdEBpbmNsdWRlIGZsZXgoMSk7XG5cdFx0LypAaW5jbHVkZSBmbGV4LWJhc2lzKDUwJSk7Ki9cblx0fVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0pIHtcblx0Ly8gLmNhcmQtY29udGFpbmVyIHtcblx0Ly8gXHRAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihyb3cpO1xuXHQvLyB9XHRcblx0LmVubmlzLXJlcCB7XG5cdFx0LypAaW5jbHVkZSBmbGV4LWJhc2lzKDI1JSk7Ki9cbiAgICAgICAgbWFyZ2luOiAwIDIuOCUgMWVtIDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAmOm50aC1vZi10eXBlKDRuKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cblx0fVxufSIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUGF5UGFsXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucGF5cGFsLXJldmlldy1vcmRlciB7XG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtICsgMTAwKSB7XG4gICAgICAgIEBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAgICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAgICAgLmNvbC0xLFxuICAgICAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5mby1zZXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJGdhcDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWZpZWxkc2V0LWJvcmRlci1saWdodDtcbiAgICB9XG5cbiAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG4gICAgICAgIGJvcmRlcjogMDtcblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZmllbGQuaW5hY3RpdmUge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4udG9wLWNvbnRhaW5lciAuYm1sLWFkIHtcbiAgICBtYXJnaW4tdG9wOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYm1sLWFkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIH1cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIGE6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuICAgIGltZyB7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OyAvLyBPdmVycmlkZSBpbmxpbmUgc3R5bGVcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLy8gUHJldmVudCBzbWFsbCAycHggc3BhY2Ugb24gcmlnaHQgc2lkZSBvZiBpbWFnZVxuLmNhcnQtdG90YWxzLXdyYXBwZXIgLmJtbC1hZC5sYXJnZSBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMDtcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmJtbC1hZC5zbWFsbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC5ibWwtYWQubGFyZ2Uge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbmRpdi5wYXlwYWwtbG9nbyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbjogJHRyaW0tc21hbGwgMDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwYW4gPiBpbWcge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmNoZWNrb3V0LXR5cGVzIHtcbiAgICBkaXYucGF5cGFsLWxvZ28ge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG59XG5cbi5ibWwtY2hlY2tvdXQtdHlwZSB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4uc2lkZWJhciB7XG4gICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcblxuICAgICAgICA+IGEge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUmV2aWV3IC0gQ3VzdG9tZXJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNjdXN0b21lci1yZXZpZXdzIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBmbG9hdDogbm9uZTtcblxuICAgIC5yZXZpZXctaGVhZGluZyB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgcGFkZGluZzogJGdhcCAwIDVweDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlciB7XG4gICAgICAgICAgICBjbGVhcjogbm9uZTtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuXG4gICAgICAgICAgICAuY291bnQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAubGltaXRlciB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYW1vdW50IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDIge1xuICAgICAgICBjb2xvcjogJGMtYmx1ZTtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogJGMtYmx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5maWVsZHNldCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyNXB4O1xuICAgICAgICB3aWR0aDogNDcwcHg7XG5cbiAgICAgICAgaDQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAgICAgZW0ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1saXN0IHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIG1hcmdpbjogJGdhcCAwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIHdpZHRoOiA0NzBweDtcblxuICAgICAgICAgICAgLmlubGluZS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5pbnB1dC1ib3gge1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAgICAgICAgICAgJlt0eXBlPVwidGV4dFwiXSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB3aWR0aDogNDcwcHg7XG4gICAgfVxuXG4gICAgZGwge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuXG4gICAgICAgIGR0IHtcbiAgICAgICAgICAgIG1hcmdpbjogJGdhcCAwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgIG1hcmdpbjogJGdhcCAwO1xuXG4gICAgICAgICAgICAucmF0aW5ncy10YWJsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnJldmlldy1sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3MCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZXZpZXctbWV0YSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWJsdWU7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJldmlldy1zdW1tYXJ5LXRhYmxlIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBtYXJnaW46IDAgMCAkZ2FwO1xuXG4gICAgdGhlYWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggN3B4IDEwcHggOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuICAgICAgICB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICB9XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMXB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmF0aW5nLWJveCB7XG4gICAgICAgIC5yYXRpbmctbnVtYmVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtNTk5cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEzcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkZi1zaXplO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHRvcDogMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFJhdGluZ3MgLSBHbG9iYWxcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5yYXRpbmdzLXRhYmxlIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIHRoIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAucmF0aW5nLWJveCB7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC02MTVweDtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtaW5kZW50OiAtOTk5OXB4O1xuICAgICAgICB3aWR0aDogNjVweDtcblxuICAgICAgICAucmF0aW5nIHtcbiAgICAgICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjAwcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGhlaWdodDogMTNweDtcbiAgICAgICAgICAgIHRleHQtaW5kZW50OiAtOTk5OXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgYm9keS5yZXZpZXctcHJvZHVjdC1saXN0IHtcbiAgICAgICAgLnByb2R1Y3QtdmlldyB7XG4gICAgICAgICAgICAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgICAgICAgICAucHJpY2UtaW5mbyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuZXh0cmEtaW5mbyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogODQlO1xuXG4gICAgICAgICAgICAgICAgICAgIC5yYXRpbmdzLXRhYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogJGdhcCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDUzNXB4KSB7XG4gICAgYm9keS5yZXZpZXctcHJvZHVjdC1saXN0IHtcbiAgICAgICAgLnByb2R1Y3QtdmlldyB7XG4gICAgICAgICAgICAucHJvZHVjdC1zaG9wIHtcbiAgICAgICAgICAgICAgICAuZXh0cmEtaW5mbyB7XG4gICAgICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMDtcblxuICAgICAgICAgICAgICAgICAgICAucmF0aW5ncy10YWJsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA1MjBweCkge1xuICAgICNjdXN0b21lci1yZXZpZXdzIHtcbiAgICAgICAgLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAuZm9ybS1saXN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5pbmxpbmUtbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgLmlucHV0LWJveCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yZXZpZXctc3VtbWFyeS10YWJsZSB7XG5cbiAgICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0Ym9keSB7XG4gICAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnJhdGluZy1ib3gge1xuICAgICAgICAgICAgICAgIHRleHQtaW5kZW50OiAwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkZi1zaXplICogMS40O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgLnJhdGluZyB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5yYXRpbmctbnVtYmVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA0NTBweCkge1xuICAgICNjdXN0b21lci1yZXZpZXdzIGRsIGRkIC5yYXRpbmdzLXRhYmxlIHRyIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBSZXZpZXcgVmlldyBQYWdlXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnJldmlldy1wcm9kdWN0LXZpZXcge1xuICAgIC5wcm9kdWN0LXJldmlldyB7XG4gICAgICAgIC5wcm9kdWN0LWRldGFpbHMge1xuICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCU7XG5cbiAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wcm9kdWN0LWltYWdlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAoJ21heC13aWR0aCcsICRicC1tZWRpdW0pIHtcbiAgICAucmV2aWV3LXByb2R1Y3QtdmlldyB7XG4gICAgICAgIC5wcm9kdWN0LXJldmlldyB7XG4gICAgICAgICAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNsaWRlc2hvd1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNsaWRlc2hvdy1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46ICRnYXAgMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuXG4gICAgLnNsaWRlc2hvdyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyOiAxMHB4IHNvbGlkICNGRkZGRkY7XG4gICAgICAgICYgPiBsaSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgICAgIC8vIGluIGNhc2Ugc2NyaXB0IGRvZXMgbm90IGxvYWRcbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICAgICAgei1pbmRleDogMTAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNsaWRlc2hvdy1wYWdlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDExNTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgdG9wOiBhdXRvO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgQGluY2x1ZGUgbm90LXNlbGVjdGFibGU7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsO1xuICAgICAgICB3aWR0aDogNDRweDtcbiAgICAgICAgaGVpZ2h0OiA0NHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGNvbG9yOiAjREREREREO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICRwYWdlci1zaXplOiAxNnB4O1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogJHBhZ2VyLXNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRwYWdlci1zaXplO1xuICAgICAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogKC0kcGFnZXItc2l6ZS8yKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICgtJHBhZ2VyLXNpemUvMik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYnV0dG9uLWhvdmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jeWNsZS1wYWdlci1hY3RpdmU6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1hY3RpdmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gKiB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi5zbGlkZXNob3ctcHJldixcbi5zbGlkZXNob3ctbmV4dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTUlO1xuICAgIG1heC13aWR0aDogODBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIHotaW5kZXg6IDExMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgbm90LXNlbGVjdGFibGUoKTtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC0xNXB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgICBAaW5jbHVkZSBvcGFjaXR5KDAuNSk7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG59XG5cbi5zbGlkZXNob3ctcHJldiB7XG4gICAgbGVmdDogOHB4O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBib3JkZXItd2lkdGg6IDE1cHggMTVweCAxNXB4IDA7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI0ZGRkZGRiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgfVxuXG4gICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICRjLWJ1dHRvbi1ob3ZlciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbi5zbGlkZXNob3ctbmV4dCB7XG4gICAgcmlnaHQ6IDhweDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxNXB4IDAgMTVweCAxNXB4O1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNGRkZGRkY7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICByaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJGMtYnV0dG9uLWhvdmVyO1xuICAgIH1cbn1cblxuLmN5Y2xlLWNhcHRpb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm90dG9tOiAxNXB4O1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHotaW5kZXg6IDExMDtcbn1cblxuLmN5Y2xlLW92ZXJsYXkge1xuICAgIGZvbnQtZmFtaWx5OiB0YWhvbWEsIGFyaWFsO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgei1pbmRleDogMTIwO1xuICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIG9wYWNpdHk6IC41O1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBXaXNobGlzdFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuI3dpc2hsaXN0LXRhYmxlIHtcbiAgICB0aCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAmLmNsZWFuLXRhYmxlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhlYWQgdGgge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53aXNobGlzdC1za3Uge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICB9XG5cbiAgICB0ZXh0YXJlYSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWlucHV0LWJvcmRlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogNDVweDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4cztcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgICAgICY6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgICAgICY6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgICAgICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1pbnB1dC1ib3JkZXItZm9jdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS1tYW5hZ2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgbWF4LXdpZHRoOiA0NTBweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDVweDtcblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG4gICAgICAgICAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcnQtY2VsbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICB0ZCB7XG4gICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbWFnZSB7XG4gICAgICAgICAgICB3aWR0aDogMTEzcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcXVhbnRpdHkge1xuICAgICAgICAgICAgd2lkdGg6IDNlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1wcmljZSB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tY2FydCB7XG4gICAgICAgICAgICB3aWR0aDogMTUwcHg7XG5cbiAgICAgICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC50cnVuY2F0ZWQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gcCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnJlbW92ZS13aGlzaGxpc3QtaXRlbSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLXJlbW92ZSB7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1yZW1vdmUge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9uLFxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLnByaWNlLWJveCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG5cbiAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmdpZnRyZWdpc3R5LWFkZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcblxuICAgICAgICAuY2hhbmdlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRydW5jYXRlZCB7XG4gICAgICAgIC5kZXRhaWxzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGRbZGF0YS1yd2QtbGFiZWxdOmJlZm9yZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteGxhcmdlKSB7XG4gICAgI3dpc2hsaXN0LXRhYmxlIHtcbiAgICAgICAgJi5jbGVhbi10YWJsZSB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcbiAgICAjd2lzaGxpc3QtdGFibGUge1xuICAgICAgICAmLmNsZWFuLXRhYmxlIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuXG4gICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLWNhcnQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAjd2lzaGxpc3QtdGFibGUge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgIH1cblxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDY4cHg7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuaXRlbS1tYW5hZ2Uge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IDcwcHg7XG5cbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDcwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1jYXJ0IHtcbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZW1vdmUtd2hpc2hsaXN0LWl0ZW0ge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1jYXJ0IHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgICN3aXNobGlzdC10YWJsZSB7XG4gICAgICAgIHRkLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcXVhbnRpdHkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbWFnZSxcbiAgICAgICAgdGguY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbWFnZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgI3dpc2hsaXN0LXRhYmxlIHtcbiAgICAgICAgdHIge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGguY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbWFnZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbWFnZSxcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1pbmZvLFxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLXF1YW50aXR5LFxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLXByaWNlLFxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLWNhcnQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIGVtcHR5LWNlbGxzOiBoaWRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMTNweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTEzcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1xdWFudGl0eSxcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1wcmljZSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmNhcnQtY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnByaWNlLWJveCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tY2FydCB7XG4gICAgICAgICAgICAgICAgLmNhcnQtY2VsbCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgID4gcCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1yZW1vdmUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDE1cHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDBweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5jbGVhbi10YWJsZSB7XG4gICAgICAgICAgICB0ZC5jdXN0b21lci13aXNobGlzdC1pdGVtLWNhcnQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBXaXNobGlzdCBTaWRlYmFyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYmxvY2std2lzaGxpc3Qge1xuXG4gICAgLm1pbmktcHJvZHVjdHMtbGlzdCA+IGxpOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWRldGFpbHMgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgfVxuXG4gICAgLnByaWNlLWJveCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnByaWNlLWJveCxcbiAgICAucHJpY2UtYm94IC5wcmljZSxcbiAgICAubGluay1jYXJ0IHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgIH1cblxuICAgIC5saW5rLWNhcnQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDdweDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICB9XG5cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBNaW5pIGNhcnRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oZWFkZXItbWluaWNhcnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAubWluaWNhcnQtbWVzc2FnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLmVtcHR5IHtcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm1pbmljYXJ0LXdyYXBwZXIge1xuICAgICAgICBAaW5jbHVkZSBsb2FkaW5nT3ZlcmxheSgpO1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5ibG9jay1jYXJ0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmJsb2NrLXN1YnRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM1MEE0Q0Y7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuXG4gICAgICAgIC5jbG9zZSB7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMHB4O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAtOHB4O1xuICAgICAgICAgICAgcmlnaHQ6ICRib3gtc3BhY2luZyAtIDEzcHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1pbmktcHJvZHVjdHMtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgcGFkZGluZy10b3A6IDBweDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggNXB4IDhweCAxMXB4O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREREREQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICYubGFzdCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgICAgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMHB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5mby13cmFwcGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRnYXA7XG4gICAgICAgIH1cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICAgICAgICAgIGNsZWFyOiByaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5xdHktd3JhcHBlciB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzM3B4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzM3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnF0eSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgICAgICAgd2lkdGg6IDMuMmVtO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnF1YW50aXR5LWJ1dHRvbiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLXByb3BlcnR5KG9wYWNpdHkpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1kdXJhdGlvbigxMDBtcyk7XG5cbiAgICAgICAgICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYudmlzaWJsZSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdWJ0b3RhbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNEREREREQ7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDJlbTtcblxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5taW5pY2FydC1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIC5jaGVja291dC1idXR0b24ge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxNDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJ0LWxpbmsge1xuICAgICAgICAgICAgaGVpZ2h0OiAzM3B4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDM5cHg7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIH1cblxuICAgICAgICAucGF5cGFsLWxvZ28ge1xuICAgICAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNtaW5pY2FydC1lcnJvci1tZXNzYWdlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogcmVkO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICNtaW5pY2FydC1zdWNjZXNzLW1lc3NhZ2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGNvbG9yOiBncmVlbjtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvL2hpZGUgamNhcm91c2VsIGNvbnRyb2xzIHVudGlsIGNhcm91c2VsIGlzIHByb3Blcmx5IGludGVncmF0ZWQgd2l0aCBkZXNpZ25cbiAgICAuamNhcm91c2VsLWNvbnRyb2wtcHJldixcbiAgICAuamNhcm91c2VsLWNvbnRyb2wtbmV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uaGVhZGVyLW1pbmljYXJ0LnNraXAtYWN0aXZlIC5ibG9jay1jYXJ0LFxuLmJsb2NrLWNhcnQuc2tpcC1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG4gICAgLmNoZWNrb3V0LXR5cGVzLm1pbmljYXJ0IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5oZWFkZXItbWluaWNhcnQgYS5za2lwLWNhcnQge1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmhlYWRlci1taW5pY2FydCB7XG4gICAgICAgIC5zdWJ0b3RhbCB7XG4gICAgICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5taW5pY2FydC13cmFwcGVyIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRURFREVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnF1YW50aXR5LWJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXItbWluaWNhcnQgLmJsb2NrLWNhcnQge1xuICAgICAgICAgICAgcGFkZGluZzogJHRyaW0tc21hbGw7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLW1pbmljYXJ0IC5ibG9jay1zdWJ0aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJHRyaW0tc21hbGwgKyA0NHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLm1pbmljYXJ0LWFjdGlvbnMge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMzcHg7XG5cbiAgICAgICAgICAgIC5jYXJ0LWxpbmsge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICByaWdodDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNoZWNrb3V0LXR5cGVzLm1pbmljYXJ0IHtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICAgICAgICAgICAgICAgICAucGF5cGFsLWxvZ28ge1xuICAgICAgICAgICAgICAgICAgICAgICAgPiBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC5ibWxfYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxMHB4IDVweCAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDc0MHB4KSB7XG4gICAgLmhlYWRlci1taW5pY2FydCB7XG4gICAgICAgIC5taW5pY2FydC1hY3Rpb25zIHtcbiAgICAgICAgICAgIC5jYXJ0LWxpbmsge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY2hlY2tvdXQtdHlwZXMubWluaWNhcnQge1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wYXlwYWwtb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAucGF5cGFsLWJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgLmhlYWRlci1taW5pY2FydCB7XG4gICAgICAgIC5taW5pY2FydC1hY3Rpb25zIHtcbiAgICAgICAgICAgIC5jaGVja291dC1idXR0b24ge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTZWFyY2ggLSBBdXRvIFN1Z2dlc3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zZWFyY2gtYXV0b2NvbXBsZXRlIHtcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICB0b3A6IDE1cHggIWltcG9ydGFudDtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWhpZ2hsaWdodDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWxpbmstaG92ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hbW91bnQge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZSh1cCwgN3B4LCAkYy1hY3Rpb24pO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRvcDogLTdweDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNlYXJjaCAtIEFkdmFuY2VkXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYWR2YW5jZWQtc2VhcmNoIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIHBhZGRpbmc6ICR0cmltO1xuXG4gICAgc2VsZWN0Lm11bHRpc2VsZWN0IHtcbiAgICAgICAgb3B0aW9uIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICAgICAgcGFkZGluZzogMnB4IDVweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLmFkdmFuY2VkLXNlYXJjaCB7XG4gICAgICAgIHBhZGRpbmc6ICR0cmltLXNtYWxsO1xuICAgIH1cbn1cblxuLmdhbGxlcnktcmVzdWx0cyB7XG4gICAgbWluLWhlaWdodDogNzBweDtcbiAgICBoMiB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEFjY291bnQgLSBSZXZpZXdzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucHJvZHVjdC1yZXZpZXcge1xuICAgIC5wcm9kdWN0LWltZy1ib3gge1xuICAgICAgICBwLmxhYmVsIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICRnYXA7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnJhdGluZy1ib3gge1xuICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBjb2xvcjogIzMzOTlDQztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2FwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnJhdGluZ3MtdGFibGUge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkZ2FwO1xuICAgICAgICB9XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRnYXA7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnJhdGluZ3MtZGVzY3JpcHRpb24ge1xuICAgICAgICBkdCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgICAgICBwYWRkaW5nOiAkZ2FwIDA7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZGQge1xuICAgICAgICAgICAgY29sb3I6ICM3MzczNzM7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC5wcm9kdWN0LXJldmlldyB7XG4gICAgICAgIC5yYXRpbmdzLXRhYmxlIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgMTEyNnB4KSB7XG4gICAgLnByb2R1Y3QtcmV2aWV3IHtcbiAgICAgICAgLnJhdGluZ3MtdGFibGUge1xuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgMzIwcHgpIHtcbiAgICAucHJvZHVjdC1yZXZpZXcge1xuICAgICAgICAucmF0aW5ncy10YWJsZSB7XG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENNUyBQYWdlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udGVudCBmb3Igc3RhdGljIHBhZ2VzXG5cbi5jbXMtcGFnZS12aWV3LFxuLmNtcy1uby1yb3V0ZSB7XG4gICAgLnBhZ2UtdGl0bGUsXG4gICAgLnBhZ2UtaGVhZCB7XG4gICAgICAgIGgxLFxuICAgICAgICBoMyB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3RkIHtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbC1sZWZ0IHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNtcy1uby1yb3V0ZSB7XG4gICAgLnN0ZCB7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIC8vIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY21zLXBhZ2UtdmlldyAuc3RkLFxuLmNtcy1ob21lIC5zdGQsXG4uY21zLW5vLXJvdXRlIC5zdGQge1xuICAgIC5tZXNzYWdlcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcblxuICAgICAgICB1bCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEFjY29yZGl0aW9uXG5cbiNhY2NvcmRpb24ge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbjtcblxuICAgIGxpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIC5wbHVzaW1hZ2UgaDIge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkZ2FwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTaXRlbWFwXG5cbi5wYWdlLXNpdGVtYXAge1xuICAgIC5saW5rcyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgbWFyZ2luOiAwIDIwcHggMCAwO1xuXG4gICAgICAgIGEgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgICB9XG5cbiAgICAuc2l0ZW1hcCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgbWFyZ2luOiAxNXB4IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW46IDNweCAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb250YWN0IHBhZ2VcblxuLmNvbnRhY3RzLWluZGV4LWluZGV4IHtcbiAgICBoMSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG59XG5cbiNjb250YWN0Rm9ybSB7XG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuXG4gICAgaDIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICAuZmllbGRzZXQgLmxlZ2VuZCArIC5yZXF1aXJlZCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgI2NvbnRhY3RGb3JtIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbn1cblxuXG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFByaWNpbmcgQ29uZGl0aW9uc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnByaWNlLWJveCB7XG4gICAgLm1pbmltYWwtcHJpY2UtbGluayB7XG4gICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICBjb2xvcjogJGMtcmVkO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubWFwLWluZm8ge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jYXRhbG9nLXByb2R1Y3QtdmlldyB7XG4gICAgLm1hcC1pbmZvIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuICAgICAgICAucHJpY2UtYm94Lm1hcC1pbmZvID4gYSB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ29va2llc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm5vdGljZS1jb29raWUge1xuICAgIC5ub3RpY2UtaW5uZXIge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGljZS10ZXh0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1heC13aWR0aDogOTAlO1xuICAgICAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICg0MHB4IC0gJGYtc2l6ZS14eHMpIC8gMjtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWN0aW9ucyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICg0MHB4IC0gJGYtc2l6ZS14eHMpIC8gMjtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIC5ub3RpY2UtY29va2llIHtcbiAgICAgICAgLm5vdGljZS10ZXh0IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogODYlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAubm90aWNlLWNvb2tpZSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcblxuICAgICAgICAubm90aWNlLXRleHQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA4MiU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNjIwcHgpIHtcblxuICAgIC5ub3RpY2UtY29va2llIHtcbiAgICAgICAgcGFkZGluZzogMCAyMHB4O1xuXG4gICAgICAgIC5ub3RpY2UtaW5uZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCAxMHB4O1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3RpY2UtdGV4dCB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGlvbnMge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogVGFnc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuI2FkZFRhZ0Zvcm0gYnV0dG9uIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbiNhZGRUYWdGb3JtIC5mb3JtLWFkZCB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbn1cbi5wcm9kdWN0LXRhZ3Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBwYWRkaW5nOiA1cHggMSUgMTBweDtcbiAgICB3aWR0aDogOTglO1xufVxuLnByb2R1Y3QtdGFncyBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuLnByb2R1Y3QtdGFncyBsaS5sYXN0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbn1cbi50YWdzLWxpc3Qge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4udGFncy1saXN0ID4gbGkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi5ibG9jay10YWdzIC5hY3Rpb25zID4gYSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuLm15LXRhZy1lZGl0IHtcbiAgICAuYnV0dG9uLmJ0bi1yZW1vdmUge1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuQGluY2x1ZGUgYnAgKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC50YWdzLWxpc3QgPiBsaSxcbiAgICAudGFncy1saXN0IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDYXB0Y2hhXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNhcHRjaGEtbm90ZSB7XG4gICAgY2xlYXI6IGxlZnQ7XG4gICAgcGFkZGluZy10b3A6IDVweDtcbn1cbi5jYXB0Y2hhLWltYWdlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMjU4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5jYXB0Y2hhLWltYWdlIC5jYXB0Y2hhLWltZyB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2I2YjZiNjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuLnJlZ2lzdGVyZWQtdXNlcnMgLmNhcHRjaGEtaW1hZ2UgeyBtYXJnaW46IDAgfVxuLmNhcHRjaGEtcmVsb2FkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMnB4O1xuICAgIHJpZ2h0OiAycHg7XG59XG4uY2FwdGNoYS1yZWxvYWQucmVmcmVzaGluZyB7XG4gICAgYW5pbWF0aW9uOiByb3RhdGUgMS41cyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0ZSAxLjVzIGluZmluaXRlIGxpbmVhcjtcbiAgICAtbW96LWFuaW1hdGlvbjogcm90YXRlIDEuNXMgaW5maW5pdGUgbGluZWFyO1xufVxuLmN1c3RvbWVyLWFjY291bnQtY3JlYXRlIC5zY2FmZm9sZC1mb3JtIC5jYXB0Y2hhLWlucHV0LWNvbnRhaW5lciBsYWJlbDpmaXJzdC1jaGlsZCB7IHdpZHRoOiAxMDAlIH1cbi5jYXB0Y2hhLXJlbG9hZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA0cHg7XG4gICAgdG9wOiA0cHg7XG59XG4uY2FwdGNoYS1pbWcgeyBib3JkZXI6IDIwcHggc29saWQgI2JiYiB9XG4uY2FwdGNoYS1pbnB1dC1jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOiAxMHB4IH1cbi5jb250cm9sLm5ld3NsZXR0ZXItYm94LCAuY2FwdGNoYS1pbnB1dC1jb250YWluZXIsIC5jYXB0Y2hhLWltZy1jb250YWluZXIge1xuICAgIGZsb2F0OiBub25lO1xuICAgIGNsZWFyOiBib3RoO1xuXG4gICAgJjphZnRlcntcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgQmlsbGluZyBGaXggdG8gcGxhY2UgdGhlIENhcHRjaGEgcHJvcGVybHlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jY28tYmlsbGluZy1mb3JtIHVsLmZvcm0tbGlzdCA+IC5jb250cm9sIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEFjY291bnQgLSBPcmRlcnMsIEludm9pY2VzLCBDcmVkaXQgTWVtb3MuXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW5jbHVkZSBicCAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLnNhbGVzLW9yZGVyLWludm9pY2UsXG4gICAgLnNhbGVzLW9yZGVyLWNyZWRpdG1lbW8sXG4gICAgLnNhbGVzLW9yZGVyLXNoaXBtZW50IHtcbiAgICAgICAgLnN1Yi10aXRsZSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1sO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm9yZGVyLWxpbmtzIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBSZWN1cnJpbmcgUHJvZmlsZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNyZWN1cnJpbmdfcHJvZmlsZV9saXN0X3ZpZXcge1xuXG4gICAgdGgge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicCAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIH1cbiAgICB9IC8vZW5kIGJwLXhzbWFsbCBicmVha3BvaW50XG5cbn0gLy9lbmQgI3JlY3VycmluZ19wcm9maWxlX2xpc3Rfdmlld1xuXG4ucmVjdXJyaW5nLXByb2ZpbGVzLXRpdGxlIHtcbiAgICBmbG9hdDogbGVmdDtcblxuICAgIGgxIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG59XG5cbmJvZHkuY3VzdG9tZXItYWNjb3VudCAubXktYWNjb3VudCAudGl0bGUtYnV0dG9ucy5yZWN1cnJpbmctcHJvZmlsZXMtdGl0bGUtYnV0dG9ucyB7XG4gICAgZmxvYXQ6cmlnaHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICB9XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbi5yZWN1cnJpbmctcHJvZmlsZXMtbWVzc2FnZXMge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbiNyZWN1cnJpbmdfc3RhcnRfZGF0ZV90cmlnIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEJpbGxpbmcgQWdyZWVtZW50c1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmJpbGxpbmctYWdyZWVtZW50cyB7XG4gICAgLmluZm8tYm94IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWxpc3Qge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJveC10aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmctbGFyZ2U7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAkZWxlbWVudC1zcGFjaW5nO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICNwYXltZW50X21ldGhvZCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIH1cbn1cblxuLmJpbGxpbmctYWdyZWVtZW50LXZpZXctaGVhZGVyLXdyYXBwZXIge1xuICAgIC5oZWFkaW5nIHtcbiAgICAgICAgbWF4LXdpZHRoOiA4MCU7XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWFncmVlbWVudC1kZXRhaWxzIHtcbiAgICB0ZCwgdGgge1xuICAgICAgICBwYWRkaW5nOiAkZWxlbWVudC1zcGFjaW5nLzI7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIC5iaWxsaW5nLWFncmVlbWVudHMge1xuICAgICAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgICAgICAuY3JlYXRlZC1hdCxcbiAgICAgICAgICAgIC51cGRhdGVkLWF0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBQb3B1bGFyIFNlYXJjaCBUZXJtcyBDbG91ZFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNhdGFsb2dzZWFyY2gtdGVybS1wb3B1bGFyIC50YWdzLWxpc3Qge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEwMCU7XG59XG4uY2F0YWxvZ3NlYXJjaC10ZXJtLXBvcHVsYXIgLnRhZ3MtbGlzdCA+IGxpIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogNDBweDtcbiAgbWFyZ2luLXJpZ2h0OiAyNXB4O1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBXaWRnZXRzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBBZGQgdG8gY2FydCBieSBTS1VcbiAqL1xuXG4uc2lkZWJhciB7XG4gICAgLndpZGdldC1hZGRieXNrdSB7XG4gICAgICAgIC5za3UtdGFibGUge1xuICAgICAgICAgICAgLmlucHV0LXRleHQ6bm90KC5xdHkpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSsxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vcHJldmVudCB3aWRnZXQgaW4gbGVmdC9yaWdodCBjb2x1bW4gZnJvbSBleGNlZWRpbmcgY29sdW1uIHdpZHRoXG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ud2lkZ2V0IHtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLndpZGdldCAucGFnZXIge1xuICAgIGZsb2F0OiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vLyBJbXBsZW1lbnQgY3VzdG9tIGdyaWQgYnJlYWtwb2ludHMgZm9yIGdyaWRzIHRoYXQgYXJlIGNvbnRhaW5lZCB3aXRoaW4gd2lkZ2V0c1xuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAteGxhcmdlKSB7XG4gICAgLmNvbDItbGVmdC1sYXlvdXQsXG4gICAgLmNvbDItcmlnaHQtbGF5b3V0LFxuICAgIC5jb2wzLWxheW91dFxuICAgIHtcbiAgICAgICAgLmNvbC1tYWluIC53aWRnZXQge1xuICAgICAgICAgICAgQGluY2x1ZGUgcHJvZHVjdC1ncmlkKDQsIDk2MCwgXCJ3aWRnZXRcIik7XG4gICAgICAgICAgICBAaW5jbHVkZSBwcm9kdWN0LWdyaWQoNSwgOTYwLCBcIndpZGdldFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmNvbDEtbGF5b3V0IHtcbiAgICAgICAgLmNvbC1tYWluIC53aWRnZXQge1xuICAgICAgICAgICAgQGluY2x1ZGUgcHJvZHVjdC1ncmlkKDQsIDk2MCwgXCJ3aWRnZXRcIik7XG4gICAgICAgICAgICBAaW5jbHVkZSBwcm9kdWN0LWdyaWQoNSwgOTYwLCBcIndpZGdldFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBNdWx0aXBsZSBBZGRyZXNzZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmJvZHlbY2xhc3MqPVwiY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1cIl0ge1xuICAgIC5jaGVja291dC1wcm9ncmVzcyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICAgICAgPiBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMSUgNnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1zZWNvbmRhcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmxhc3Qge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5wYWdlLXRpdGxlIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBib3JkZXI6IDAgbm9uZTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICAgICAgfVxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubXVsdGlwbGUtY2hlY2tvdXQgPiBoMiB7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuICAgIC5tZXNzYWdlcyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLmNvbC0yLmNvbC13aWRlIHtcbiAgICAgICAgd2lkdGg6IDY2JTtcbiAgICB9XG4gICAgLmNvbC0xLmNvbC1uYXJyb3cge1xuICAgICAgICB3aWR0aDogMzAlO1xuICAgIH1cbiAgICAuYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuXG4gICAgLmdyYW5kLXRvdGFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgI2NoZWNrb3V0LXJldmlldy1zdWJtaXQge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuXG4gICAgI3Jldmlldy1idXR0b25zLWNvbnRhaW5lciB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxufVxuXG4uY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1hZGRyZXNzZXMge1xuICAgIC5idG4tcmVtb3ZlMiB7XG4gICAgICAgIHRleHQtaW5kZW50OiAtNTU1NXB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICB9XG59XG5cbi5jaGVja291dC1tdWx0aXNoaXBwaW5nLXNoaXBwaW5nIHtcbiAgICAuZ2lmdC1tZXNzYWdlcyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgfVxuICAgIC5naWZ0LW1lc3NhZ2VzLWZvcm0ge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICBoNCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5mb3JtLWxpc3Qge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW0ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctc2hpcHBpbmcsXG4uY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1iaWxsaW5nLFxuLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctb3ZlcnZpZXcge1xuICAgIC5jb2wtMSwgLmNvbC0yIHtcbiAgICAgICAgLmJveC10aXRsZSB7XG4gICAgICAgICAgICBoMiwgaDMsIGg0IHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgID4gaDQge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmJveC1jb250ZW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1iaWxsaW5nIHtcbiAgICAuc3AtbWV0aG9kcyBkdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbiNtdWx0aXNoaXAtYWRkcmVzc2VzLXRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLmEtY2VudGVyLmxhc3QgPiBhIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xufVxuXG4jcmV2aWV3LW9yZGVyLWZvcm0gPiBkaXY6bnRoLWNoaWxkKDMpID4gZGl2LmRpdmlkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGNsZWFyOmJvdGg7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG4gICAgYm9keVtjbGFzcyo9XCJjaGVja291dC1tdWx0aXNoaXBwaW5nLVwiXSB7XG4gICAgICAgIC5jaGVja291dC1wcm9ncmVzcyBzcGFuIHtcbiAgICAgICAgICAgIHdvcmQtc3BhY2luZzogMzAwcHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgI3Jldmlldy1vcmRlci1mb3Jte1xuICAgICAgICAuY29sLTEsXG4gICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgYm9keVtjbGFzcyo9XCJjaGVja291dC1tdWx0aXNoaXBwaW5nLVwiXSB7XG4gICAgICAgIC5jaGVja291dC1wcm9ncmVzcyBzcGFuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICB9XG4gICAgICAgIC5jaGVja291dC1wcm9ncmVzcyB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzJTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHdvcmQtc3BhY2luZzogMXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5ib3gtdGl0bGUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAucGFnZS10aXRsZSAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuICAgICAgICAubGluZWFyaXplLXRhYmxlIHtcbiAgICAgICAgICAgIHRmb290IHRkIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY29sLTEuY29sLW5hcnJvdywgLmNvbC0yLmNvbC13aWRlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAuY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1hZGRyZXNzZXMgLmxpbmVhcml6ZS10YWJsZSB0Ym9keSB0ZFtkYXRhLXJ3ZC1sYWJlbF0ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICBib2R5W2NsYXNzKj1cImNoZWNrb3V0LW11bHRpc2hpcHBpbmctXCJdIHtcbiAgICAgICAgLmJ1dHRvbnMtc2V0IC5iYWNrLWxpbmsge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJlbm5pcy1mbGludFwiO1xuICBzcmM6dXJsKFwiLi4vZm9udHMvZW5uaXMtZmxpbnQtaWNvbi5lb3RcIik7XG4gIHNyYzp1cmwoXCIuLi9mb250cy9lbm5pcy1mbGludC1pY29uLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgdXJsKFwiLi4vZm9udHMvZW5uaXMtZmxpbnQtaWNvbi53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksXG4gICAgdXJsKFwiLi4vZm9udHMvZW5uaXMtZmxpbnQtaWNvbi50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksXG4gICAgdXJsKFwiLi4vZm9udHMvZW5uaXMtZmxpbnQtaWNvbi5zdmcjZW5uaXMtZmxpbnQtaWNvblwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcblxufVxuXG5bZGF0YS1pY29uXTpiZWZvcmUge1xuICBmb250LWZhbWlseTogXCJlbm5pcy1mbGludFwiICFpbXBvcnRhbnQ7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgZm9udC12YXJpYW50OiBub3JtYWwgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgc3BlYWs6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuW2NsYXNzXj1cImljb24tXCJdOmJlZm9yZSxcbltjbGFzcyo9XCIgaWNvbi1cIl06YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwiZW5uaXMtZmxpbnRcIiAhaW1wb3J0YW50O1xuICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbCAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICBzcGVhazogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4uaWNvbi1mYWNlYm9vazpiZWZvcmUge1xuICBjb250ZW50OiBcImFcIjtcbn1cbi5pY29uLWxpbmtlZGluOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiYlwiO1xufVxuLmljb24tcGludGVyZXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiY1wiO1xufVxuLmljb24tdHVtYmxyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiZFwiO1xufVxuLmljb24tdHdpdHRlcjpiZWZvcmUge1xuICBjb250ZW50OiBcImVcIjtcbn1cbi5pY29uLXlvdXR1YmUtcGxheTpiZWZvcmUge1xuICBjb250ZW50OiBcImZcIjtcbn1cbi5pY29uLXRhYmxldDpiZWZvcmUge1xuICBjb250ZW50OiBcImdcIjtcbn1cbi5pY29uLWxldHRlci1tYWlsOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiaFwiO1xufVxuLmljb24taGVhcnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJpXCI7XG59XG4uaWNvbi1oZWFydC1lbXB0eTpiZWZvcmUge1xuICBjb250ZW50OiBcImpcIjtcbn1cbi5pY29uLWdvb2dsZS1wbHVzOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwia1wiO1xufVxuLmljb24tYXJyb3ctcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJsXCI7XG59XG4uaWNvbi1hcnJvdy11cDpiZWZvcmUge1xuICBjb250ZW50OiBcIm1cIjtcbn1cbi5pY29uLWFycm93LWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJuXCI7XG59XG4uaWNvbi1hcnJvdy1kb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwib1wiO1xufVxuLmljb24tc3Rhci10d286YmVmb3JlIHtcbiAgY29udGVudDogXCJwXCI7XG59XG4uaWNvbi1pbnN0YWdyYW06YmVmb3JlIHtcbiAgY29udGVudDogXCJxXCI7XG59XG4uaWNvbi1nZWFycy1zZXR0aW5nOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiclwiO1xufVxuIiwiLmN3c1J3ZFNsaWRlciB7XHRcblx0LnNsaWRlcyB7XG5cdFx0aGVpZ2h0OiA0MDBweDtcblx0XHRsaSB7XHRcdFx0XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRvdmVyZmxvdzogYXV0bztcblx0XHRcdGltZyB7XHRcdFxuXHRcdFx0XHQvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4uc2xpZGVyZGVjcyB7XG5cdHRvcDogMHB4O1xuXHRyaWdodDogMzBweDtcblx0bGVmdDogMzBweDtcblx0d2lkdGg6IGF1dG87XG5cdGJvcmRlci1sZWZ0OiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xuXHRwIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cdGgzIHtcblx0XHRmb250LXNpemU6IDFlbTtcblx0fVxufVxuXG4uY3dzLXZpZXdwb3J0IHsgICAgICAgIFxuXHRtYXgtaGVpZ2h0OiAxMjBweDtcbn1cblxuXG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDgwcHgpIHtcblx0LmN3cy12aWV3cG9ydCB7ICAgICAgICBcblx0XHRtYXgtaGVpZ2h0OiAxODBweDtcblx0fVxuXHQuc2xpZGVyZGVjcyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblx0XHRoMyB7XG5cdFx0XHRmb250LXNpemU6IDJlbTtcblx0XHR9XG5cdFx0cCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XHRcdFx0XG5cdH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuXHQuY3dzLXZpZXdwb3J0IHsgICAgICAgIFxuXHRcdG1heC1oZWlnaHQ6IDI5OXB4O1xuXHR9XG5cdC5zbGlkZXJkZWNzIHtcblx0XHRtYXgtd2lkdGg6IDI1ZW07XG5cdFx0dG9wOiA1NXB4O1xuXHRcdHJpZ2h0OiBhdXRvO1xuXHRcdGxlZnQ6IDE1JTtcdFx0XG5cdFx0aDMge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogLjVlbTtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNDAwcHgpIHtcblx0LmN3cy12aWV3cG9ydCB7ICAgICAgICBcblx0XHRtYXgtaGVpZ2h0OiA0MDBweDtcblx0fVxuXHQuc2xpZGVyZGVjcyB7XG5cdFx0dG9wOiA3NXB4O1xuXHRcdGxlZnQ6IDE4JTtcdFx0XG5cdH1cbn0iLCIuZmlsdGVyLW5ld3Mge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggZG90dGVkICNhMGEwYTA7XG4gICAgcGFkZGluZy1ib3R0b206IDJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuOGVtO1xuICAgIGJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggIzY0NjQ2MyBzb2xpZDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4yNXMgZWFzZS1pbi1vdXQ7XG4gICAgfVxuICAgIGJ1dHRvbi5uZXdzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZkYjgxMztcbiAgICB9XG59XG5cblxuLm1lbnUtY2F0ZWdvcmllcyB7XHRcblx0aDUge1xuXHRcdGNvbG9yOiAkYy10ZXh0O1xuXHR9XG59XG5cbi5ibG9jay5uZXdzLWNhdGVnb3JpZXMge1xuXHRib3JkZXI6IG5vbmU7XG5cdC5ibG9jay10aXRsZSB7XG5cdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHRzdHJvbmcge1x0XG5cdFx0XHRjb2xvcjogJGMtbGluaztcblx0XHR9XG5cdH0gXG59IFxuLm5ld3NfaW1hZ2Uge1xuXHRtYXJnaW4tdG9wOiA3cHg7XG59XG4jbmV3cy1wYXJlbnQge1xuICAgIC5uZXdzLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTVweDtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmRhdGUge1xuICAgICAgICAgICAgY29sb3I6ICM5OTk7XG4gICAgICAgIH1cbiAgICB9XG59XG4ubmV3cy1pdGVtLWNvbnRlbnQge1xuXHRhIHtcblx0XHRjb2xvcjogJGMtbGluaztcblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkYy1saW5rLWhvdmVyO1xuXHRcdH0gXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRjb2xvcjogJGMtbGluay1mb2N1cztcblx0XHR9XG5cdFx0JjphY3RpdmUge1xuXHRcdFx0Y29sb3I6ICRjLWxpbmstYWN0aXZlO1xuXHRcdH1cblx0XHQmOnZpc2l0ZWQge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHR9XG5cdH1cblx0cGFkZGluZzogMmVtIDFlbTtcblx0LmJhY2sge1xuXHRcdGZvbnQtc2l6ZTogMS4yNWVtO1xuXHR9XG5cdC5zb2NpYWwsXG5cdC5uZXdzIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxuICAgICAgICAuZGF0ZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cdC5uZXdzIHtcblx0XHRmb250LXNpemU6IDEuMWVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcdFxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMS41ZW07XG5cdFx0fVx0XG5cdH1cblx0Lm5ld3NfdGl0bGUsIGg0IHtcblx0XHRmb250LXNpemU6IDEuNWVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjE7XG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblx0Lm5ld3NfaW1hZ2Uge1xuXHRcdGltZyB7XG5cdFx0XHRtYXgtaGVpZ2h0OiAzNTBweDtcblx0XHRcdG1heC13aWR0aDogMTAwJTtcblx0XHR9XG5cdH0gXG59XG4ubG9hZGZpbGUge1xuXHRmb250LXNpemU6IDE0cHg7XHRcbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAxMDgwcHgpIHtcblx0Lm5ld3MtaXRlbS1jb250ZW50IHtcblx0XHRwYWRkaW5nOiAwIDAgMmVtO1xuXHR9XG59IiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDYWxlbmRhciBzdHlsZXMgKHJlc3RvcmUgc3R5bGVzIGZyb20gL2pzL2NhbGVuZGFyKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbmRpdi5jYWxlbmRhciB7XG4gICAgdGFibGUge1xuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuXG4gICAgICAgIHRkLmJ1dHRvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiJBNEpHRSxJQUFJLENBQUM7RUFDSCxVQUFVLEVBQUUsVUFBVyxHQUN4Qjs7QUFFRCxDQUFDLEVBQUQsQ0FB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 */
