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; }

/* -------------------------------------------- *
 * 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; }

/* -------------------------------------------- *
 * 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; }

/* -------------------------------------------- *
 * 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; }

/* -------------------------------------------- *
 * 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; }

.main-container,
.footer-container {
  padding: 0; }

.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%; }

.col-main {
  padding: 0 15px; }

/* Content Columns */
.col2-set {
  width: 100%; }
  .col2-set .col-1,
  .col2-set .col-2 {
    width: 50%;
    padding: 20px; }
  .col2-set .col-1 {
    float: left;
    padding-left: 0; }
  .col2-set .col-2 {
    float: right;
    padding-right: 0; }
  .col2-set .narrow {
    width: 33%; }
  .col2-set .wide {
    width: 65%; }
  .col2-set:after {
    content: '';
    display: table;
    clear: both; }

/* -------------------------------------------- *
 * Top Container
 */
.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; }

.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; }

/* -------------------------------------------- *
 * 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; }

.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; }

.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
 * ============================================ */
.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; }

/* ============================================ *
 * 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
 * ============================================ */
.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; }

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

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

.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
 * ============================================ */
.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%; }

.header-links {
  float: right; }
  .header-links a {
    padding: 0 20px; }

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

/* ============================================ *
 * Logo
 * ============================================ */
.logo {
  display: inline-block;
  text-align: center;
  opacity: 1;
  transition: opacity .1s ease-in; }
  .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; }

.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; }

.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; }

.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; }

.skip-link .icon {
  margin-right: 3px; }

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

.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; }

.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; }

.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; }

.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; }

.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; }

.account-cart-wrapper {
  position: absolute;
  top: 0px;
  right: 0px; }

/* ============================================ *
 * 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; }

.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; }

.skip-nav {
  width: 25%; }

.skip-nav {
  display: none; }

/* ============================================ *
 * Nav - Skip Content
 * ============================================ */
#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
 * ============================================ */
.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
 * ============================================ */
/* ============================================ *
 * Large Viewports - Dropdown Menu
 * ============================================ */
.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; }

.skip-search {
  display: none; }

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

#header-search {
  display: block;
  position: absolute;
  top: 65px;
  right: 40px;
  width: 15%;
  height: 30px;
  padding: 0;
  font-size: 13px;
  z-index: 20; }

/* ============================================ *
 * 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; }

.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; }

.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; }

.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
     */ }
  .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; }
  .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; }

/* 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; }

/* 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; }

/* 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; }

.products-list .product-name a {
  font-size: 18px; }

.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%; }

/* ============================================ *
 * 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; }

.block-layered-nav .block-content > dl > dt {
  padding-left: 10px; }
  .block-layered-nav .block-content > dl > dt:after {
    display: none; }

.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; }

.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; }
  .product-img-box .product-image img {
    max-width: 100%;
    max-height: 750px;
    margin: 0px auto; }

.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%; }
  .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; }

/* 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; }

.product-collateral {
  clear: both; }

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

.box-collateral {
  clear: both; }

.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; }

.product-view .product-shop .product-name {
  display: block; }

.product-img-box .product-name {
  display: none; }

.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; }

.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; }

.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;
  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; }

.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; }
  .map-popup.map-popup-right {
    left: 10px !important; }
  .map-popup.map-popup-left {
    left: auto !important;
    right: 10px !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; }
  .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; }
  .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; }
    .map-popup .map-popup-checkout:after {
      content: '';
      display: table;
      clear: both; }
  .map-popup .map-popup-price {
    padding: 10px 0; }
    .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; }

.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; }

.checkout-types.bottom .paypal-or {
  text-align: right;
  padding-right: 70px; }

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

.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; }

/* ============================================ *
 * 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; }

.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; }

.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 */
/* ============================================ *
 * Checkout - One Page
 * ============================================ */
.checkout-onepage-index .col-right,
.checkout-onepage-index .col-left {
  display: none; }

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

.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; }

.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; }

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

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

#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; }
  .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; }

/* 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%; }
    #checkout-step-review .opc-block-progress .block-content .changelink {
      display: none; }

#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; }

/* ============================================ *
 * 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; }

.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; }

.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; }

.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; }

.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; }

.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; }

.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; }

/* ============================================ *
 * 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; }

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

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

.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; }

/* ============================================ *
 * 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; }

.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; }

.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%);*/ }

.ennis-rep {
  /*@include flex-basis(25%);*/
  margin: 0 2.8% 1em 0;
  display: block; }
  .ennis-rep:nth-of-type(4n) {
    margin-right: 0; }

/* ============================================ *
 * PayPal
 * ============================================ */
.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; }

.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; }

.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; }

/* ============================================ *
 * 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%; }

/* ============================================ *
 * 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; }

#wishlist-table.clean-table td {
  padding-left: 10px;
  padding-right: 10px; }

/* ============================================ *
 * 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; }
  .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; }

.checkout-types.minicart {
  float: none;
  text-align: center; }

/* ============================================ *
 * 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; }

.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; }

.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; }

/* ============================================ *
 * 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; }

/* ============================================ *
 * 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; }

/* ============================================ *
 * 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.
 * ============================================ */
/* ============================================ *
 * Recurring Profiles
 * ============================================ */
#recurring_profile_list_view th {
  white-space: normal; }
  #recurring_profile_list_view th span {
    white-space: inherit; }

.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; }
  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; }

.billing-agreements #payment_method {
  width: 100%;
  margin-top: 7px;
  margin-bottom: 7px; }

.billing-agreement-view-header-wrapper .heading {
  max-width: 80%; }

.billing-agreement-details td, .billing-agreement-details th {
  padding: 3.5px; }

/* ============================================ *
 * 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%;
  max-width: 100px; }

.widget {
  clear: both; }

.widget .pager {
  float: none;
  width: 100%; }

.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; }

@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; }

/* ============================================ *
 * 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLWllOC5jc3MiLCJzb3VyY2VzIjpbInN0eWxlcy1pZTguc2NzcyIsIl9mcmFtZXdvcmsuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvX2NvbXBhc3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvX2NvbG9yLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2NvbG9yL19jb250cmFzdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fZ2VuZXJhbC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19yZXNldC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3Jlc2V0L191dGlsaXRpZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fY2xlYXJmaXguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9faGFja3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL190YWctY2xvdWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvZ2VuZXJhbC9fbWluLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19zcHJpdGVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fc3ByaXRlLWltZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fdGFibGVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2JvcmRlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19zY2FmZm9sZGluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbmxpbmUtYmxvY2suc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L190ZXh0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19lbGxpcHNpcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fbm93cmFwLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS90ZXh0L19yZXBsYWNlbWVudC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fZm9yY2Utd3JhcC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL190eXBvZ3JhcGh5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9fdmVydGljYWxfcmh5dGhtLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvbGF5b3V0L19ncmlkLWJhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbWFnZXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLXNpemUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fY3NzMy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19vcGFjaXR5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYm94LXNoYWRvdy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RleHQtc2hhZG93LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fY29sdW1ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaXppbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3guc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLWNsaXAuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19iYWNrZ3JvdW5kLW9yaWdpbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcmVnaW9ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2h5cGhlbmF0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZmlsdGVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fcGllLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fdXNlci1pbnRlcmZhY2Uuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNjc3MiLCJib3VyYm9uL19ib3VyYm9uLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19wcmVmaXhlci5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX2Fzc2V0LXBpcGVsaW5lLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fYXNzaWduLWlucHV0cy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2NvbnRhaW5zLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fY29udGFpbnMtZmFsc3kuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1sZW5ndGguc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1saWdodC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLW51bWJlci5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2lzLXNpemUuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19weC10by1lbS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3B4LXRvLXJlbS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3NoYWRlLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fc3RyaXAtdW5pdHMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL190aW50LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdW5wYWNrLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fbW9kdWxhci1zY2FsZS5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19jb252ZXJ0LXVuaXRzLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19mb250LXNvdXJjZS1kZWNsYXJhdGlvbi5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1hbmdsZS1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLWdyYWRpZW50LXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1hcmctcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fcmVuZGVyLWdyYWRpZW50cy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19zaGFwZS1zaXplLXN0cmlwcGVyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3N0ci10by1udW0uc2NzcyIsImJvdXJib24vY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2ZhY2UtdmlzaWJpbGl0eS5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tncm91bmQtaW1hZ2Uuc2NzcyIsImJvdXJib24vY3NzMy9fYm9yZGVyLWltYWdlLnNjc3MiLCJib3VyYm9uL2NzczMvX2NhbGMuc2NzcyIsImJvdXJib24vY3NzMy9fY29sdW1ucy5zY3NzIiwiYm91cmJvbi9jc3MzL19maWx0ZXIuc2NzcyIsImJvdXJib24vY3NzMy9fZmxleC1ib3guc2NzcyIsImJvdXJib24vY3NzMy9fZm9udC1mYWNlLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy5zY3NzIiwiYm91cmJvbi9jc3MzL19oaWRwaS1tZWRpYS1xdWVyeS5zY3NzIiwiYm91cmJvbi9jc3MzL19oeXBoZW5zLnNjc3MiLCJib3VyYm9uL2NzczMvX2ltYWdlLXJlbmRlcmluZy5zY3NzIiwiYm91cmJvbi9jc3MzL19rZXlmcmFtZXMuc2NzcyIsImJvdXJib24vY3NzMy9fbGluZWFyLWdyYWRpZW50LnNjc3MiLCJib3VyYm9uL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCJib3VyYm9uL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCJib3VyYm9uL2NzczMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwiYm91cmJvbi9jc3MzL19zZWxlY3Rpb24uc2NzcyIsImJvdXJib24vY3NzMy9fdGV4dC1kZWNvcmF0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwiYm91cmJvbi9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3VzZXItc2VsZWN0LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLWNvbG9yLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1zdHlsZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci13aWR0aC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2J1dHRvbnMuc2NzcyIsImJvdXJib24vYWRkb25zL19jbGVhcmZpeC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2VsbGlwc2lzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fZm9udC1zdGFja3Muc2NzcyIsImJvdXJib24vYWRkb25zL19oaWRlLXRleHQuc2NzcyIsImJvdXJib24vYWRkb25zL19tYXJnaW4uc2NzcyIsImJvdXJib24vYWRkb25zL19wYWRkaW5nLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsImJvdXJib24vYWRkb25zL19wcmVmaXhlci5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3JldGluYS1pbWFnZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3NpemUuc2NzcyIsImJvdXJib24vYWRkb25zL190ZXh0LWlucHV0cy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3RpbWluZy1mdW5jdGlvbnMuc2NzcyIsImJvdXJib24vYWRkb25zL190cmlhbmdsZS5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3dvcmQtd3JhcC5zY3NzIiwiYm91cmJvbi9fYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nLnNjc3MiLCIuLi9uZWF0L19uZWF0LnNjc3MiLCIuLi9uZWF0L19uZWF0LWhlbHBlcnMuc2NzcyIsIi4uL25lYXQvZnVuY3Rpb25zL19wcml2YXRlLnNjc3MiLCIuLi9uZWF0L2Z1bmN0aW9ucy9fbmV3LWJyZWFrcG9pbnQuc2NzcyIsIi4uL25lYXQvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi4uL25lYXQvc2V0dGluZ3MvX3Zpc3VhbC1ncmlkLnNjc3MiLCIuLi9uZWF0L3NldHRpbmdzL19kaXNhYmxlLXdhcm5pbmdzLnNjc3MiLCIuLi9uZWF0L2dyaWQvX3ByaXZhdGUuc2NzcyIsIi4uL25lYXQvZ3JpZC9fYm94LXNpemluZy5zY3NzIiwiLi4vbmVhdC9ncmlkL19vbWVnYS5zY3NzIiwiLi4vbmVhdC9ncmlkL19vdXRlci1jb250YWluZXIuc2NzcyIsIi4uL25lYXQvZ3JpZC9fc3Bhbi1jb2x1bW5zLnNjc3MiLCIuLi9uZWF0L2dyaWQvX3Jvdy5zY3NzIiwiLi4vbmVhdC9ncmlkL19zaGlmdC5zY3NzIiwiLi4vbmVhdC9ncmlkL19wYWQuc2NzcyIsIi4uL25lYXQvZ3JpZC9fZmlsbC1wYXJlbnQuc2NzcyIsIi4uL25lYXQvZ3JpZC9fbWVkaWEuc2NzcyIsIi4uL25lYXQvZ3JpZC9fdG8tZGVwcmVjYXRlLnNjc3MiLCIuLi9uZWF0L2dyaWQvX3Zpc3VhbC1ncmlkLnNjc3MiLCIuLi9uZWF0L2dyaWQvX2Rpc3BsYXktY29udGV4dC5zY3NzIiwiLi4vbmVhdC9ncmlkL19kaXJlY3Rpb24tY29udGV4dC5zY3NzIiwiX3Zhci5zY3NzIiwiZnVuY3Rpb24vX2JsYWNrLnNjc3MiLCJmdW5jdGlvbi9fd2hpdGUuc2NzcyIsIm1peGluL19uYXYtYW5pbWF0aW9ucy5zY3NzIiwibWl4aW4vX2JyZWFrcG9pbnQuc2NzcyIsIm1peGluL19jbGVhcmZpeC5zY3NzIiwibWl4aW4vX2ltYWdlLXJlcGxhY2VtZW50LnNjc3MiLCJtaXhpbi9fbWVudS5zY3NzIiwibWl4aW4vX25vdC1zZWxlY3RhYmxlLnNjc3MiLCJtaXhpbi9faWYtcmVzb2x1dGlvbi5zY3NzIiwibWl4aW4vX3RvZ2dsZS1jb250ZW50LnNjc3MiLCJtaXhpbi9fdHJpYW5nbGUuc2NzcyIsIm1peGluL190eXBvZ3JhcGh5LnNjc3MiLCJtaXhpbi9fbG9hZGluZy1vdmVybGF5LnNjc3MiLCJfY29yZS5zY3NzIiwidmVuZG9yL19ub3JtYWxpemUuc2NzcyIsImNvcmUvX3Jlc2V0LnNjc3MiLCJjb3JlL19jb21tb24uc2NzcyIsImNvcmUvX2Zvcm0uc2NzcyIsImNvcmUvX3RhYmxlLnNjc3MiLCJsYXlvdXQvX2dsb2JhbC5zY3NzIiwibGF5b3V0L19oZWFkZXIuc2NzcyIsImxheW91dC9faGVhZGVyLW5hdi5zY3NzIiwibGF5b3V0L19oZWFkZXItc2VhcmNoLnNjc3MiLCJsYXlvdXQvX2hlYWRlci1hY2NvdW50LnNjc3MiLCJsYXlvdXQvX2hlYWRlci1jYXJ0LnNjc3MiLCJsYXlvdXQvX2Zvb3Rlci5zY3NzIiwibW9kdWxlL19hbmltYXRpb25zLnNjc3MiLCJtb2R1bGUvX3Byb2R1Y3QtbGlzdC5zY3NzIiwibW9kdWxlL19jYWxlbmRhci5zY3NzIiwibW9kdWxlL19jYXRhbG9nLXByb2R1Y3Quc2NzcyIsIm1vZHVsZS9fY2F0YWxvZy1tc3JwLnNjc3MiLCJtb2R1bGUvX2NhdGFsb2ctY29tcGFyZS5zY3NzIiwibW9kdWxlL19jaGVja291dC1jYXJ0LnNjc3MiLCJtb2R1bGUvX2NoZWNrb3V0LW9uZXBhZ2Uuc2NzcyIsIm1vZHVsZS9fY2hlY2tvdXQtc3VjY2Vzcy5zY3NzIiwibW9kdWxlL19jb25maWd1cmFibGVzd2F0Y2hlcy5zY3NzIiwibW9kdWxlL19jdXN0b21lci5zY3NzIiwibW9kdWxlL19jb250YWN0cy5zY3NzIiwibW9kdWxlL19maW5kLWEtcmVwLnNjc3MiLCJtb2R1bGUvX3BheXBhbC5zY3NzIiwibW9kdWxlL19yZXZpZXcuc2NzcyIsIm1vZHVsZS9fc2xpZGVzaG93LnNjc3MiLCJtb2R1bGUvX3dpc2hsaXN0LnNjc3MiLCJtb2R1bGUvX2NoZWNrb3V0LWNhcnQtbWluaWNhcnQuc2NzcyIsIm1vZHVsZS9fc2VhcmNoLnNjc3MiLCJtb2R1bGUvX2FjY291bnQtcmV2aWV3cy5zY3NzIiwibW9kdWxlL19jbXMuc2NzcyIsIm1vZHVsZS9fcHJpY2luZ19jb25kaXRpb25zLnNjc3MiLCJtb2R1bGUvX2Nvb2tpZXMuc2NzcyIsIm1vZHVsZS9fdGFncy5zY3NzIiwibW9kdWxlL19jYXB0Y2hhLnNjc3MiLCJtb2R1bGUvX2FjY291bnQtb3JkZXJzLnNjc3MiLCJtb2R1bGUvX3JlY3VycmluZy1wcm9maWxlcy5zY3NzIiwibW9kdWxlL19iaWxsaW5nLWFncmVlbWVudHMuc2NzcyIsIm1vZHVsZS9fcG9wdWxhci10ZXJtcy5zY3NzIiwibW9kdWxlL193aWRnZXQuc2NzcyIsIm1vZHVsZS9fY2hlY2tvdXQtbXVsdGktYWRkcmVzcy5zY3NzIiwibW9kdWxlL19pY29ucy5zY3NzIiwibW9kdWxlL19yZXNwb25zaXZlYmFubmVyc2xpZGVyLnNjc3MiLCJtb2R1bGUvX25ld3Muc2NzcyIsIm92ZXJyaWRlL19wbHVnaW4uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFwcGxpY2F0aW9uIENvcmUgLyBObyBNUSBmb3IgTHRlLUlFOCBVc2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJG1xLXN1cHBvcnQ6IGZhbHNlO1xuJG1xLWZpeGVkLXZhbHVlOiAxMDI0cHg7XG5cbkBpbXBvcnQgXCJmcmFtZXdvcmtcIjtcbkBpbXBvcnQgXCJjb3JlXCI7XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNBU1MgLyBDb21wYXNzIEZyYW1ld29ya1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb21wYXNzXG5cbi8vIFVuY29tbWVudCBtZSB0byB1c2UgR3VscCBcbkBpbXBvcnQgXCIuLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3NcIjtcblxuLy8gQ29tbWVudCAyIGxpbmVzIGJlbG93IHRvIHVzZSBHdWxwXG4vLyAgQGltcG9ydCBcImNvbXBhc3NcIjtcbi8vICBAaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG5cbi8vIEJvdXJib25cbkBpbXBvcnQgXCJib3VyYm9uL2JvdXJib25cIjtcbkBpbXBvcnQgXCJuZWF0L25lYXRcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyc1xuXG5AaW1wb3J0IFwidmFyXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZ1bmN0aW9uc1xuXG5AaW1wb3J0IFwiZnVuY3Rpb24vYmxhY2tcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbi93aGl0ZVwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNaXhpbnNcblxuQGltcG9ydCBcIm1peGluL25hdi1hbmltYXRpb25zXCI7XG5AaW1wb3J0IFwibWl4aW4vYnJlYWtwb2ludFwiO1xuQGltcG9ydCBcIm1peGluL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwibWl4aW4vaW1hZ2UtcmVwbGFjZW1lbnRcIjtcbkBpbXBvcnQgXCJtaXhpbi9tZW51XCI7XG5AaW1wb3J0IFwibWl4aW4vbm90LXNlbGVjdGFibGVcIjtcbkBpbXBvcnQgXCJtaXhpbi9pZi1yZXNvbHV0aW9uXCI7XG5AaW1wb3J0IFwibWl4aW4vdG9nZ2xlLWNvbnRlbnRcIjtcbkBpbXBvcnQgXCJtaXhpbi90cmlhbmdsZVwiO1xuQGltcG9ydCBcIm1peGluL3R5cG9ncmFwaHlcIjtcbkBpbXBvcnQgXCJtaXhpbi9sb2FkaW5nLW92ZXJsYXlcIjtcbi8vICBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlXG4iLCJAaW1wb3J0IFwiY29tcGFzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJjb21wYXNzL3V0aWxpdGllc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImNvbXBhc3MvY3NzM1wiO1xuIiwiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG5cbi8vIGNvbXBhY3QgaXMgcGFydCBvZiBsaWJzYXNzXG5cbkBmdW5jdGlvbiAtY29tcGFzcy1udGgoJGxpc3QsICRwbGFjZSkge1xuICAvLyBZZXAsIFNhc3MtbGlzdHMgYXJlIDEtaW5kZXhlZC5cbiAgQGlmICRwbGFjZSA9PSBcImZpcnN0XCIge1xuICAgICRwbGFjZTogMTtcbiAgfVxuICBAaWYgJHBsYWNlID09IFwibGFzdFwiIHtcbiAgICAkcGxhY2U6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgQHJldHVybiBudGgoJGxpc3QsICRwbGFjZSk7XG59XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjpudWxsLCAkaXRlbTM6bnVsbCwgJGl0ZW00Om51bGwsICRpdGVtNTpudWxsLCAkaXRlbTY6bnVsbCwgJGl0ZW03Om51bGwsICRpdGVtODpudWxsLCAkaXRlbTk6bnVsbCkge1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRpdGVtMSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJGl0ZW1zOiAkaXRlbTE7XG4gIH0gQGVsc2Uge1xuICAgICRpdGVtczogJGl0ZW0xICRpdGVtMiAkaXRlbTMgJGl0ZW00ICRpdGVtNSAkaXRlbTYgJGl0ZW03ICRpdGVtOCAkaXRlbTk7XG4gIH1cblxuICAkZnVsbDogZmlyc3QtdmFsdWUtb2YoJGl0ZW1zKTtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTtcbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6bnVsbCwgJHJlamVjdDM6bnVsbCwgJHJlamVjdDQ6bnVsbCwgJHJlamVjdDU6bnVsbCwgJHJlamVjdDY6bnVsbCwgJHJlamVjdDc6bnVsbCwgJHJlamVjdDg6bnVsbCwgJHJlamVjdDk6bnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcblxuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTtcbn1cblxuQGlmIG5vdChmdW5jdGlvbi1leGlzdHMoY29tcGFjdCkpIHtcbiAgQGZ1bmN0aW9uIGNvbXBhY3QoJHZhcnMuLi4pIHtcbiAgICAkbGlzdDogKCk7XG4gICAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICAgIEBpZiAkdmFyIHtcbiAgICAgICAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsIGNvbW1hKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRsaXN0O1xuICB9XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjcm9zcyBicm93c2VyIHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gICRwcmVmaXhlZDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gJ3N0cmluZycge1xuICAgICAgJHByZWZpeGVkOiAkcHJlZml4ZWQgb3Igc3RyLWluZGV4KCRpdGVtLCAndXJsJykgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCAncmdiJykgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCAnIycpICE9IDE7XG4gICAgfSBAZWxzZWlmIHR5cGUtb2YoJGl0ZW0pID09ICdjb2xvcicge1xuICAgIH0gQGVsc2VpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRwcmVmaXhlZDogdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcHJlZml4ZWQ7XG59XG5cbkBmdW5jdGlvbiBwcmVmaXgoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG5cbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkcHJvcGVydHkxKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTtcbiAgfSBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICB9XG5cbiAgJHByb3BzOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkaXRlbSA9PSBudWxsIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHByZWZpeGVkKCRwcmVmaXgsICRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAjeyRwcmVmaXh9LSN7JGl0ZW19O1xuICAgICAgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHByb3BzOiAkaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcHJvcHM7XG59XG5cbkBmdW5jdGlvbiAtc3ZnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctc3ZnJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtb3dnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctb3dnJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtd2Via2l0KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctd2Via2l0JywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtbW96KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbW96JywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtbygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW8nLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1waWUoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1waWUnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBjb2xvci1zdG9wcygkaXRlbTEsICRpdGVtMjpudWxsLCAkaXRlbTM6bnVsbCwgJGl0ZW00Om51bGwsICRpdGVtNTpudWxsLCAkaXRlbTY6bnVsbCwgJGl0ZW03Om51bGwsICRpdGVtODpudWxsLCAkaXRlbTk6bnVsbCkge1xuICAkaXRlbXM6ICRpdGVtMiwgJGl0ZW0zLCAkaXRlbTQsICRpdGVtNSwgJGl0ZW02LCAkaXRlbTcsICRpdGVtOCwgJGl0ZW05O1xuICAkZnVsbDogJGl0ZW0xO1xuICBAZWFjaCAkaXRlbSBpbiAkaXRlbXMge1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07XG4gICAgfSAgICBcbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufSIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbnN0YW50cyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbnN0YW50cy5yYlxuLy8gXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICAgIEBpZiAoJGZyb20gPT0gdG9wKSB7XG4gICAgICAgIEByZXR1cm4gYm90dG9tO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGJvdHRvbSkge1xuICAgICAgICBAcmV0dXJuIHRvcDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBsZWZ0KSB7XG4gICAgICAgIEByZXR1cm4gcmlnaHQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gcmlnaHQpIHtcbiAgICAgICAgQHJldHVybiBsZWZ0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGNlbnRlcikge1xuICAgICAgICBAcmV0dXJuIGNlbnRlcjtcbiAgICB9XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBkaXNwbGF5IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Rpc3BsYXkucmJcbi8vIFxuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSl7XG4gICAgQGlmICgkdHlwZSA9PSBibG9jayl7XG4gICAgICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYSwgYWJiciwgYWNyb255bSwgYXVkaW8sIGIsIGJhc2Vmb250LCBiZG8sIGJpZywgYnIsIGNhbnZhcywgY2l0ZSwgY29kZSwgY29tbWFuZCwgZGF0YWxpc3QsIGRmbiwgZW0sIGVtYmVkLCBmb250LCBpLCBpbWcsIGlucHV0LCBrZXlnZW4sIGtiZCwgbGFiZWwsIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBxLCBycCwgcnQsIHJ1YnksIHMsIHNhbXAsIHNlbGVjdCwgc21hbGwsIHNwYW4sIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdGV4dGFyZWEsIHRpbWUsIHR0LCB1LCB2YXIsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lLWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBpbWc7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUpe1xuICAgICAgICBAcmV0dXJuIHRhYmxlO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGxpc3QtaXRlbSl7XG4gICAgICAgIEByZXR1cm4gbGk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtcm93LWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Ym9keTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1oZWFkZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRoZWFkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGZvb3Q7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtcm93KXtcbiAgICAgICAgQHJldHVybiB0cjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1jZWxsKXtcbiAgICAgICAgQHJldHVybiB0aCwgdGQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1pbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBlbWJlZCwga2V5Z2VuLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCB0aW1lLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1KXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRleHQtaW5wdXQpe1xuICAgICAgICBAcmV0dXJuIGlucHV0LCB0ZXh0YXJlYTtcbiAgICB9XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb2xvcnMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29sb3JzLnJiXG4vL1xuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2YgbGlnaHRlbi9kYXJrZW4gc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIGxpZ2h0bmVzcyBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgc2NhbGVkIGRhcmtlciwgaWYgcG9zaXRpdmUsIGl0IGlzIHNjYWxlZCBsaWdodGVyLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgbGlnaHQgb3IgZGFyayBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBzYXR1cmF0ZS9kZXNhdHVyYXRlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpO1xufVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIHNhdHVyYXRpb24gYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIGRlc2F0dXJhdGVkLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2F0dXJhdGVkLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgc2F0dXJhdGVkIG9yIGRlc2F0dXJhdGVkIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCMwMDAwMDAsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoI2ZmZmZmZiwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbiIsIkBpbXBvcnQgXCJ1dGlsaXRpZXMvY29sb3JcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvZ2VuZXJhbFwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9zcHJpdGVzXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3RhYmxlc1wiO1xuXG4vLyBkZXByZWNhdGVkXG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbiIsIkBpbXBvcnQgXCJjb2xvci9jb250cmFzdFwiOyIsIiRjb250cmFzdGVkLWRhcmstZGVmYXVsdDogICAjMDAwICFkZWZhdWx0O1xuJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdDogICNmZmYgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkOiAzMCUgIWRlZmF1bHQ7XG5cbi8vIFJldHVybnMgdGhlIGAkbGlnaHRgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGRhcmtcbi8vIGFuZCB0aGUgYCRkYXJrYCBjb2xvciB3aGVuIHRoZSBgJGNvbG9yYCBpcyBsaWdodC5cbi8vIFRoZSBgJHRocmVzaG9sZGAgaXMgYSBwZXJjZW50IGJldHdlZW4gYDAlYCBhbmQgYDEwMCVgIGFuZCBpdCBkZXRlcm1pbmVzXG4vLyB3aGVuIHRoZSBsaWdodG5lc3Mgb2YgYCRjb2xvcmAgY2hhbmdlcyBmcm9tIFwiZGFya1wiIHRvIFwibGlnaHRcIi5cbkBmdW5jdGlvbiBjb250cmFzdC1jb2xvcihcbiAgJGNvbG9yLFxuICAkZGFyazogJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0LFxuICAkbGlnaHQ6ICRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQsXG4gICR0aHJlc2hvbGQ6ICRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGRcbikge1xuICBAcmV0dXJuIGlmKGxpZ2h0bmVzcygkY29sb3IpIDwgJHRocmVzaG9sZCwgJGxpZ2h0LCAkZGFyaylcbn1cblxuLy8gU2V0cyB0aGUgc3BlY2lmaWVkIGJhY2tncm91bmQgY29sb3IgYW5kIGNhbGN1bGF0ZXMgYSBkYXJrIG9yIGxpZ2h0IGNvbnRyYXN0ZWQgdGV4dCBjb2xvci5cbi8vIFRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBbY29udHJhc3QtY29sb3IgZnVuY3Rpb25dKCNmdW5jdGlvbi1jb250cmFzdC1jb2xvcikuXG5AbWl4aW4gY29udHJhc3RlZChcbiAgJGJhY2tncm91bmQtY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBjb2xvcjogY29udHJhc3QtY29sb3IoJGJhY2tncm91bmQtY29sb3IsICRkYXJrLCAkbGlnaHQsICR0aHJlc2hvbGQpO1xufSIsIkBpbXBvcnQgXCJnZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImdlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL3RhZy1jbG91ZFwiO1xuQGltcG9ydCBcImdlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL21pblwiO1xuIiwiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyBcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudCAgICA6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheSAgICA6IGJsb2NrO1xuICAgIGhlaWdodCAgICAgOiAwO1xuICAgIGNsZWFyICAgICAgOiBib3RoO1xuICAgIG92ZXJmbG93ICAgOiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eSA6IGhpZGRlbjtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBFbWl0cyBzdHlsZXMgZm9yIGEgdGFnIGNsb3VkXG5AbWl4aW4gdGFnLWNsb3VkKCRiYXNlLXNpemU6IDFlbSkge1xuICBmb250LXNpemU6ICRiYXNlLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplO1xuICAueHhzLCAueHMsIC5zLCAubCwgLnhsLCAueHhsIHtcbiAgICBsaW5lLWhlaWdodDogMS4yICogJGJhc2Utc2l6ZTsgfVxuICAueHhzIHtcbiAgICBmb250LXNpemU6ICRiYXNlLXNpemUgLyAyOyB9XG4gIC54cyB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZSAvIDM7IH1cbiAgLnMge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyA0OyB9XG4gIC5sIHtcbiAgICBmb250LXNpemU6IDQgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAueGwge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyAyOyB9XG4gIC54eGwge1xuICAgIGZvbnQtc2l6ZTogMiAqICRiYXNlLXNpemU7IH0gfVxuIiwiQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLWhlaWdodCBtaXhpbi5cbkBtaXhpbiBtaW4taGVpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bShoZWlnaHQsICR2YWx1ZSk7IH1cblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4td2lkdGggbWl4aW4uXG5AbWl4aW4gbWluLXdpZHRoKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bSh3aWR0aCwgJHZhbHVlKTsgfVxuXG4vLyBAcHJpdmF0ZSBUaGlzIG1peGluIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LlxuQG1peGluIGhhY2tlZC1taW5pbXVtKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gIG1pbi0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgQGluY2x1ZGUgYmFuZy1oYWNrKCRwcm9wZXJ0eSwgYXV0bywgJHZhbHVlKTsgfVxuIiwiQGltcG9ydCBcInNwcml0ZXMvYmFzZVwiO1xuQGltcG9ydCBcInNwcml0ZXMvc3ByaXRlLWltZ1wiO1xuIiwiLy8gRGV0ZXJtaW5lcyB0aG9zZSBzdGF0ZXMgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGVuYWJsZSBtYWdpYyBzcHJpdGUgc2VsZWN0b3JzXG4kc3ByaXRlLXNlbGVjdG9yczogaG92ZXIsIHRhcmdldCwgYWN0aXZlICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYW4gZWxlbWVudCB0byB0aGUgb3JpZ2luYWxcbi8vIGRpbWVuc2lvbnMgb2YgYW4gaW1hZ2UgYmVmb3JlIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUgc3ByaXRlLlxuQG1peGluIHNwcml0ZS1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUpIHtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoc3ByaXRlLWZpbGUoJG1hcCwgJHNwcml0ZSkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoc3ByaXRlLWZpbGUoJG1hcCwgJHNwcml0ZSkpO1xufVxuXG4vLyBTZXQgdGhlIGJhY2tncm91bmQgcG9zaXRpb24gb2YgdGhlIGdpdmVuIHNwcml0ZSBgJG1hcGAgdG8gZGlzcGxheSB0aGVcbi8vIHNwcml0ZSBvZiB0aGUgZ2l2ZW4gYCRzcHJpdGVgIG5hbWUuIFlvdSBjYW4gbW92ZSB0aGUgaW1hZ2UgcmVsYXRpdmUgdG8gaXRzXG4vLyBuYXR1cmFsIHBvc2l0aW9uIGJ5IHBhc3NpbmcgYCRvZmZzZXQteGAgYW5kIGAkb2Zmc2V0LXlgLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHNwcml0ZS1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7ICBcbn1cblxuXG4vLyBEZXRlcm1pbmVzIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgbWFnaWMgc2VsZWN0b3JzIGluIHlvdXIgc3ByaXRlc1xuJGRpc2FibGUtbWFnaWMtc3ByaXRlLXNlbGVjdG9yczpmYWxzZSAhZGVmYXVsdDtcblxuLy8gSW5jbHVkZSB0aGUgcG9zaXRpb24gYW5kIChvcHRpb25hbGx5KSBkaW1lbnNpb25zIG9mIHRoaXMgYCRzcHJpdGVgXG4vLyBpbiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYC4gVGhlIHNwcml0ZSB1cmwgc2hvdWxkIGNvbWUgZnJvbSBlaXRoZXIgYSBiYXNlXG4vLyBjbGFzcyBvciB5b3UgY2FuIHNwZWNpZnkgdGhlIGBzcHJpdGUtdXJsYCBleHBsaWNpdGx5IGxpa2UgdGhpczpcbi8vXG4vLyAgICAgYmFja2dyb3VuZDogJG1hcCBuby1yZXBlYXQ7XG5AbWl4aW4gc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zOiBmYWxzZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBAaWYgJGRpbWVuc2lvbnMge1xuICAgIEBpbmNsdWRlIHNwcml0ZS1kaW1lbnNpb25zKCRtYXAsICRzcHJpdGUpO1xuICB9XG4gIEBpZiBub3QoJGRpc2FibGUtbWFnaWMtc3ByaXRlLXNlbGVjdG9ycykge1xuICAgIEBpbmNsdWRlIHNwcml0ZS1zZWxlY3RvcnMoJG1hcCwgJHNwcml0ZSwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICB9XG59XG5cbi8vIEluY2x1ZGUgdGhlIHNlbGVjdG9ycyBmb3IgdGhlIGAkc3ByaXRlYCBnaXZlbiB0aGUgYCRtYXBgIGFuZCB0aGUgXG4vLyBgJGZ1bGwtc3ByaXRlLW5hbWVgXG4vLyBAcHJpdmF0ZVxuQG1peGluIHNwcml0ZS1zZWxlY3RvcnMoJG1hcCwgJHNwcml0ZS1uYW1lLCAkZnVsbC1zcHJpdGUtbmFtZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNlbGVjdG9yIGluICRzcHJpdGUtc2VsZWN0b3JzIHtcbiAgICBAaWYgc3ByaXRlX2hhc19zZWxlY3RvcigkbWFwLCAkc3ByaXRlLW5hbWUsICRzZWxlY3Rvcikge1xuICAgICAgJjojeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX1fI3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9LSN7JHNlbGVjdG9yfSB7XG4gICAgICAgICAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgXCIjeyRzcHJpdGUtbmFtZX1fI3skc2VsZWN0b3J9XCIsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gR2VuZXJhdGVzIGEgY2xhc3MgZm9yIGVhY2ggc3BhY2Ugc2VwYXJhdGVkIG5hbWUgaW4gYCRzcHJpdGUtbmFtZXNgLlxuLy8gVGhlIGNsYXNzIHdpbGwgYmUgb2YgdGhlIGZvcm0gLjxtYXAtbmFtZT4tPHNwcml0ZS1uYW1lPi5cbi8vXG4vLyBJZiBhIGJhc2UgY2xhc3MgaXMgcHJvdmlkZWQsIHRoZW4gZWFjaCBjbGFzcyB3aWxsIGV4dGVuZCBpdC5cbi8vXG4vLyBJZiBgJGRpbWVuc2lvbnNgIGlzIGB0cnVlYCwgdGhlIHNwcml0ZSBkaW1lbnNpb25zIHdpbGwgc3BlY2lmaWVkLlxuQG1peGluIHNwcml0ZXMoJG1hcCwgJHNwcml0ZS1uYW1lcywgJGJhc2UtY2xhc3M6IGZhbHNlLCAkZGltZW5zaW9uczogZmFsc2UsICRwcmVmaXg6IHNwcml0ZS1tYXAtbmFtZSgkbWFwKSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgQGVhY2ggJHNwcml0ZS1uYW1lIGluICRzcHJpdGUtbmFtZXMge1xuICAgIEBpZiBzcHJpdGVfZG9lc19ub3RfaGF2ZV9wYXJlbnQoJG1hcCwgJHNwcml0ZS1uYW1lKSB7XG4gICAgICAkZnVsbC1zcHJpdGUtbmFtZTogXCIjeyRwcmVmaXh9LSN7JHNwcml0ZS1uYW1lfVwiO1xuICAgICAgLiN7JGZ1bGwtc3ByaXRlLW5hbWV9IHtcbiAgICAgICAgQGlmICRiYXNlLWNsYXNzIHsgQGV4dGVuZCAjeyRiYXNlLWNsYXNzfTsgfVxuICAgICAgICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZS1uYW1lLCAkZGltZW5zaW9ucywgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIi8vIEBkb2Mgb2ZmXG4vLyBFeGFtcGxlIDE6XG4vL1xuLy8gICAgIGEudHdpdHRlclxuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMi5wbmdcIiwgMSlcbi8vICAgICBhLmZhY2Vib29rXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMycG5nXCIsIDIpXG4vL1xuLy8gRXhhbXBsZSAyOlxuLy9cbi8vICAgICBhXG4vLyAgICAgICArc3ByaXRlLWJhY2tncm91bmQoXCJpY29ucy0zMi5wbmdcIilcbi8vICAgICAgIGEudHdpdHRlclxuLy8gICAgICAgICArc3ByaXRlLWNvbHVtbigxKVxuLy8gICAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgICArc3ByaXRlLXJvdygyKVxuLy8gQGRvYyBvblxuXG4kc3ByaXRlLWRlZmF1bHQtc2l6ZTogMzJweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1kZWZhdWx0LW1hcmdpbjogMHB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4kc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0OiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuLy8gU2V0cyBhbGwgdGhlIHJ1bGVzIGZvciBhIHNwcml0ZSBmcm9tIGEgZ2l2ZW4gc3ByaXRlIGltYWdlIHRvIHNob3cganVzdCBvbmUgb2YgdGhlIHNwcml0ZXMuXG4vLyBUbyByZWR1Y2UgZHVwbGljYXRpb24gdXNlIGEgc3ByaXRlLWJnIG1peGluIGZvciBjb21tb24gcHJvcGVydGllcyBhbmQgYSBzcHJpdGUtc2VsZWN0IG1peGluIGZvciBwb3NpdGlvbmluZy5cbkBtaXhpbiBzcHJpdGUtaW1nKCRpbWcsICRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93LCAkd2lkdGgsICRoZWlnaHQsICRtYXJnaW4pOyBcbn1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIHlvdSB3YW50IGEgc3F1YXJlLCBidXQgYWxsb3dzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kKCRpbWcsICR3aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUsICRoZWlnaHQ6ICR3aWR0aCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1yZWN0YW5nbGUoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTsgXG59XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1yZWN0YW5nbGUoJGltZywgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQpIHtcbiAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRpbWcpIG5vLXJlcGVhdDtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBvdmVyZmxvdzogaGlkZGVuOyBcbn1cblxuLy8gQWxsb3dzIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgcm93IG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLWNvbHVtbigkY29sLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgMSwgJHdpZHRoLCAwcHgsICRtYXJnaW4pOyBcbn1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIHNwcml0ZSBwb3NpdGlvbmluZyBvcHRpbWl6ZWQgZm9yIGEgc2luZ2xlIGNvbHVtbiBvZiBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1yb3coJHJvdywgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oMSwgJHJvdywgMHB4LCAkaGVpZ2h0LCAkbWFyZ2luKTsgXG59XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgZnJvbSBhIGdyaWQgb2YgZXF1YWwgZGltZW5zaW9uZWQgc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcG9zaXRpb24oJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgJHg6ICgkY29sIC0gMSkgKiAtJHdpZHRoIC0gKCRjb2wgLSAxKSAqICRtYXJnaW47XG4gICR5OiAoJHJvdyAtIDEpICogLSRoZWlnaHQgLSAoJHJvdyAtIDEpICogJG1hcmdpbjtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogJHggJHk7IFxufVxuXG5cblxuLy8gU2ltaWxhciB0byAnc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMnIGJ1dCBkb2VzIG5vdCBhdXRtYXRpY2x5IHNldCB0aGUgZGVtZW5zaW9uc1xuQG1peGluIHNwcml0ZS1yZXBsYWNlLXRleHQgKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zOiBmYWxzZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHsgICAgXG4gIEBpbmNsdWRlIGhpZGUtdGV4dDtcbiAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRtYXA7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi8vIFNpbWlsYXIgdG8gJ3JlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMnIGJ1dCB3aXRoIHNwcml0ZXNcbi8vIFRvIHVzZSwgY3JlYXRlIHlvdXIgc3ByaXRlIGFuZCB0aGVuIHBhc3MgaXQgaW4gdGhlIGAkbWFwYCBwYXJhbVxuLy8gVGhlIG5hbWUgb2YgdGhlIGltYWdlIGluIHRoZSBzcHJpdGUgZm9sZGVyIHNob3VsZCBiZSBgJGltZy1uYW1lYFxuQG1peGluIHNwcml0ZS1yZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zICgkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCl7ICAgIFxuICBAaW5jbHVkZSBzcHJpdGUtcmVwbGFjZS10ZXh0ICgkbWFwLCAkc3ByaXRlLCB0cnVlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG59IiwiQGltcG9ydCBcInRhYmxlcy9hbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zXCI7XG5AaW1wb3J0IFwidGFibGVzL2JvcmRlcnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvc2NhZmZvbGRpbmdcIjtcbiIsIkBtaXhpbiBhbHRlcm5hdGluZy1yb3dzLWFuZC1jb2x1bW5zKCRldmVuLXJvdy1jb2xvciwgJG9kZC1yb3ctY29sb3IsICRkYXJrLWludGVyc2VjdGlvbiwgJGhlYWRlci1jb2xvcjogd2hpdGUsICRmb290ZXItY29sb3I6IHdoaXRlKSB7XG4gIHRoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfVxuICB0ciB7XG4gICAgJi5vZGQsICY6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICAgIHRkIHtcbiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2RkLXJvdy1jb2xvcjtcbiAgICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2RkLXJvdy1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH1cbiAgICB9XG4gIHRyLmV2ZW4ge1xuICAgIHRkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVuLXJvdy1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfVxuICB0Zm9vdCB7XG4gICAgdGgsIHRkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItY29sb3I7XG4gICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9IH1cbiIsIkBtaXhpbiBvdXRlci10YWJsZS1ib3JkZXJzKCR3aWR0aDogMnB4LCAkY29sb3I6IGJsYWNrKSB7XG4gIGJvcmRlcjogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgdGhlYWQge1xuICAgIHRoIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfVxuICB0Zm9vdCB7XG4gICAgdGgsIHRkIHtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfVxuICB0aCB7XG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkY29sb3I7IH0gfSB9XG5cbkBtaXhpbiBpbm5lci10YWJsZS1ib3JkZXJzKCR3aWR0aDogMnB4LCAkY29sb3I6IGJsYWNrKSB7XG4gIHRoLCB0ZCB7XG4gICAgYm9yZGVyOiB7XG4gICAgICByaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjtcbiAgICAgIGxlZnQtd2lkdGg6IDBweDtcbiAgICAgIHRvcC13aWR0aDogMHB4OyB9O1xuICAgICY6bGFzdC1jaGlsZCxcbiAgICAmLmxhc3Qge1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwcHg7IH0gfVxuXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuICB0Ym9keSwgdGZvb3Qge1xuICAgIHRyOmxhc3QtY2hpbGQge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH1cbiAgICB0ci5sYXN0IHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9IH0gfVxuIiwiQG1peGluIHRhYmxlLXNjYWZmb2xkaW5nIHtcbiAgdGgge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogYm9sZDsgfVxuICB0ZCxcbiAgdGgge1xuICAgIHBhZGRpbmc6IDJweDtcbiAgICAmLm51bWVyaWMge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7IH0gfSB9XG4iLCJAaW1wb3J0IFwibGlua3MvaG92ZXItbGlua1wiO1xuQGltcG9ydCBcImxpbmtzL2xpbmstY29sb3JzXCI7XG5AaW1wb3J0IFwibGlua3MvdW5zdHlsZWQtbGlua1wiO1xuIiwiLy8gYSBsaW5rIHRoYXQgb25seSBoYXMgYW4gdW5kZXJsaW5lIHdoZW4geW91IGhvdmVyIG92ZXIgaXRcbkBtaXhpbiBob3Zlci1saW5rIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAmOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfSB9XG4iLCIvLyBTZXQgYWxsIHRoZSBjb2xvcnMgZm9yIGEgbGluayB3aXRoIG9uZSBtaXhpbiBjYWxsLlxuLy8gT3JkZXIgb2YgYXJndW1lbnRzIGlzOlxuLy9cbi8vIDEuIG5vcm1hbFxuLy8gMi4gaG92ZXJcbi8vIDMuIGFjdGl2ZVxuLy8gNC4gdmlzaXRlZFxuLy8gNS4gZm9jdXNcbi8vXG4vLyBUaG9zZSBzdGF0ZXMgbm90IHNwZWNpZmllZCB3aWxsIGluaGVyaXQuXG4vLyBNaXhpbiB0byBhbiBhbmNob3IgbGluayBsaWtlIHNvOlxuLy8gICAgIGFcbi8vICAgICAgICtsaW5rLWNvbG9ycygjMDBjLCAjMGNjLCAjYzBjLCAjY2NjLCAjY2MwKVxuXG5AbWl4aW4gbGluay1jb2xvcnMoJG5vcm1hbCwgJGhvdmVyOiBmYWxzZSwgJGFjdGl2ZTogZmFsc2UsICR2aXNpdGVkOiBmYWxzZSwgJGZvY3VzOiBmYWxzZSkge1xuICBjb2xvcjogJG5vcm1hbDtcbiAgQGlmICR2aXNpdGVkIHtcbiAgICAmOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICR2aXNpdGVkOyB9IH1cbiAgQGlmICRmb2N1cyB7XG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGZvY3VzOyB9IH1cbiAgQGlmICRob3ZlciB7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGhvdmVyOyB9IH1cbiAgQGlmICRhY3RpdmUge1xuICAgICY6YWN0aXZlIHtcbiAgICAgIGNvbG9yOiAkYWN0aXZlOyB9IH0gfVxuIiwiLy8gQSBsaW5rIHRoYXQgbG9va3MgYW5kIGFjdHMgbGlrZSB0aGUgdGV4dCBpdCBpcyBjb250YWluZWQgd2l0aGluXG5AbWl4aW4gdW5zdHlsZWQtbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG4gIGN1cnNvcjogaW5oZXJpdDtcbiAgJjphY3RpdmUsICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7IH0gfVxuIiwiQGltcG9ydCBcImxpc3RzL2hvcml6b250YWwtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWJsb2NrLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9idWxsZXRzXCI7XG4iLCIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZztcbiAgICB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7IHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3QgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0O1xufVxuIiwiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7XG4gIH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDtcbiAgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRleHQtb3ZlcmZsb3csIGVsbGlwc2lzLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgLW8sXG4gICAgLW1zLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG9mZmljaWFsXG4gICk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTtcbiAgfVxufVxuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpO1xuICAgIH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7XG4gIH07XG59XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTsgICAgICAgICAgIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAgICAgIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7ICAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwOyAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8vIElFIDUrXG59XG4iLCJAaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3ZlcnRpY2FsX3JoeXRobVwiO1xuIiwiQGltcG9ydCBcIi4uL2xheW91dC9ncmlkLWJhY2tncm91bmRcIjtcblxuLy8gVGhlIGJhc2UgZm9udCBzaXplLlxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzZSBsaW5lIGhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cbiRiYXNlLWxpbmUtaGVpZ2h0OiAyNHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGRlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciByaHl0aG0gYm9yZGVycy5cbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemU6IDE2cHg7XG5cbi8vIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byB1c2UgYWJzb2x1dGUgcGl4ZWxzIGluIHNpemluZyB5b3VyIHR5cG9ncmFwaHkuXG4kcmVsYXRpdmUtZm9udC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyB0aGUgYGFkanVzdC1mb250LXNpemUtdG9gIG1peGluIGFuZCB0aGUgYGxpbmVzLWZvci1mb250LXNpemVgIGZ1bmN0aW9uXG4vLyB0byByb3VuZCB0aGUgbGluZSBoZWlnaHQgdG8gdGhlIG5lYXJlc3QgaGFsZiBsaW5lIGhlaWdodCBpbnN0ZWFkIG9mIHRoZVxuLy8gbmVhcmVzdCBpbnRlZ3JhbCBsaW5lIGhlaWdodCB0byBhdm9pZCBsYXJnZSBzcGFjaW5nIGJldHdlZW4gbGluZXMuXG4kcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBFbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3QgdGhpcyBtYW55IHBpeGVsc1xuLy8gb2YgdmVydGljYWwgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIHRleHQuXG4kbWluLWxpbmUtcGFkZGluZzogMnB4ICFkZWZhdWx0O1xuXG4vLyAkYmFzZS1mb250LXNpemUgYnV0IGluIHlvdXIgb3V0cHV0IHVuaXQgb2YgY2hvaWNlLlxuLy8gRGVmYXVsdHMgdG8gMWVtIHdoZW4gYCRyZWxhdGl2ZS1mb250LXNpemluZ2AgaXMgdHJ1ZS5cbiRmb250LXVuaXQ6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgMWVtLCAkYmFzZS1mb250LXNpemUpICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzaWMgdW5pdCBvZiBmb250IHJoeXRobS5cbiRiYXNlLXJoeXRobS11bml0OiAkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSAqICRmb250LXVuaXQ7XG5cbi8vIFRoZSBsZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGluIGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWxlYWRlcjogKCRiYXNlLWxpbmUtaGVpZ2h0IC0gJGJhc2UtZm9udC1zaXplKSAqICRmb250LXVuaXQgLyAkYmFzZS1mb250LXNpemU7XG5cbi8vIFRoZSBoYWxmLWxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYWJvdmUgYW5kIGJlbG93IGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWhhbGYtbGVhZGVyOiAkYmFzZS1sZWFkZXIgLyAyO1xuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhIHJlbGF0aXZlIHVuaXQuXG5AZnVuY3Rpb24gcmVsYXRpdmUtdW5pdCgkbnVtYmVyKSB7XG4gIEByZXR1cm4gdW5pdCgkbnVtYmVyKSA9PSBcIiVcIiBvciB1bml0KCRudW1iZXIpID09IFwiZW1cIiBvciB1bml0KCRudW1iZXIpID09IFwicmVtXCJcbn1cblxuLy8gVHJ1ZSBpZiBhIG51bWJlciBoYXMgYW4gYWJzb2x1dGUgdW5pdC5cbkBmdW5jdGlvbiBhYnNvbHV0ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiBub3QocmVsYXRpdmUtdW5pdCgkbnVtYmVyKSBvciB1bml0bGVzcygkbnVtYmVyKSk7XG59XG5cbkBpZiAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kIG5vdChyZWxhdGl2ZS11bml0KCRmb250LXVuaXQpKSB7XG4gIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIHRydWUgYnV0ICRmb250LXVuaXQgaXMgc2V0IHRvICN7JGZvbnQtdW5pdH0gd2hpY2ggaXMgbm90IGEgcmVsYXRpdmUgdW5pdC5cIjtcbn1cblxuLy8gRXN0YWJsaXNoZXMgYSBmb250IGJhc2VsaW5lIGZvciB0aGUgZ2l2ZW4gZm9udC1zaXplLlxuQG1peGluIGVzdGFibGlzaC1iYXNlbGluZSgkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgLy8gSUUgNiByZWZ1c2VzIHRvIHJlc2l6ZSBmb250cyBzZXQgaW4gcGl4ZWxzIGFuZCBpdCB3ZWlyZGx5IHJlc2l6ZXMgZm9udHNcbiAgLy8gd2hvc2Ugcm9vdCBpcyBzZXQgaW4gZW1zLiBTbyB3ZSBzZXQgdGhlIHJvb3QgZm9udCBzaXplIGluIHBlcmNlbnRhZ2VzIG9mXG4gIC8vIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZS5cbiAgKiBodG1sIHtcbiAgICBmb250LXNpemU6IDEwMCUgKiAoJGZvbnQtc2l6ZSAvICRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplKTtcbiAgfVxuICBodG1sIHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbiAgfVxufVxuXG4vLyBSZXNldHMgdGhlIGxpbmUtaGVpZ2h0IHRvIDEgdmVydGljYWwgcmh5dGhtIHVuaXQuXG4vLyBEb2VzIG5vdCB3b3JrIG9uIGVsZW1lbnRzIHdob3NlIGZvbnQtc2l6ZSBpcyBkaWZmZXJlbnQgZnJvbSAkYmFzZS1mb250LXNpemUuXG4vL1xuLy8gQGRlcHJlY2F0ZWQgVGhpcyBtaXhpbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS5cbi8vIFBsZWFzZSB1c2UgdGhlIGBhZGp1c3QtbGVhZGluZy10b2AgbWl4aW4gaW5zdGVhZC5cbkBtaXhpbiByZXNldC1iYXNlbGluZSB7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJGJhc2UtZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbn1cblxuLy8gU2hvdyBhIGJhY2tncm91bmQgaW1hZ2UgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWJ1ZyB5b3VyIGFsaWdubWVudHMuXG4vLyBJbmNsdWRlIHRoZSAkaW1nIGFyZ3VtZW50IGlmIHlvdSB3b3VsZCByYXRoZXIgdXNlIHlvdXIgb3duIGltYWdlIHRoYW4gdGhlXG4vLyBDb21wYXNzIGRlZmF1bHQgZ3JhZGllbnQgaW1hZ2UuXG5AbWl4aW4gZGVidWctdmVydGljYWwtYWxpZ25tZW50KCRpbWc6IGZhbHNlKSB7XG4gIEBpZiAkaW1nIHtcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZyk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZS1yaHl0aG0tdW5pdCk7XG4gIH1cbn1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBhIGRpZmZlcmVudCBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IHRvIG1haW50YWluIHRoZVxuLy8gcmh5dGhtLiAkbGluZXMgc3BlY2lmaWVzIGhvdyBtYW55IG11bHRpcGxlcyBvZiB0aGUgYmFzZWxpbmUgcmh5dGhtIGVhY2ggbGluZVxuLy8gb2YgdGhpcyBmb250IHNob3VsZCB1c2UgdXAuIEl0IGRvZXMgbm90IGhhdmUgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0XG4vLyBkZWZhdWx0cyB0byB0aGUgc21hbGxlc3QgaW50ZWdlciB0aGF0IGlzIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIGZvbnQuXG4vLyBVc2UgJGZyb20tc2l6ZSB0byBhZGp1c3QgZnJvbSBhIGZvbnQtc2l6ZSBvdGhlciB0aGFuIHRoZSBiYXNlIGZvbnQtc2l6ZS5cbkBtaXhpbiBhZGp1c3QtZm9udC1zaXplLXRvKCR0by1zaXplLCAkbGluZXM6IGxpbmVzLWZvci1mb250LXNpemUoJHRvLXNpemUpLCAkZnJvbS1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZnJvbS1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYWRqdXN0LWZvbnQtc2l6ZS10b1wiO1xuICB9XG4gIGZvbnQtc2l6ZTogJGZvbnQtdW5pdCAqICR0by1zaXplIC8gJGZyb20tc2l6ZTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oJGxpbmVzLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICR0by1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbn1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBkaWZmZXJlbnQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlIHJoeXRobS5cbi8vICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lIG9mIHRoaXNcbi8vIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgZGVmYXVsdHMgdG8gdGhlXG4vLyBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbkBtaXhpbiBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBsaW5lLWhlaWdodDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIENhbGN1bGF0ZSByaHl0aG0gdW5pdHMuXG5AZnVuY3Rpb24gcmh5dGhtKFxuICAkbGluZXM6IDEsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSxcbiAgJG9mZnNldDogMFxuKSB7XG4gIEBpZiBub3QoJHJlbGF0aXZlLWZvbnQtc2l6aW5nKSBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIHRoZSByaHl0aG0gZnVuY3Rpb25cIjtcbiAgfVxuICAkcmh5dGhtOiAkZm9udC11bml0ICogKCRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJG9mZnNldCkgLyAkZm9udC1zaXplO1xuICAvLyBSb3VuZCB0aGUgcGl4ZWxzIGRvd24gdG8gbmVhcmVzdCBpbnRlZ2VyLlxuICBAaWYgdW5pdCgkcmh5dGhtKSA9PSBweCB7XG4gICAgJHJoeXRobTogZmxvb3IoJHJoeXRobSk7XG4gIH1cbiAgQHJldHVybiAkcmh5dGhtO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gbXVsdGlwbGUgb2Ygcmh5dGhtIHVuaXRzIG5lZWRlZCB0byBjb250YWluIHRoZSBmb250LXNpemUuXG5AZnVuY3Rpb24gbGluZXMtZm9yLWZvbnQtc2l6ZSgkZm9udC1zaXplKSB7XG4gICRsaW5lczogaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLFxuICAgICAgICAgICAgICBjZWlsKDIgKiAkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpIC8gMixcbiAgICAgICAgICAgICAgY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpKTtcbiAgQGlmICRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJGZvbnQtc2l6ZSA8ICRtaW4tbGluZS1wYWRkaW5nICogMiB7XG4gICAgJGxpbmVzOiAkbGluZXMgKyBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsIDAuNSwgMSk7XG4gIH1cbiAgQHJldHVybiAkbGluZXM7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkcHJvcGVydHk6IG1hcmdpbikge1xuICAjeyRwcm9wZXJ0eX0tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgbWFyZ2luLlxuQG1peGluIG1hcmdpbi1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFRoZSAkcHJvcGVydHkgY2FuIGJlIG1hcmdpbiBvciBwYWRkaW5nLlxuQG1peGluIHRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy10cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIFNob3J0aGFuZCBtaXhpbiB0byBhcHBseSB3aGl0ZXNwYWNlIGZvciB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFuZCBwYWRkaW5nLlxuQG1peGluIHJoeXRobSgkbGVhZGVyOiAwLCAkcGFkZGluZy1sZWFkZXI6IDAsICRwYWRkaW5nLXRyYWlsZXI6IDAsICR0cmFpbGVyOiAwLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbGVhZGVyKCRsZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLWxlYWRlcigkcGFkZGluZy1sZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLXRyYWlsZXIoJHBhZGRpbmctdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoJHRyYWlsZXIsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBhIGJvcmRlciBhbmQgd2hpdGVzcGFjZSB0byBhbnkgc2lkZSB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlIHZlcnRpY2FsXG4vLyByaHl0aG0uIFRoZSB3aGl0ZXNwYWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLlxuQG1peGluIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcigkc2lkZSwgJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpZiBub3QoJHJlbGF0aXZlLWZvbnQtc2l6aW5nKSBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlclwiO1xuICB9XG4gIGJvcmRlci0jeyRzaWRlfS1zdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgYm9yZGVyLSN7JHNpZGV9LXdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgcGFkZGluZy0jeyRzaWRlfTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYm9yZGVycyBhbmQgd2hpdGVzcGFjZSBlcXVhbGx5IHRvIGFsbCBzaWRlcy5cbkBtaXhpbiByaHl0aG0tYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gcmh5dGhtLWJvcmRlcnNcIjtcbiAgfVxuICBib3JkZXI6IHtcbiAgICBzdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgICB3aWR0aDogJGZvbnQtdW5pdCAqICR3aWR0aCAvICRmb250LXNpemU7XG4gIH07XG4gIHBhZGRpbmc6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUsICRvZmZzZXQ6ICR3aWR0aCk7XG59XG5cbi8vIEFwcGx5IGEgbGVhZGluZyBib3JkZXIuXG5AbWl4aW4gbGVhZGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcih0b3AsICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYSB0cmFpbGluZyBib3JkZXIuXG5AbWl4aW4gdHJhaWxpbmctYm9yZGVyKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoYm90dG9tLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG59XG5cbi8vIEFwcGx5IGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgYm9yZGVycy5cbkBtaXhpbiBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGxlYWRpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbiAgQGluY2x1ZGUgdHJhaWxpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQWxpYXMgZm9yIGBob3Jpem9udGFsLWJvcmRlcnNgIG1peGluLlxuQG1peGluIGgtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1ib3JkZXJzKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9jc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcIi4uL2NzczMvYmFja2dyb3VuZC1zaXplXCI7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBjb2x1bW5zXG4kZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciAgICAgOiByZ2JhKDEwMCwgMTAwLCAyMjUsIDAuMjUpICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgZ3V0dGVyc1xuJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IgICAgIDogcmdiYSgwLCAwLCAwLCAwKSAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHlvdXIgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zICAgIDogMjQgICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoICAgICA6IDMwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgd2lkdGggb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCAgICAgOiAxMHB4ICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIG9mZnNldCwgaWYgeW91ciBjb2x1bW5zIGFyZSBwYWRkZWQgaW4gZnJvbSB0aGUgY29udGFpbmVyIGVkZ2VcbiRncmlkLWJhY2tncm91bmQtb2Zmc2V0ICAgICAgICAgICA6IDBweCAgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGJhc2VsaW5lXG4kZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yICAgOiByZ2JhKDAsIDAsIDAsIDAuNSkgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIGhlaWdodCBvZiB5b3VyIGJhc2VsaW5lIGdyaWRcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0ICA6IDEuNWVtICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgY29sdW1ucyBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyB0b2dnbGUgeW91ciB2ZXJ0aWNhbCBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyB0b2dnbGUgYWxsIHlvdXIgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyAgICAgICAgICAgIDogdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBvcHRpb25hbGx5IGZvcmNlIHlvdXIgZ3JpZC1pbWFnZSB0byByZW1haW4gZmx1aWRcbi8vIG5vIG1hdHRlciB3aGF0IHVuaXRzIHlvdSB1c2VkIHRvIGRlY2xhcmVkIHlvdXIgZ3JpZC5cbiRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQgICAgICA6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBDcmVhdGUgdGhlIGdyYWRpZW50IG5lZWRlZCBmb3IgYmFzZWxpbmUgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtYmFzZWxpbmUtZ3JhZGllbnQoXG4gICRjb2xvciA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3Jcbikge1xuICAkZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudChib3R0b20sICRjb2xvciA1JSwgcmdiYSgkY29sb3IsMCkgNSUpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ3JlYXRlIHRoZSBjb2xvci1zdG9wcyBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBidWlsZC1ncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkb2Zmc2V0ICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCxcbiAgJGNvbHVtbi1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsXG4gICRndXR0ZXItY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yXG4pIHtcbiAgJGdyaWQ6IGNvbXBhY3QoKTtcbiAgJGdyaWQ6IGFwcGVuZCgkZ3JpZCwgJGd1dHRlci1jb2xvciAkb2Zmc2V0LCBjb21tYSk7XG4gIEBmb3IgJGkgZnJvbSAwIHRvICR0b3RhbCB7XG5cbiAgICAvLyAkYSByZXByZXNlbnRzIHRoZSBzdGFydCBvZiB0aGlzIGNvbHVtbiwgaW5pdGlhbGx5IGVxdWFsIHRvIHRoZSBvZmZzZXRcbiAgICAkYTogJG9mZnNldDtcbiAgICBAaWYgJGkgPiAwIHsgJGE6ICRhICsgKCgkY29sdW1uICsgJGd1dHRlcikgKiAkaSk7IH1cblxuICAgIC8vICRnIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgZ3V0dGVyLCBlcXVhbCB0byAkYSBwbHVzIG9uZSBjb2x1bW4td2lkdGhcbiAgICAkZzogJGEgKyAkY29sdW1uO1xuXG4gICAgLy8gJHogcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgZ3V0dGVyLCBlcXVhbCB0byAkZyBwbHVzIG9uZSBndXR0ZXItd2lkdGhcbiAgICAkejogJGcgKyAkZ3V0dGVyO1xuXG4gICAgQGlmICh1bml0KCRhKSA9PSBcIiVcIikgYW5kICgkaSA9PSAoJHRvdGFsIC0gMSkpIHtcbiAgICAgICR6OiAxMDAlO1xuICAgIH1cblxuICAgIC8vIGFuZCB3ZSBhZGQgdGhpcyBjb2x1bW4vZ3V0dGVyIHBhaXIgdG8gb3VyIGdyaWRcbiAgICAkZ3JpZDogam9pbigkZ3JpZCwgKCRjb2x1bW4tY29sb3IgJGEsICRjb2x1bW4tY29sb3IgJGcsICRndXR0ZXItY29sb3IgJGcsICRndXR0ZXItY29sb3IgJHopKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyaWQ7XG59XG5cbi8vIFJldHVybiB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBob3Jpem9udGFsIGdyaWRzXG5AZnVuY3Rpb24gZ2V0LWNvbHVtbi1ncmFkaWVudChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICAkZ3JpZDogdW5xdW90ZShcIlwiKTtcblxuICAvLyBkb24ndCBmb3JjZSBmbHVpZCBncmlkcyB3aGVuIHRoZXkgYXJlIGFscmVhZHkgZmx1aWQuXG4gIEBpZiB1bml0KCRjb2x1bW4pID09IFwiJVwiIHsgJGZvcmNlLWZsdWlkOiBmYWxzZTsgfVxuXG4gIEBpZiAkZm9yY2UtZmx1aWQge1xuICAgICRncmlkOiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvcik7XG4gIH0gQGVsc2Uge1xuICAgICRncmlkOiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvcik7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIGdyYWRpZW50XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGxlZnQsICRncmlkKTtcbiAgQHJldHVybiAkZ3JhZGllbnQ7XG59XG5cbi8vIENvbnZlcnQgYSBncmlkIGZyb20gZml4ZWQgdW5pdHMgaW50byBwZXJjZW50YWdlcy5cbkBmdW5jdGlvbiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkb2Zmc2V0ICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCxcbiAgJGNvbHVtbi1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsXG4gICRndXR0ZXItY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yXG4pIHtcbiAgJGNvbnRleHQ6ICgkY29sdW1uICogJHRvdGFsKSArICgkZ3V0dGVyICogKCR0b3RhbCAtIDEpICsgKCRvZmZzZXQgKiAyKSk7XG4gICRvZmZzZXQ6ICRvZmZzZXQgLyAkY29udGV4dCAqIDEwMCU7XG4gICRjb2x1bW46ICRjb2x1bW4gLyAkY29udGV4dCAqIDEwMCU7XG4gICRndXR0ZXI6ICRndXR0ZXIgLyAkY29udGV4dCAqIDEwMCU7XG5cbiAgLy8gcmV0dXJuIHRoZSBob3Jpem9udGFsIGdyaWQgYXMgYSBzZXQgb2YgY29sb3Itc3RvcHNcbiAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuXG4vLyBBZGQganVzdCB0aGUgYmFzZWxpbmUgZ3JpZCB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZChcbiAgJGJhc2VsaW5lIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsXG4gICRjb2xvciAgICA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3Jcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtYmFzZWxpbmUtZ3JhZGllbnQoJGNvbG9yKSk7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKDEwMCUgJGJhc2VsaW5lKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgfVxufVxuXG4vLyBBZGQganVzdCB0aGUgaG9yaXpvbnRhbCBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gY29sdW1uLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZClcbiAgICApO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBib3RoIGhvcml6b250YWwgYW5kIGJhc2VsaW5lIGdyaWRzIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJGJhc2VsaW5lICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRiYXNlbGluZS1jb2xvciA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGlmICRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzIHtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICAgIGdldC1iYXNlbGluZS1ncmFkaWVudCgkYmFzZWxpbmUtY29sb3IpLFxuICAgICAgICBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZClcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUsIGF1dG8pO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2VsaW5lLCAkYmFzZWxpbmUtY29sb3IpO1xuICAgICAgQGluY2x1ZGUgY29sdW1uLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuQGltcG9ydCBcIi4uL3V0aWxpdGllcy9nZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiLi4vZnVuY3Rpb25zXCI7XG5cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQoXG4gICRiYWNrZ3JvdW5kLTEsXG4gICRiYWNrZ3JvdW5kLTI6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0zOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTU6IGZhbHNlLFxuICAkYmFja2dyb3VuZC02OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTg6IGZhbHNlLFxuICAkYmFja2dyb3VuZC05OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMTA6IGZhbHNlXG4pIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkYmFja2dyb3VuZHMpIG9yICRtdWx0LWJncztcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtc3ZnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtb3dnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAtd2Via2l0KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtbW96KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAgIC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICAgICAgIHsgLXBpZS1iYWNrZ3JvdW5kOiAgICAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAgICAgICAgICRiYWNrZ3JvdW5kcyA7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjayhcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRzaW1wbGUtYmFja2dyb3VuZDogaWYoJG11bHQtYmdzIG9yIHByZWZpeGVkKC1jc3MyLCAkYmFja2dyb3VuZHMpLCAtY3NzMigtY29tcGFzcy1udGgoJGJhY2tncm91bmRzLCBsYXN0KSksIGZhbHNlKTtcbiAgQGlmIG5vdChibGFuaygkc2ltcGxlLWJhY2tncm91bmQpKSB7IGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xufVxuXG5cbi8vIEJhY2tncm91bmQgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZS0xLFxuICAkaW1hZ2UtMjogZmFsc2UsXG4gICRpbWFnZS0zOiBmYWxzZSxcbiAgJGltYWdlLTQ6IGZhbHNlLFxuICAkaW1hZ2UtNTogZmFsc2UsXG4gICRpbWFnZS02OiBmYWxzZSxcbiAgJGltYWdlLTc6IGZhbHNlLFxuICAkaW1hZ2UtODogZmFsc2UsXG4gICRpbWFnZS05OiBmYWxzZSxcbiAgJGltYWdlLTEwOiBmYWxzZVxuKSB7XG4gICRpbWFnZXM6IGNvbXBhY3QoJGltYWdlLTEsICRpbWFnZS0yLCAkaW1hZ2UtMywgJGltYWdlLTQsICRpbWFnZS01LCAkaW1hZ2UtNiwgJGltYWdlLTcsICRpbWFnZS04LCAkaW1hZ2UtOSwgJGltYWdlLTEwKTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICAgJGltYWdlcykgb3IgLWNvbXBhc3MtbGlzdC1zaXplKCRpbWFnZXMpID4gMTtcblxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgLXN2ZygkaW1hZ2VzKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtbW96KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIC1vKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICBhbmQgJGFkZC1waWUtYmcgICAgICAgICAgICAgICAgeyBAd2FybiBcIlBJRSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQtaW1hZ2UuIFVzZSBAaW5jbHVkZSBiYWNrZ3JvdW5kKCN7JGltYWdlc30pIGluc3RlYWQuXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgICAkaW1hZ2VzIDtcbn1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgeyAgICAtbW96LWJvcmRlci1pbWFnZTogICAgLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6ICAgIC1vd2cocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICB7IC13ZWJraXQtYm9yZGVyLWltYWdlOiAtd2Via2l0KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgeyAgICAgIC1vLWJvcmRlci1pbWFnZTogICAgICAtbyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIHsgICAgICAgICBib3JkZXItaW1hZ2U6ICAgIC1zdmcocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWltYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZTtcbn1cblxuLy8gTGlzdCBzdHlsZSBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZS1pbWFnZSgkaW1hZ2UpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW1veigkaW1hZ2UpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1vd2coJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgICAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1zdmcoJGltYWdlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLWltYWdlOiAgICAgICAgICRpbWFnZSA7XG59XG5cbi8vIExpc3Qgc3R5bGUgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkdmFsdWUpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJHZhbHVlIDtcbn1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgY29udGVudDogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogICAgICAgICAkdmFsdWUgO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSxcbiAgJHNpemUtMjogZmFsc2UsXG4gICRzaXplLTM6IGZhbHNlLFxuICAkc2l6ZS00OiBmYWxzZSxcbiAgJHNpemUtNTogZmFsc2UsXG4gICRzaXplLTY6IGZhbHNlLFxuICAkc2l6ZS03OiBmYWxzZSxcbiAgJHNpemUtODogZmFsc2UsXG4gICRzaXplLTk6IGZhbHNlLFxuICAkc2l6ZS0xMDogZmFsc2Vcbikge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSk7XG59XG4iLCJAaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL29wYWNpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1jbGlwXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLW9yaWdpblwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1zaXplXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvcmVnaW9uc1wiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2ZpbHRlclwiO1xuQGltcG9ydCBcImNzczMvcGllXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLWludGVyZmFjZVwiO1xuQGltcG9ydCBcImNzczMvZmxleGJveFwiOyIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogNXB4ICFkZWZhdWx0O1xuXG4vLyBSb3VuZCBhbGwgY29ybmVycyBieSBhIHNwZWNpZmljIGFtb3VudCwgZGVmYXVsdHMgdG8gdmFsdWUgb2YgYCRkZWZhdWx0LWJvcmRlci1yYWRpdXNgLlxuLy9cbi8vIFdoZW4gdHdvIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgZmlyc3QgaXMgdGhlIGhvcml6b250YWwgcmFkaXVzXG4vLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdmVydGljYWwgcmFkaXVzLlxuLy9cbi8vIE5vdGU6IHdlYmtpdCBkb2VzIG5vdCBzdXBwb3J0IHNob3J0aGFuZCBzeW50YXggZm9yIHNldmVyYWwgY29ybmVycyBhdCBvbmNlLlxuLy8gU28gaW4gdGhlIGNhc2Ugd2hlcmUgeW91IHBhc3Mgc2V2ZXJhbCB2YWx1ZXMgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSBwYXNzZWQgdG8gd2Via2l0LlxuLy9cbi8vIEV4YW1wbGVzOlxuLy9cbi8vICAgICAuc2ltcGxlICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCwgNHB4KTsgfVxuLy8gICAgIC5jb21wb3VuZCB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4IDVweCwgM3B4IDZweCk7IH1cbi8vICAgICAuY3JhenkgICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDFweCAzcHggNXB4IDdweCwgMnB4IDRweCA2cHggOHB4KX1cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gICAgLnNpbXBsZSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDRweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAvIDRweDsgfVxuLy8gICAgXG4vLyAgICAuY29tcG91bmQge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweCAzcHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7IH1cbi8vICAgIFxuLy8gICAgLmNyYXp5IHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxcHggMnB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4OyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMsICR2ZXJ0aWNhbC1yYWRpdXM6IGZhbHNlKSB7XG5cbiAgQGlmICR2ZXJ0aWNhbC1yYWRpdXMge1xuICAgIC8vIFdlYmtpdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIG9mZmljaWFsIHNob3J0aGFuZCBzeW50YXggZm9yIHNwZWNpZnlpbmdcbiAgICAvLyBhIHZlcnRpY2FsIHJhZGl1cyB1bmxlc3Mgc28gaW4gY2FzZSB0aGVyZSdzIHNldmVyYWwgd2Ugb25seSB0YWtlIHRoZSBmaXJzdC5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgZmlyc3QtdmFsdWUtb2YoJHJhZGl1cykgZmlyc3QtdmFsdWUtb2YoJHZlcnRpY2FsLXJhZGl1cyksXG4gICAgICBub3QoLW1veiksXG4gICAgICAtd2Via2l0LFxuICAgICAgbm90KC1vKSxcbiAgICAgIG5vdCgtbXMpLFxuICAgICAgbm90KC1raHRtbCksXG4gICAgICBub3Qob2ZmaWNpYWwpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItcmFkaXVzXCIsICRyYWRpdXMgdW5xdW90ZShcIi9cIikgJHZlcnRpY2FsLXJhZGl1cyxcbiAgICAgIC1tb3osXG4gICAgICBub3QoLXdlYmtpdCksXG4gICAgICBub3QoLW8pLFxuICAgICAgbm90KC1tcyksXG4gICAgICAta2h0bWwsXG4gICAgICBvZmZpY2lhbFxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCAkcmFkaXVzKTtcbiAgfVxufVxuXG4vLyBSb3VuZCByYWRpdXMgYXQgcG9zaXRpb24gYnkgYW1vdW50LlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJHZlcnRgOiBgdG9wYCwgYGJvdHRvbWBcbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJGhvcnpgOiBgbGVmdGAsIGByaWdodGBcblxuQG1peGluIGJvcmRlci1jb3JuZXItcmFkaXVzKCR2ZXJ0LCAkaG9yeiwgJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICAvLyBTdXBwb3J0IGZvciBtb3ppbGxhJ3Mgc3ludGF4IGZvciBzcGVjaWZ5aW5nIGEgY29ybmVyXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXMtI3skdmVydH0jeyRob3J6fVwiLCAkcmFkaXVzLFxuICAgIC1tb3osXG4gICAgbm90KC13ZWJraXQpLFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90KG9mZmljaWFsKVxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItI3skdmVydH0tI3skaG9yen0tcmFkaXVzXCIsICRyYWRpdXMsXG4gICAgbm90KC1tb3opLFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgXG59XG5cbi8vIFJvdW5kIHRvcC1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCB0b3AtcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHRvcCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCByaWdodCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBib3R0b20gY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggbGVmdCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7IH1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBDU1Mgb3BhY2l0eS4gVGFrZXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxIGFzIHRoZSBhcmd1bWVudCwgZS5nLiAwLjUgZm9yIDUwJSBvcGFjaXR5LlxuLy9cbi8vICAgICBAcGFyYW0gJG9wYWNpdHlcbi8vICAgICAgICAgQSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxLCB3aGVyZSAwIGlzIHRyYW5zcGFyZW50IGFuZCAxIGlzIG9wYXF1ZS5cblxuQG1peGluIG9wYWNpdHkoJG9wYWNpdHkpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHVucXVvdGUoXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0je3JvdW5kKCRvcGFjaXR5ICogMTAwKX0pXCIpO1xuICB9XG4gIG9wYWNpdHk6ICRvcGFjaXR5O1xufVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSB0cmFuc3BhcmVudC5cbkBtaXhpbiB0cmFuc3BhcmVudCB7IEBpbmNsdWRlIG9wYWNpdHkoMCk7IH1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgb3BhcXVlLlxuQG1peGluIG9wYXF1ZSB7IEBpbmNsdWRlIG9wYWNpdHkoMSk7IH1cbiIsIi8vIEBkb2Mgb2ZmXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGJlZm9yZSBpbXBvcnRpbmcuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgYm94IHNoYWRvd3NcbiRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3I6ICMzMzMzMzMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGhvcml6b250YWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyB0byB0aGUgcmlnaHQuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHZlcnRpY2FsIG9mZnNldC4gUG9zaXRpdmUgaXMgZG93bi5cbiRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYmx1ciBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LWJsdXI6IDVweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc3ByZWFkIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkIDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHNoYWRvdyBpbnNldDogaW5zZXQgb3IgZmFsc2UgKGZvciBzdGFuZGFyZCBzaGFkb3cpLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCA6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMyBib3ggc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIGJveFxuLy8gc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gYm94LXNoYWRvdyBwcm9wZXJ0eS5cbkBtaXhpbiBib3gtc2hhZG93KFxuICAkc2hhZG93LTEgOiBkZWZhdWx0LFxuICAkc2hhZG93LTIgOiBmYWxzZSxcbiAgJHNoYWRvdy0zIDogZmFsc2UsXG4gICRzaGFkb3ctNCA6IGZhbHNlLFxuICAkc2hhZG93LTUgOiBmYWxzZSxcbiAgJHNoYWRvdy02IDogZmFsc2UsXG4gICRzaGFkb3ctNyA6IGZhbHNlLFxuICAkc2hhZG93LTggOiBmYWxzZSxcbiAgJHNoYWRvdy05IDogZmFsc2UsXG4gICRzaGFkb3ctMTA6IGZhbHNlXG4pIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTEgOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoaWYoJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCwgaW5zZXQsIGZhbHNlKSwgJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLCAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCwgJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcikpO1xuICB9XG4gICRzaGFkb3cgOiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LCAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNoYWRvdywgJHNoYWRvdyxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIGJveCBzaGFkb3cgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzLlxuLy8gSW5jbHVkZXMgZGVmYXVsdCBhcmd1bWVudHMgZm9yIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIgbGVuZ3RoLCBzcHJlYWQgbGVuZ3RoLCBjb2xvciBhbmQgaW5zZXQuXG5AbWl4aW4gc2luZ2xlLWJveC1zaGFkb3coXG4gICRob2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LFxuICAkdm9mZiAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCxcbiAgJGJsdXIgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cixcbiAgJHNwcmVhZCA6ICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLFxuICAkY29sb3IgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcixcbiAgJGluc2V0ICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXRcbikge1xuICBAaWYgbm90ICgkaW5zZXQgPT0gdHJ1ZSBvciAkaW5zZXQgPT0gZmFsc2Ugb3IgJGluc2V0ID09IGluc2V0KSB7XG4gICAgQHdhcm4gXCIkaW5zZXQgZXhwZWN0ZWQgdG8gYmUgdHJ1ZSBvciB0aGUgaW5zZXQga2V5d29yZC4gR290ICN7JGluc2V0fSBpbnN0ZWFkLiBVc2luZzogaW5zZXRcIjtcbiAgfVxuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfSBAZWxzZSB7XG4gICAgJGZ1bGwgICA6ICRob2ZmICR2b2ZmO1xuICAgIEBpZiAkYmx1ciAgIHsgJGZ1bGw6ICRmdWxsICRibHVyOyAgIH1cbiAgICBAaWYgJHNwcmVhZCB7ICRmdWxsOiAkZnVsbCAkc3ByZWFkOyB9XG4gICAgQGlmICRjb2xvciAgeyAkZnVsbDogJGZ1bGwgJGNvbG9yOyAgfVxuICAgIEBpZiAkaW5zZXQgIHsgJGZ1bGw6IGluc2V0ICRmdWxsOyAgIH1cbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmdWxsKTtcbiAgfVxufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGluIHlvdXIgcHJvamVjdFxuXG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcjogICAgI2FhYSAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0OiAwcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyOiAgICAgMXB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZDogICBmYWxzZSAgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgdGV4dCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gdGV4dC1zaGFkb3cgcHJvcGVydHkuXG4vL1xuLy8gTm90ZTogaWYgYW55IHNoYWRvdyBoYXMgYSBzcHJlYWQgcGFyYW1ldGVyLCB0aGlzIHdpbGwgY2F1c2UgdGhlIG1peGluXG4vLyB0byBlbWl0IHRoZSBzaGFkb3cgZGVjbGFyYXRpb24gdHdpY2UsIGZpcnN0IHdpdGhvdXQgdGhlIHNwcmVhZCxcbi8vIHRoZW4gd2l0aCB0aGUgc3ByZWFkIGluY2x1ZGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJvZ3Jlc3NpdmVseVxuLy8gZW5oYW5jZSB0aGUgYnJvd3NlcnMgdGhhdCBkbyBzdXBwb3J0IHRoZSBzcHJlYWQgcGFyYW1ldGVyLlxuQG1peGluIHRleHQtc2hhZG93KFxuICAkc2hhZG93LTEgOiBkZWZhdWx0LFxuICAkc2hhZG93LTIgOiBmYWxzZSxcbiAgJHNoYWRvdy0zIDogZmFsc2UsXG4gICRzaGFkb3ctNCA6IGZhbHNlLFxuICAkc2hhZG93LTUgOiBmYWxzZSxcbiAgJHNoYWRvdy02IDogZmFsc2UsXG4gICRzaGFkb3ctNyA6IGZhbHNlLFxuICAkc2hhZG93LTggOiBmYWxzZSxcbiAgJHNoYWRvdy05IDogZmFsc2UsXG4gICRzaGFkb3ctMTA6IGZhbHNlXG4pIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IGNvbXBhY3QoJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IpO1xuICB9XG4gICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBqb2luKCgpLCgpLGNvbW1hKTtcbiAgJHNoYWRvd3M6IGpvaW4oKCksKCksY29tbWEpO1xuICAkaGFzLXNwcmVhZDogZmFsc2U7XG4gIEBlYWNoICRzaGFkb3cgaW4gY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCkge1xuICAgIEBpZiBsZW5ndGgoJHNoYWRvdykgPiA0IHtcbiAgICAgICRoYXMtc3ByZWFkOiB0cnVlO1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgbnRoKCRzaGFkb3csMSkgbnRoKCRzaGFkb3csMikgbnRoKCRzaGFkb3csMykgbnRoKCRzaGFkb3csNSkpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsICRzaGFkb3cpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfVxuICB9XG4gIEBpZiAkaGFzLXNwcmVhZCB7XG4gICAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkO1xuICB9XG4gIHRleHQtc2hhZG93OiAkc2hhZG93cztcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgdGV4dCBzaGFkb3cuXG4vL1xuLy8gUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBjb2xvciwgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciwgYW5kIHNwcmVhZFxuLy8gYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGFib3ZlLlxuQG1peGluIHNpbmdsZS10ZXh0LXNoYWRvdyhcbiAgJGhvZmY6IGZhbHNlLFxuICAkdm9mZjogZmFsc2UsXG4gICRibHVyOiBmYWxzZSxcbiAgJHNwcmVhZDogZmFsc2UsXG4gICRjb2xvcjogZmFsc2Vcbikge1xuICAvLyBBIGxvdCBvZiBwZW9wbGUgdGhpbmsgdGhlIGNvbG9yIGNvbWVzIGZpcnN0LiBJdCBkb2Vzbid0LlxuICBAaWYgdHlwZS1vZigkaG9mZikgPT0gY29sb3Ige1xuICAgICR0ZW1wLWNvbG9yOiAkaG9mZjtcbiAgICAkaG9mZjogJHZvZmY7XG4gICAgJHZvZmY6ICRibHVyO1xuICAgICRibHVyOiAkc3ByZWFkO1xuICAgICRzcHJlYWQ6ICRjb2xvcjtcbiAgICAkY29sb3I6ICR0ZW1wLWNvbG9yO1xuICB9XG4gIC8vIENhbid0IHJlbHkgb24gZGVmYXVsdCBhc3NpZ25tZW50IHdpdGggbXVsdGlwbGUgc3VwcG9ydGVkIGFyZ3VtZW50IG9yZGVycy5cbiAgJGhvZmY6ICAgaWYoJGhvZmYsICAgJGhvZmYsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQpO1xuICAkdm9mZjogICBpZigkdm9mZiwgICAkdm9mZiwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCk7XG4gICRibHVyOiAgIGlmKCRibHVyLCAgICRibHVyLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgICAgKTtcbiAgJHNwcmVhZDogaWYoJHNwcmVhZCwgJHNwcmVhZCwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICApO1xuICAkY29sb3I6ICBpZigkY29sb3IsICAkY29sb3IsICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvciAgICk7XG4gIC8vIFdlIGRvbid0IG5lZWQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoaXMgcHJvcGVydHkuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSBvciAkaG9mZiA9PSBub25lIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhub25lKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3coY29tcGFjdCgkaG9mZiAkdm9mZiAkYmx1ciAkc3ByZWFkICRjb2xvcikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNwZWNpZnkgdGhlIHNob3J0aGFuZCBgY29sdW1uc2AgcHJvcGVydHkuXG4vL1xuLy8gRXhhbXBsZTpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1ucygyMGVtIDIpXG5AbWl4aW4gY29sdW1ucygkd2lkdGgtYW5kLWNvdW50KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW5zLCAkd2lkdGgtYW5kLWNvdW50LFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1uc1xuQG1peGluIGNvbHVtbi1jb3VudCgkY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1jb3VudCwgJGNvdW50LFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBnYXAgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYDIwcHhgXG5AbWl4aW4gY29sdW1uLWdhcCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1nYXAsICR3aWR0aCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgd2lkdGggb2YgY29sdW1ucyBlLmcuIGAxMDBweGBcbkBtaXhpbiBjb2x1bW4td2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4td2lkdGgsICR3aWR0aCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgd2lkdGggb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYDFweGBcbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIHN0eWxlIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGBkb3R0ZWRgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1zdHlsZS5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLXN0eWxlLCB1bnF1b3RlKCRzdHlsZSksXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIGNvbG9yIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGBibHVlYC5cbi8vIFRoaXMgd29ya3MgbGlrZSBib3JkZXItY29sb3IuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBlbmNvbXBhc3NpbmcgYWxsIGNvbHVtbiBydWxlIHByb3BlcnRpZXNcbi8vIEZvciBleGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHgsIHNvbGlkLCAjYzAwKVxuLy9cbi8vIE9yIHRoZSB2YWx1ZXMgY2FuIGJlIHNwYWNlIHNlcGFyYXRlZDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1uLXJ1bGUoMXB4IHNvbGlkICNjMDApXG5AbWl4aW4gY29sdW1uLXJ1bGUoJHdpZHRoLCAkc3R5bGU6IGZhbHNlLCAkY29sb3I6IGZhbHNlKSB7XG4gICRmdWxsIDogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KCR3aWR0aCwgJHN0eWxlLCAkY29sb3IpKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLCAkZnVsbCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWJlZm9yZVxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1iZWZvcmUoYWx3YXlzKTt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczogXG4vL1xuLy8gIGgyLmJlZm9yZSB7ICAgIFxuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuQG1peGluIGNvbHVtbi1icmVhay1iZWZvcmUoJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstYmVmb3JlLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYWZ0ZXJcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6IFxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhay1hZnRlcihhbHdheXMpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczogXG4vL1xuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuQG1peGluIGNvbHVtbi1icmVhay1hZnRlcigkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1hZnRlciwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWluc2lkZVxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhdm9pZCwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6IFxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstaW5zaWRlKCk7fVxuLy8gIFdoaWNoIGdlbmVyYXRlczogXG4vLyAgXG4vLyAgaDIuaW5zaWRlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcbi8vICAgIGNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87fVxuQG1peGluIGNvbHVtbi1icmVhay1pbnNpZGUoJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstaW5zaWRlLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufVxuXG4vLyBBbGwtcHVycG9zZSBtaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4gYnJlYWtzLlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGJlZm9yZSwgYWZ0ZXIsIGluc2lkZSBcbi8vICogbGVnYWwgdmFsdWVzIGZvciAnJHZhbHVlJyBhcmUgZGVwZW5kZW50IG9uICR0eXBlXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBiZWZvcmUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBhZnRlciwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGluc2lkZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhdm9pZCwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgXG4vLyAgRXhhbXBsZXM6IFxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoYmVmb3JlLCBhbHdheXMpO31cbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoYWZ0ZXIsIGFsd2F5cyk7IH1cbi8vICAgIGgyLmluc2lkZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGluc2lkZSk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vICBoMi5iZWZvcmUgeyAgICBcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO31cbi8vICBcbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbi8vXG4vLyAgaDIuaW5zaWRlIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcbi8vICAgIGNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87fVxuIFxuQG1peGluIGNvbHVtbi1icmVhaygkdHlwZTogYmVmb3JlLCAkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiY29sdW1uLWJyZWFrLSN7JHR5cGV9XCIsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGJveCBtb2RlbCBmb3IgTW96aWxsYSwgV2Via2l0LCBJRTggYW5kIHRoZSBmdXR1cmVcbi8vXG4vLyBAcGFyYW0gJGJzXG4vLyAgIFsgY29udGVudC1ib3ggfCBib3JkZXItYm94IF1cblxuQG1peGluIGJveC1zaXppbmcoJGJzKSB7XG4gICRiczogdW5xdW90ZSgkYnMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNpemluZywgJGJzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gZGlzcGxheTpib3g7IG11c3QgYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBvdGhlciBmbGV4Ym94IG1peGlucyB0byB3b3JrIHByb3Blcmx5XG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgYm94LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94IG9yaWVudGF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyBsZXNzIGJsb2NrLWxpa2VcbiRkZWZhdWx0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWRlZmF1bHQ7XG5cbi8vIEJveCBvcmllbnRhdGlvbiBbIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQgXVxuQG1peGluIGJveC1vcmllbnQoXG4gICRvcmllbnRhdGlvbjogJGRlZmF1bHQtYm94LW9yaWVudFxuKSB7XG4gICRvcmllbnRhdGlvbiA6IHVucXVvdGUoJG9yaWVudGF0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmllbnQsICRvcmllbnRhdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveC1hbGlnblxuJGRlZmF1bHQtYm94LWFsaWduOiBzdHJldGNoICFkZWZhdWx0O1xuXG4vLyBCb3ggYWxpZ24gWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaCBdXG5AbWl4aW4gYm94LWFsaWduKFxuICAkYWxpZ25tZW50OiAkZGVmYXVsdC1ib3gtYWxpZ25cbikge1xuICAkYWxpZ25tZW50IDogdW5xdW90ZSgkYWxpZ25tZW50KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1hbGlnbiwgJGFsaWdubWVudCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveCBmbGV4XG4kZGVmYXVsdC1ib3gtZmxleDogMCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBib3ggZmxleC4gQXBwbHkgdGhpcyB0byB0aGUgY2hpbGRyZW4gaW5zaWRlIHRoZSBib3guXG4vL1xuLy8gRm9yIGV4YW1wbGU6IFwiZGl2LmRpc3BsYXktYm94ID4gZGl2LmNoaWxkLWJveFwiIHdvdWxkIGdldCB0aGUgYm94IGZsZXggbWl4aW4uXG5AbWl4aW4gYm94LWZsZXgoXG4gICRmbGV4OiAkZGVmYXVsdC1ib3gtZmxleFxuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleCwgJGZsZXgsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBmbGV4IGdyb3VwXG4kZGVmYXVsdC1ib3gtZmxleC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBmbGV4aWJsZSBncm91cGluZ1xuQG1peGluIGJveC1mbGV4LWdyb3VwKFxuICAkZ3JvdXA6ICRkZWZhdWx0LWJveC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3Igb3JkaW5hbCBncm91cFxuJGRlZmF1bHQtYm94LW9yZGluYWwtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3Igb3JkaW5hbCBncm91cGluZyBhbmQgcmVhcnJhbmdpbmcgdGhlIG9yZGVyXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoXG4gICRncm91cDogJGRlZmF1bHQtb3JkaW5hbC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmRpbmFsLWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQm94IGRpcmVjdGlvbiBkZWZhdWx0IHZhbHVlXG4kZGVmYXVsdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3gtZGlyZWN0aW9uIFsgbm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQgXVxuQG1peGluIGJveC1kaXJlY3Rpb24oXG4gICRkaXJlY3Rpb246ICRkZWZhdWx0LWJveC1kaXJlY3Rpb25cbikge1xuICAkZGlyZWN0aW9uOiB1bnF1b3RlKCRkaXJlY3Rpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBib3ggbGluZXNcbiRkZWZhdWx0LWJveC1saW5lczogc2luZ2xlICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IGxpbmVzIFsgc2luZ2xlIHwgbXVsdGlwbGUgXVxuQG1peGluIGJveC1saW5lcyhcbiAgJGxpbmVzOiAkZGVmYXVsdC1ib3gtbGluZXNcbikge1xuICAkbGluZXM6IHVucXVvdGUoJGxpbmVzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1saW5lcywgJGxpbmVzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBwYWNrXG4kZGVmYXVsdC1ib3gtcGFjazogc3RhcnQgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggcGFjayBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSBdXG5AbWl4aW4gYm94LXBhY2soXG4gICRwYWNrOiAkZGVmYXVsdC1ib3gtcGFja1xuKSB7XG4gICRwYWNrOiB1bnF1b3RlKCRwYWNrKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1wYWNrLCAkcGFjayxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufSIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYHBhZGRpbmctYm94YCAtLSB0aGUgYm94IG1vZGVsIHVzZWQgYnkgbW9kZXJuIGJyb3dzZXJzLlxuLy9cbi8vIElmIHlvdSB3aXNoIHRvIGRvIHNvLCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbnN0YW50IHdpdGggYGJvcmRlci1ib3hgXG4vL1xuLy8gVG8gb3ZlcnJpZGUgdG8gdGhlIGRlZmF1bHQgYm9yZGVyLWJveCBtb2RlbCwgdXNlIHRoaXMgY29kZTpcbi8vICAgICAkZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3hcblxuJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveCAhZGVmYXVsdDtcblxuLy8gQ2xpcCB0aGUgYmFja2dyb3VuZCAoaW1hZ2UgYW5kIGNvbG9yKSBhdCB0aGUgZWRnZSBvZiB0aGUgcGFkZGluZyBvciBib3JkZXIuXG4vL1xuLy8gTGVnYWwgVmFsdWVzOlxuLy9cbi8vICAgKiBwYWRkaW5nLWJveFxuLy8gICAqIGJvcmRlci1ib3hcbi8vICAgKiB0ZXh0XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLWNsaXAoJGNsaXA6ICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcCkge1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nXVxuICAkY2xpcDogdW5xdW90ZSgkY2xpcCk7XG4gICRkZXByZWNhdGVkOiAkY2xpcDtcbiAgQGlmICRjbGlwID09IHBhZGRpbmctYm94IHsgJGRlcHJlY2F0ZWQ6IHBhZGRpbmc7IH1cbiAgQGlmICRjbGlwID09IGJvcmRlci1ib3ggeyAkZGVwcmVjYXRlZDogYm9yZGVyOyB9XG4gIC8vIFN1cHBvcnQgZm9yIHdlYmtpdCBhbmQgbW96aWxsYSdzIHVzZSBvZiB0aGUgZGVwcmVjYXRlZCBzaG9ydCBmb3JtXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRkZXByZWNhdGVkLFxuICAgIC1tb3osXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdCBvZmZpY2lhbFxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1jbGlwLCAkY2xpcCxcbiAgICBub3QoLW1veiksXG4gICAgbm90KC13ZWJraXQpLFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG59XG4iLCIvLyBPdmVycmlkZSBgJGRlZmF1bHQtYmFja2dyb3VuZC1vcmlnaW5gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbjogY29udGVudC1ib3ggIWRlZmF1bHQ7XG5cbi8vIFBvc2l0aW9uIHRoZSBiYWNrZ3JvdW5kIG9mZiB0aGUgZWRnZSBvZiB0aGUgcGFkZGluZywgYm9yZGVyIG9yIGNvbnRlbnRcbi8vXG4vLyAqIFBvc3NpYmxlIHZhbHVlczpcbi8vICAgKiBgcGFkZGluZy1ib3hgXG4vLyAgICogYGJvcmRlci1ib3hgXG4vLyAgICogYGNvbnRlbnQtYm94YFxuLy8gKiBicm93c2VyIGRlZmF1bHRzIHRvIGBwYWRkaW5nLWJveGBcbi8vICogbWl4aW4gZGVmYXVsdHMgdG8gYGNvbnRlbnQtYm94YFxuXG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCRvcmlnaW4pO1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudF1cbiAgJGRlcHJlY2F0ZWQ6ICRvcmlnaW47XG4gIEBpZiAkb3JpZ2luID09IHBhZGRpbmctYm94IHsgJGRlcHJlY2F0ZWQ6IHBhZGRpbmc7IH1cbiAgQGlmICRvcmlnaW4gPT0gYm9yZGVyLWJveCAgeyAkZGVwcmVjYXRlZDogYm9yZGVyOyAgfVxuICBAaWYgJG9yaWdpbiA9PSBjb250ZW50LWJveCB7ICRkZXByZWNhdGVkOiBjb250ZW50OyB9XG5cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkZGVwcmVjYXRlZCxcbiAgICAtbW96LFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qgb2ZmaWNpYWxcbiAgKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkb3JpZ2luLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgLW8sXG4gICAgLW1zLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIEBmb250LWZhY2UuIFN1cHBvcnRzIElFLCBHZWNrbywgV2Via2l0LCBPcGVyYS5cbi8vXG4vLyAqICRuYW1lIGlzIHJlcXVpcmVkLCBhcmJpdHJhcnksIGFuZCB3aGF0IHlvdSB3aWxsIHVzZSBpbiBmb250IHN0YWNrcy5cbi8vICogJGZvbnQtZmlsZXMgaXMgcmVxdWlyZWQgdXNpbmcgZm9udC1maWxlcygncmVsYXRpdmUvbG9jYXRpb24nLCAnZm9ybWF0JykuXG4vLyAgIGZvciBiZXN0IHJlc3VsdHMgdXNlIHRoaXMgb3JkZXI6IHdvZmYsIG9wZW50eXBlL3RydWV0eXBlLCBzdmdcbi8vICogJGVvdCBpcyByZXF1aXJlZCBieSBJRSwgYW5kIGlzIGEgcmVsYXRpdmUgbG9jYXRpb24gb2YgdGhlIGVvdCBmaWxlLlxuLy8gKiAkd2VpZ2h0IHNob3dzIGlmIHRoZSBmb250IGlzIGJvbGQsIGRlZmF1bHRzIHRvIG5vcm1hbFxuLy8gKiAkc3R5bGUgZGVmYXVsdHMgdG8gbm9ybWFsLCBtaWdodCBiZSBhbHNvIGl0YWxpY1xuLy8gKiBGb3IgYW5kcm9pZCAyLjIgQ29tcGF0aWJsaXR5LCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciB3ZWIgcGFnZSBoYXNcbi8vICAgYSBtZXRhIHZpZXdwb3J0IHRhZy5cbi8vICogVG8gc3VwcG9ydCBpT1MgPCA0LjIsIGFuIFNWRyBmaWxlIG11c3QgYmUgcHJvdmlkZWRcbi8vXG4vLyBJZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBvdGhlciBmb3JtYXRzIGNoZWNrIG91dCB0aGUgRm9udCBTcXVpcnJlbFxuLy8gW2ZvbnQgZ2VuZXJhdG9yXShodHRwOi8vd3d3LmZvbnRzcXVpcnJlbC5jb20vZm9udGZhY2UvZ2VuZXJhdG9yKVxuLy9cblxuLy8gSW4gb3JkZXIgdG8gcmVmZXIgdG8gYSBzcGVjaWZpYyBzdHlsZSBvZiB0aGUgZm9udCBpbiB5b3VyIHN0eWxlc2hlZXRzIGFzIFxuLy8gZS5nLiBcImZvbnQtc3R5bGU6IGl0YWxpYztcIiwgIHlvdSBtYXkgYWRkIGEgY291cGxlIG9mIEBmb250LWZhY2UgaW5jbHVkZXNcbi8vIGNvbnRhaW5pbmcgdGhlIHJlc3BlY3RpdmUgZm9udCBmaWxlcyBmb3IgZWFjaCBzdHlsZSBhbmQgc3BlY3lpbmdcbi8vIHJlc3BlY3RpdmUgdGhlICRzdHlsZSBwYXJhbWV0ZXIuXG5cbi8vIE9yZGVyIG9mIHRoZSBpbmNsdWRlcyBtYXR0ZXJzLCBhbmQgaXQgaXM6IG5vcm1hbCwgYm9sZCwgaXRhbGljLCBib2xkK2l0YWxpYy5cblxuQG1peGluIGZvbnQtZmFjZShcbiAgJG5hbWUsIFxuICAkZm9udC1maWxlcywgXG4gICRlb3Q6IGZhbHNlLFxuICAkd2VpZ2h0OiBmYWxzZSxcbiAgJHN0eWxlOiBmYWxzZVxuKSB7XG4gICRpZWZvbnQ6IHVucXVvdGUoXCIjeyRlb3R9PyNpZWZpeFwiKTtcbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IHF1b3RlKCRuYW1lKTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCRlb3QpO1xuICAgICAgJGZvbnQtZmlsZXM6IGZvbnQtdXJsKCRpZWZvbnQpIHVucXVvdGUoXCJmb3JtYXQoJ2VvdCcpXCIpLCAkZm9udC1maWxlczsgXG4gICAgfVxuICAgIHNyYzogJGZvbnQtZmlsZXM7XG4gICAgQGlmICR3ZWlnaHQge1xuICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgfVxuICAgIEBpZiAkc3R5bGUge1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBAZG9jIG9mZlxuLy8gTm90ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTYWZhcmksIENocm9tZSwgYW5kIEZpcmVmb3ggYWxsIHN1cHBvcnQgM0QgdHJhbnNmb3Jtcy4gSG93ZXZlcixcbi8vIG9ubHkgaW4gdGhlIG1vc3QgcmVjZW50IGJ1aWxkcy4gWW91IHNob3VsZCBhbHNvIHByb3ZpZGUgZmFsbGJhY2sgMmQgc3VwcG9ydCBmb3Jcbi8vIE9wZXJhIGFuZCBJRS4gSUUxMCBpcyBzbGF0ZWQgdG8gaGF2ZSAzZCBlbmFibGVkLCBidXQgaXMgY3VycmVudGx5IHVucmVsZWFzZWQuXG4vLyBUbyBtYWtlIHRoYXQgZWFzeSwgYWxsIDJEIHRyYW5zZm9ybXMgaW5jbHVkZSBhbiBicm93c2VyLXRhcmdldGluZyB0b2dnbGUgKCRvbmx5M2QpXG4vLyB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgdHdvIHN1cHBvcnQgbGlzdHMuIFRoZSB0b2dnbGUgZGVmYXVsdHMgdG8gJ2ZhbHNlJyAoMkQpLFxuLy8gYW5kIGFsc28gYWNjZXB0cyAndHJ1ZScgKDNEKS4gQ3VycmVudGx5IHRoZSBsaXN0cyBhcmUgYXMgZm9sbG93czpcbi8vIDJEOiBNb3ppbGxhLCBXZWJraXQsIE9wZXJhLCBPZmZpY2lhbFxuLy8gM0Q6IFdlYmtpdCwgRmlyZWZveC5cblxuLy8gQXZhaWxhYmxlIFRyYW5zZm9ybXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFNjYWxlICgyZCBhbmQgM2QpXG4vLyAtIFJvdGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBUcmFuc2xhdGUgKDJkIGFuZCAzZClcbi8vIC0gU2tldyAoMmQgb25seSlcblxuLy8gVHJhbnNmb3JtIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFRyYW5zZm9ybSBPcmlnaW4gKDJkIGFuZCAzZClcbi8vIC0gUGVyc3BlY3RpdmUgKDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSBPcmlnaW4gKDNkKVxuLy8gLSBUcmFuc2Zvcm0gU3R5bGUgKDNkKVxuLy8gLSBCYWNrZmFjZSBWaXNpYmlsaXR5ICgzZClcblxuLy8gTWl4aW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB0cmFuc2Zvcm0tb3JpZ2luXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0tb3JpZ2luMmQsIHRyYW5zZm9ybS1vcmlnaW4zZFxuLy8gIC0gaGVscGVyczogICAgYXBwbHktb3JpZ2luXG4vLyB0cmFuc2Zvcm1cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybTJkLCB0cmFuc2Zvcm0zZFxuLy8gIC0gaGVscGVyczogICAgc2ltcGxlLXRyYW5zZm9ybSwgY3JlYXRlLXRyYW5zZm9ybVxuLy8gcGVyc3BlY3RpdmVcbi8vICAtIGhlbHBlcnM6ICAgIHBlcnNwZWN0aXZlLW9yaWdpblxuLy8gdHJhbnNmb3JtLXN0eWxlXG4vLyBiYWNrZmFjZS12aXNpYmlsaXR5XG4vLyBzY2FsZVxuLy8gIC0gc2hvcnRjdXRzOiAgc2NhbGVYLCBzY2FsZVksIHNjYWxlWiwgc2NhbGUzZFxuLy8gcm90YXRlXG4vLyAgLSBzaG9ydGN1dHM6ICByb3RhdGVYLCByb3RhdGVZLCByb3RhdGUzZFxuLy8gdHJhbnNsYXRlXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaLCB0cmFuc2xhdGUzZFxuLy8gc2tld1xuLy8gIC0gc2hvcnRjdXRzOiAgc2tld1gsIHNrZXdZXG5cbi8vIERlZmF1bHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBUaGUgZGVmYXVsdCB4LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXggICAgOiA1MCUgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXkgICAgOiA1MCUgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LW9yaWdpbiBmb3IgdHJhbnNmb3Jtc1xuJGRlZmF1bHQtb3JpZ2luLXogICAgOiA1MCUgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS14ICAgICA6IDEuMjUgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteSAgICAgOiAkZGVmYXVsdC1zY2FsZS14ICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXogICAgIDogJGRlZmF1bHQtc2NhbGUteCAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IGFuZ2xlIGZvciByb3RhdGlvbnNcbiRkZWZhdWx0LXJvdGF0ZSAgICAgIDogNDVkZWcgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci14ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXkgICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteiAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteCA6IDFlbSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS15IDogJGRlZmF1bHQtdHJhbnNsYXRlLXggICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXogOiAkZGVmYXVsdC10cmFuc2xhdGUteCAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy14ICAgICAgOiA1ZGVnICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXkgICAgICA6IDVkZWcgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyAqKlRyYW5zZm9ybS1vcmlnaW4qKlxuLy8gVHJhbnNmb3JtLW9yaWdpbiBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nXG4vL1xuLy8gICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbiggb3JpZ2luIFssIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgJ29yaWdpbicgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBjb250YWluaW5nIDEtMyAoeC95L3opIGNvb3JkaW5hdGVzXG4vLyBpbiBwZXJjZW50YWdlcywgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSBvciByZWxhdGl2ZVxuLy8gKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgY2VudGVyKSB1bml0c1xuLy9cbi8vIEBwYXJhbSBvbmx5M2QgU2V0IHRoaXMgdG8gdHJ1ZSB0byBvbmx5IGFwcGx5IHRoaXNcbi8vIG1peGluIHdoZXJlIGJyb3dzZXJzIGhhdmUgM0Qgc3VwcG9ydC5cbkBtaXhpbiBhcHBseS1vcmlnaW4oJG9yaWdpbiwgJG9ubHkzZCkge1xuICAkb25seTNkOiAkb25seTNkIG9yIC1jb21wYXNzLWxpc3Qtc2l6ZSgtY29tcGFzcy1saXN0KCRvcmlnaW4pKSA+IDI7XG4gIEBpZiAkb25seTNkIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLW9yaWdpbiwgJG9yaWdpbixcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgaW5kaXZpZHVhbCBhcmd1bWVudHM6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oIFsgb3JpZ2luLXgsIG9yaWdpbi15LCBvcmlnaW4teiwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgMyAnb3JpZ2luLScgYXJndW1lbnRzIHJlcHJlc2VudCB4L3kveiBjb29yZGluYXRlcy5cbi8vXG4vLyAqKk5PVEU6Kiogc2V0dGluZyB6IGNvb3JkaW5hdGVzIHRyaWdnZXJzIDNEIHN1cHBvcnQgbGlzdCwgbGVhdmUgZmFsc2UgZm9yIDJEIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKFxuICAkb3JpZ2luLXg6ICRkZWZhdWx0LW9yaWdpbi14LFxuICAkb3JpZ2luLXk6ICRkZWZhdWx0LW9yaWdpbi15LFxuICAkb3JpZ2luLXo6IGZhbHNlLFxuICAkb25seTNkOiAgIGlmKCRvcmlnaW4teiwgdHJ1ZSwgZmFsc2UpXG4pIHtcbiAgJG9yaWdpbjogdW5xdW90ZSgnJyk7XG4gIEBpZiAkb3JpZ2luLXggb3IgJG9yaWdpbi15IG9yICRvcmlnaW4teiB7XG4gICAgQGlmICRvcmlnaW4teCB7ICRvcmlnaW46ICRvcmlnaW4teDsgfSBAZWxzZSB7ICRvcmlnaW46IDUwJTsgfVxuICAgIEBpZiAkb3JpZ2luLXkgeyAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4teTsgfSBAZWxzZSB7IEBpZiAkb3JpZ2luLXogeyAkb3JpZ2luOiAkb3JpZ2luIDUwJTsgfX1cbiAgICBAaWYgJG9yaWdpbi16IHsgJG9yaWdpbjogJG9yaWdpbiAkb3JpZ2luLXo7IH1cbiAgICBAaW5jbHVkZSBhcHBseS1vcmlnaW4oJG9yaWdpbiwgJG9ubHkzZCk7XG4gIH1cbn1cblxuXG4vLyBUcmFuc2Zvcm0gc2VudCBhcyBhIGNvbXBsZXRlIHN0cmluZzpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKCB0cmFuc2Zvcm1zIFssIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgJ3RyYW5zZm9ybXMnIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIHRoZSB0cmFuc2Zvcm1zIHRvIGJlIGFwcGxpZWQuXG5AbWl4aW4gdHJhbnNmb3JtKFxuICAkdHJhbnNmb3JtLFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gIEBpZiAkb25seTNkIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSxcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gU2hvcnRjdXQgdG8gdGFyZ2V0IGFsbCBicm93c2VycyB3aXRoIDJEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtMmQoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIGZhbHNlKTtcbn1cblxuLy8gU2hvcnRjdXQgdG8gdGFyZ2V0IG9ubHkgYnJvd3NlcnMgd2l0aCAzRCB0cmFuc2Zvcm0gc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybTNkKCR0cmFucykge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCB0cnVlKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIDNEIFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTZXQgdGhlIHBlcnNwZWN0aXZlIG9mIDNEIHRyYW5zZm9ybXMgb24gdGhlIGNoaWxkcmVuIG9mIGFuIGVsZW1lbnQ6XG4vL1xuLy8gICAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSggcGVyc3BlY3RpdmUgKVxuLy9cbi8vIHdoZXJlICdwZXJzcGVjdGl2ZScgaXMgYSB1bml0bGVzcyBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSBkZXB0aCBvZiB0aGVcbi8vIHotYXhpcy4gVGhlIGhpZ2hlciB0aGUgcGVyc3BlY3RpdmUsIHRoZSBtb3JlIGV4YWdnZXJhdGVkIHRoZSBmb3Jlc2hvcnRlbmluZy5cbi8vIHZhbHVlcyBmcm9tIDUwMCB0byAxMDAwIGFyZSBtb3JlLW9yLWxlc3MgXCJub3JtYWxcIiAtIGEgZ29vZCBzdGFydGluZy1wb2ludC5cbkBtaXhpbiBwZXJzcGVjdGl2ZSgkcCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwocGVyc3BlY3RpdmUsICRwLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTZXQgdGhlIG9yaWdpbiBwb3NpdGlvbiBmb3IgdGhlIHBlcnNwZWN0aXZlXG4vL1xuLy8gICAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZS1vcmlnaW4ob3JpZ2luLXggW29yaWdpbi15XSlcbi8vXG4vLyB3aGVyZSB0aGUgdHdvIGFyZ3VtZW50cyByZXByZXNlbnQgeC95IGNvb3JkaW5hdGVzXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCRvcmlnaW46IDUwJSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwocGVyc3BlY3RpdmUtb3JpZ2luLCAkb3JpZ2luLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZXRlcm1pbmUgd2hldGhlciBhIDNEIG9iamVjdHMgY2hpbGRyZW4gYWxzbyBsaXZlIGluIHRoZSBnaXZlbiAzRCBzcGFjZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKCBbIHN0eWxlIF0gKVxuLy9cbi8vIHdoZXJlIGBzdHlsZWAgY2FuIGJlIGVpdGhlciBgZmxhdGAgb3IgYHByZXNlcnZlLTNkYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gYGZsYXRgLCBtaXhpbiBkZWZhdWx0cyB0byBgcHJlc2VydmUtM2RgLlxuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGU6IHByZXNlcnZlLTNkKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVsZW1lbnQgd2hlbiBpdCdzIGJhY2sgaXMgdHVybmVkXG4vL1xuLy8gICAgIEBpbmNsdWRlIGJhY2tmYWNlLXZpc2liaWxpdHkoIFsgdmlzaWJpbGl0eSBdIClcbi8vXG4vLyB3aGVyZSBgdmlzaWJpbGl0eWAgY2FuIGJlIGVpdGhlciBgdmlzaWJsZWAgb3IgYGhpZGRlbmAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIHZpc2libGUsIG1peGluIGRlZmF1bHRzIHRvIGhpZGRlblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHk6IGhpZGRlbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBUcmFuc2Zvcm0gUGFydGlhbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZXNlIHdvcmsgd2VsbCBvbiB0aGVpciBvd24sIGJ1dCB0aGV5IGRvbid0IGFkZCB0byBlYWNoIG90aGVyLCB0aGV5IG92ZXJyaWRlLlxuLy8gVXNlIGFsb25nIHdpdGggdHJhbnNmb3JtIHBhcmFtZXRlciBtaXhpbnMgdG8gYWRqdXN0IG9yaWdpbiwgcGVyc3BlY3RpdmUgYW5kIHN0eWxlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4vLyBTY2FsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGFuZCB5IGF4aXM6XG4vL1xuLy8gICAgICBAaW5jbHVkZSBzY2FsZSggWyBzY2FsZS14LCBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NjYWxlLScgYXJndW1lbnRzIGFyZSB1bml0bGVzcyBtdWx0aXBsaWVycyBvZiB0aGUgeCBhbmQgeSBkaW1lbnNpb25zXG4vLyBhbmQgcGVyc3BlY3RpdmUsIHdoaWNoIHdvcmtzIHRoZSBzYW1lIGFzIHRoZSBzdGFuZC1hbG9uZSBwZXJzcGVjdGl2ZSBwcm9wZXJ0eS9taXhpblxuLy8gYnV0IGFwcGxpZXMgdG8gdGhlIGluZGl2aWR1YWwgZWxlbWVudCAobXVsdGlwbGllZCB3aXRoIGFueSBwYXJlbnQgcGVyc3BlY3RpdmUpXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlKFxuICAkc2NhbGUteDogICAgICRkZWZhdWx0LXNjYWxlLXgsXG4gICRzY2FsZS15OiAgICAgJHNjYWxlLXgsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVYKCBbIHNjYWxlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVgoXG4gICRzY2FsZTogICAgICAgJGRlZmF1bHQtc2NhbGUteCxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGVYKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHkgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVZKCBbIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVkoXG4gICRzY2FsZTogICAgICAgJGRlZmF1bHQtc2NhbGUteSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGVZKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHogYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGVaKCBbIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZVooXG4gICRzY2FsZTogJGRlZmF1bHQtc2NhbGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGVaKCRzY2FsZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFNjYWxlIGFuZCBvYmplY3QgYWxvbmcgYWxsIHRocmVlIGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlM2QoIFsgc2NhbGUteCwgc2NhbGUteSwgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlM2QoXG4gICRzY2FsZS14OiAgICAgJGRlZmF1bHQtc2NhbGUteCxcbiAgJHNjYWxlLXk6ICAgICAkZGVmYXVsdC1zY2FsZS15LFxuICAkc2NhbGUtejogICAgICRkZWZhdWx0LXNjYWxlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBSb3RhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHogYXhpcyAgKDJEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlICdyb3RhdGlvbicgaXMgYW4gYW5nbGUgc2V0IGluIGRlZ3JlZXMgKGRlZykgb3IgcmFkaWFuIChyYWQpIHVuaXRzXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZShcbiAgJHJvdGF0ZTogICAgICAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZSgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIEEgbG9uZ2N1dCBmb3IgJ3JvdGF0ZScgaW4gY2FzZSB5b3UgZm9yZ2V0IHRoYXQgJ3onIGlzIGltcGxpZWRcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWihcbiAgJHJvdGF0ZTogICAgICAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICBAaW5jbHVkZSByb3RhdGUoJHJvdGF0ZSwgJHBlcnNwZWN0aXZlLCAkb25seTNkKTtcbn1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHggYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGVYKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWChcbiAgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGVYKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeSBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVkoXG4gICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlWSgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgYW4gYXJiaXRyYXJ5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHZlY3Rvci14LCB2ZWN0b3IteSwgdmVjdG9yLXosIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vIHdoZXJlIHRoZSAndmVjdG9yLScgYXJndW1lbnRzIGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLlxuLy8gVGhlc2UgbnVtYmVycyBhcmUgbm90IGltcG9ydGFudCBvbiB0aGVpciBvd24sIGJ1dCBpbiByZWxhdGlvbiB0byBvbmUgYW5vdGhlclxuLy8gY3JlYXRpbmcgYW4gYXhpcyBmcm9tIHlvdXIgdHJhbnNmb3JtLW9yaWdpbiwgYWxvbmcgdGhlIGF4aXMgb2YgWHggPSBZeSA9IFp6LlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGUzZChcbiAgJHZlY3Rvci14OiAkZGVmYXVsdC12ZWN0b3IteCxcbiAgJHZlY3Rvci15OiAkZGVmYXVsdC12ZWN0b3IteSxcbiAgJHZlY3Rvci16OiAkZGVmYXVsdC12ZWN0b3IteixcbiAgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGUzZCgkdmVjdG9yLXgsICR2ZWN0b3IteSwgJHZlY3Rvci16LCAkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBvciB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSB0aGUgJ3RyYW5zbGF0ZS0nIGFyZ3VtZW50cyBhY2NlcHQgYW55IGRpc3RhbmNlIGluIHBlcmNlbnRhZ2VzIG9yIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZShcbiAgJHRyYW5zbGF0ZS14OiAkZGVmYXVsdC10cmFuc2xhdGUteCxcbiAgJHRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWChcbiAgJHRyYW5zLXg6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteCxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWCgkdHJhbnMteCk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVkoXG4gICR0cmFucy15OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVkoJHRyYW5zLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHogYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVaKFxuICAkdHJhbnMtejogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVaKCR0cmFucy16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHgsIHkgYW5kIHogYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZTNkKFxuICAkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkdHJhbnNsYXRlLXo6ICRkZWZhdWx0LXRyYW5zbGF0ZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUzZCgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSwgJHRyYW5zbGF0ZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFNrZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTa2V3IGFuIGVsZW1lbnQ6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCBza2V3LXksIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlICdza2V3LScgYXJndW1lbnRzIGFjY2VwdCBjc3MgYW5nbGVzIGluIGRlZ3JlZXMgKGRlZykgb3IgcmFkaWFuIChyYWQpIHVuaXRzLlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3KFxuICAkc2tldy14OiAkZGVmYXVsdC1za2V3LXgsXG4gICRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNrZXcoJHNrZXcteCwgJHNrZXcteSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHggYXhpelxuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteCwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1goXG4gICRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNrZXdYKCRza2V3LXgpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB5IGF4aXNcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXksIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdZKFxuICAkc2tldy15OiAkZGVmYXVsdC1za2V3LXksXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBza2V3WSgkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cblxuLy8gRnVsbCB0cmFuc2Zvcm0gbWl4aW5zXG4vLyBGb3Igc2V0dGluZ3MgYW55IGNvbWJpbmF0aW9uIG9mIHRyYW5zZm9ybXMgYXMgYXJndW1lbnRzXG4vLyBUaGVzZSBhcmUgY29tcGxleCBhbmQgbm90IGhpZ2hseSByZWNvbW1lbmRlZCBmb3IgZGFpbHkgdXNlLiBUaGV5IGFyZSBtYWlubHlcbi8vIGhlcmUgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgcHVycG9zZXMuXG4vL1xuLy8gKiB0aGV5IGluY2x1ZGUgb3JpZ2luIGFkanVzdG1lbnRzXG4vLyAqIHNjYWxlIHRha2VzIGEgbXVsdGlwbGllciAodW5pdGxlc3MpLCByb3RhdGUgYW5kIHNrZXcgdGFrZSBkZWdyZWVzIChkZWcpXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIGNyZWF0ZS10cmFuc2Zvcm0oXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRzY2FsZS14OiAgICAgZmFsc2UsXG4gICRzY2FsZS15OiAgICAgZmFsc2UsXG4gICRzY2FsZS16OiAgICAgZmFsc2UsXG4gICRyb3RhdGUteDogICAgZmFsc2UsXG4gICRyb3RhdGUteTogICAgZmFsc2UsXG4gICRyb3RhdGUtejogICAgZmFsc2UsXG4gICRyb3RhdGUzZDogICAgZmFsc2UsXG4gICR0cmFucy14OiAgICAgZmFsc2UsXG4gICR0cmFucy15OiAgICAgZmFsc2UsXG4gICR0cmFucy16OiAgICAgZmFsc2UsXG4gICRza2V3LXg6ICAgICAgZmFsc2UsXG4gICRza2V3LXk6ICAgICAgZmFsc2UsXG4gICRvcmlnaW4teDogICAgZmFsc2UsXG4gICRvcmlnaW4teTogICAgZmFsc2UsXG4gICRvcmlnaW4tejogICAgZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHVucXVvdGUoXCJcIik7XG5cbiAgLy8gcGVyc3BlY3RpdmVcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSA7IH1cblxuICAvLyBzY2FsZVxuICBAaWYgJHNjYWxlLXggYW5kICRzY2FsZS15IHtcbiAgICBAaWYgJHNjYWxlLXogeyAkdHJhbnM6ICR0cmFucyBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopOyB9XG4gICAgQGVsc2UgeyAkdHJhbnM6ICR0cmFucyBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpOyB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAkc2NhbGUteCB7ICR0cmFuczogJHRyYW5zIHNjYWxlWCgkc2NhbGUteCk7IH1cbiAgICBAaWYgJHNjYWxlLXkgeyAkdHJhbnM6ICR0cmFucyBzY2FsZVkoJHNjYWxlLXkpOyB9XG4gICAgQGlmICRzY2FsZS16IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVaKCRzY2FsZS16KTsgfVxuICB9XG5cbiAgLy8gcm90YXRlXG4gIEBpZiAkcm90YXRlLXggeyAkdHJhbnM6ICR0cmFucyByb3RhdGVYKCRyb3RhdGUteCk7IH1cbiAgQGlmICRyb3RhdGUteSB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVkoJHJvdGF0ZS15KTsgfVxuICBAaWYgJHJvdGF0ZS16IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWigkcm90YXRlLXopOyB9XG4gIEBpZiAkcm90YXRlM2QgeyAkdHJhbnM6ICR0cmFucyByb3RhdGUzZCgkcm90YXRlM2QpOyB9XG5cbiAgLy8gdHJhbnNsYXRlXG4gIEBpZiAkdHJhbnMteCBhbmQgJHRyYW5zLXkge1xuICAgIEBpZiAkdHJhbnMteiB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZTNkKCR0cmFucy14LCAkdHJhbnMteSwgJHRyYW5zLXopOyB9XG4gICAgQGVsc2UgeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUoJHRyYW5zLXgsICR0cmFucy15KTsgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgJHRyYW5zLXggeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVYKCR0cmFucy14KTsgfVxuICAgIEBpZiAkdHJhbnMteSB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVkoJHRyYW5zLXkpOyB9XG4gICAgQGlmICR0cmFucy16IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWigkdHJhbnMteik7IH1cbiAgfVxuXG4gIC8vIHNrZXdcbiAgQGlmICRza2V3LXggYW5kICRza2V3LXkgeyAkdHJhbnM6ICR0cmFucyBza2V3KCRza2V3LXgsICRza2V3LXkpOyB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHNrZXcteCB7ICR0cmFuczogJHRyYW5zIHNrZXdYKCRza2V3LXgpOyB9XG4gICAgQGlmICRza2V3LXkgeyAkdHJhbnM6ICR0cmFucyBza2V3WSgkc2tldy15KTsgfVxuICB9XG5cbiAgLy8gYXBwbHkgaXQhXG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKCRvcmlnaW4teCwgJG9yaWdpbi15LCAkb3JpZ2luLXosICRvbmx5M2QpO1xufVxuXG5cbi8vIEEgc2ltcGxpZmllZCBzZXQgb2Ygb3B0aW9uc1xuLy8gYmFja3dhcmRzLWNvbXBhdGlibGUgd2l0aCB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgJ3RyYW5zZm9ybScgbWl4aW5cbkBtaXhpbiBzaW1wbGUtdHJhbnNmb3JtKFxuICAkc2NhbGU6ICAgIGZhbHNlLFxuICAkcm90YXRlOiAgIGZhbHNlLFxuICAkdHJhbnMteDogIGZhbHNlLFxuICAkdHJhbnMteTogIGZhbHNlLFxuICAkc2tldy14OiAgIGZhbHNlLFxuICAkc2tldy15OiAgIGZhbHNlLFxuICAkb3JpZ2luLXg6IGZhbHNlLFxuICAkb3JpZ2luLXk6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgY3JlYXRlLXRyYW5zZm9ybShcbiAgICBmYWxzZSxcbiAgICAkc2NhbGUsICRzY2FsZSwgZmFsc2UsXG4gICAgZmFsc2UsIGZhbHNlLCAkcm90YXRlLCBmYWxzZSxcbiAgICAkdHJhbnMteCwgJHRyYW5zLXksIGZhbHNlLFxuICAgICRza2V3LXgsICRza2V3LXksXG4gICAgJG9yaWdpbi14LCAkb3JpZ2luLXksIGZhbHNlLFxuICAgIGZhbHNlXG4gICk7XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENTUyBUcmFuc2l0aW9uc1xuLy8gQ3VycmVudGx5IG9ubHkgd29ya3MgaW4gV2Via2l0LlxuLy9cbi8vICogZXhwZWN0ZWQgaW4gQ1NTMywgRmlyZUZveCAzLjYvNyBhbmQgT3BlcmEgUHJlc3RvIDIuM1xuLy8gKiBXZSdsbCBiZSBwcmVwYXJlZC5cbi8vXG4vLyBJbmNsdWRpbmcgdGhpcyBzdWJtb2R1bGUgc2V0cyBmb2xsb3dpbmcgZGVmYXVsdHMgZm9yIHRoZSBtaXhpbnM6XG4vL1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBhbGxcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uIDogMXNcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uIDogZmFsc2Vcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5ICAgIDogZmFsc2Vcbi8vXG4vLyBPdmVycmlkZSB0aGVtIGlmIHlvdSBsaWtlLiBUaW1pbmctZnVuY3Rpb24gYW5kIGRlbGF5IGFyZSBzZXQgdG8gZmFsc2UgZm9yIGJyb3dzZXIgZGVmYXVsdHMgKGVhc2UsIDBzKS5cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxcyAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXk6IGZhbHNlICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzOiB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4gIWRlZmF1bHQ7XG5cbi8vIE9uZSBvciBtb3JlIHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvblxuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBhbHNvIGFjY2VwdHMgXCJhbGxcIiBvciBcIm5vbmVcIlxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydHktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJHByb3BlcnR5LTIgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTMgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTQgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTUgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTYgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTcgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTggOiBmYWxzZSxcbiAgJHByb3BlcnR5LTkgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eS0xKSA9PSBzdHJpbmcgeyAkcHJvcGVydHktMTogdW5xdW90ZSgkcHJvcGVydHktMSk7IH1cbiAgJHByb3BlcnRpZXM6IGNvbXBhY3QoJHByb3BlcnR5LTEsICRwcm9wZXJ0eS0yLCAkcHJvcGVydHktMywgJHByb3BlcnR5LTQsICRwcm9wZXJ0eS01LCAkcHJvcGVydHktNiwgJHByb3BlcnR5LTcsICRwcm9wZXJ0eS04LCAkcHJvcGVydHktOSwgJHByb3BlcnR5LTEwKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1tb3osICAgICRwcm9wZXJ0aWVzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgICAgICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgICAgICAkcHJvcGVydGllcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5IDogJHByb3BlcnRpZXM7XG59XG5cbi8vIE9uZSBvciBtb3JlIGR1cmF0aW9ucyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGR1cmF0aW9ucyB3aWxsIGFmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZHVyYXRpb24tMiA6IGZhbHNlLFxuICAkZHVyYXRpb24tMyA6IGZhbHNlLFxuICAkZHVyYXRpb24tNCA6IGZhbHNlLFxuICAkZHVyYXRpb24tNSA6IGZhbHNlLFxuICAkZHVyYXRpb24tNiA6IGZhbHNlLFxuICAkZHVyYXRpb24tNyA6IGZhbHNlLFxuICAkZHVyYXRpb24tOCA6IGZhbHNlLFxuICAkZHVyYXRpb24tOSA6IGZhbHNlLFxuICAkZHVyYXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJGR1cmF0aW9uLTEpID09IHN0cmluZyB7ICRkdXJhdGlvbi0xOiB1bnF1b3RlKCRkdXJhdGlvbi0xKTsgfVxuICAkZHVyYXRpb25zOiBjb21wYWN0KCRkdXJhdGlvbi0xLCAkZHVyYXRpb24tMiwgJGR1cmF0aW9uLTMsICRkdXJhdGlvbi00LCAkZHVyYXRpb24tNSwgJGR1cmF0aW9uLTYsICRkdXJhdGlvbi03LCAkZHVyYXRpb24tOCwgJGR1cmF0aW9uLTksICRkdXJhdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRpbWluZyBmdW5jdGlvbnNcbi8vXG4vLyAqIFsgZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKHgxLCB5MSwgeDIsIHkyKV1cbi8vICogRm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJGZ1bmN0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRmdW5jdGlvbi0yIDogZmFsc2UsXG4gICRmdW5jdGlvbi0zIDogZmFsc2UsXG4gICRmdW5jdGlvbi00IDogZmFsc2UsXG4gICRmdW5jdGlvbi01IDogZmFsc2UsXG4gICRmdW5jdGlvbi02IDogZmFsc2UsXG4gICRmdW5jdGlvbi03IDogZmFsc2UsXG4gICRmdW5jdGlvbi04IDogZmFsc2UsXG4gICRmdW5jdGlvbi05IDogZmFsc2UsXG4gICRmdW5jdGlvbi0xMDogZmFsc2Vcbikge1xuICAkZnVuY3Rpb24tMTogdW5xdW90ZSgkZnVuY3Rpb24tMSk7XG4gICRmdW5jdGlvbnM6IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXksXG4gICRkZWxheS0yIDogZmFsc2UsXG4gICRkZWxheS0zIDogZmFsc2UsXG4gICRkZWxheS00IDogZmFsc2UsXG4gICRkZWxheS01IDogZmFsc2UsXG4gICRkZWxheS02IDogZmFsc2UsXG4gICRkZWxheS03IDogZmFsc2UsXG4gICRkZWxheS04IDogZmFsc2UsXG4gICRkZWxheS05IDogZmFsc2UsXG4gICRkZWxheS0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZGVsYXktMSkgPT0gc3RyaW5nIHsgJGRlbGF5LTE6IHVucXVvdGUoJGRlbGF5LTEpOyB9XG4gICRkZWxheXM6IGNvbXBhY3QoJGRlbGF5LTEsICRkZWxheS0yLCAkZGVsYXktMywgJGRlbGF5LTQsICRkZWxheS01LCAkZGVsYXktNiwgJGRlbGF5LTcsICRkZWxheS04LCAkZGVsYXktOSwgJGRlbGF5LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZGVsYXksICRkZWxheXMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gVHJhbnNpdGlvbiBhbGwtaW4tb25lIHNob3J0aGFuZFxuXG5AbWl4aW4gc2luZ2xlLXRyYW5zaXRpb24oXG4gICRwcm9wZXJ0eTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJGR1cmF0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZnVuY3Rpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRkZWxheTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheVxuKSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29tcGFjdCgkcHJvcGVydHkgJGR1cmF0aW9uICRmdW5jdGlvbiAkZGVsYXkpKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24oXG4gICR0cmFuc2l0aW9uLTEgOiBkZWZhdWx0LFxuICAkdHJhbnNpdGlvbi0yIDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTMgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNCA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi01IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTYgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi04IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTkgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmICR0cmFuc2l0aW9uLTEgPT0gZGVmYXVsdCB7XG4gICAgJHRyYW5zaXRpb24tMSA6IGNvbXBhY3QoJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSk7XG4gIH1cbiAgJHRyYW5zaXRpb25zOiBmYWxzZTtcbiAgQGlmIHR5cGUtb2YoJHRyYW5zaXRpb24tMSkgPT0gbGlzdCBhbmQgdHlwZS1vZihudGgoJHRyYW5zaXRpb24tMSwxKSkgPT0gbGlzdCB7XG4gICAgJHRyYW5zaXRpb25zOiBqb2luKCR0cmFuc2l0aW9uLTEsIGNvbXBhY3QoJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApLCBjb21tYSk7XG4gIH0gQGVsc2Uge1xuICAgICR0cmFuc2l0aW9ucyA6IGNvbXBhY3QoJHRyYW5zaXRpb24tMSwgJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApO1xuICB9XG4gICRkZWxheXM6IGNvbW1hLWxpc3QoKTtcbiAgJGhhcy1kZWxheXM6IGZhbHNlO1xuICAkd2Via2l0LXZhbHVlOiBjb21tYS1saXN0KCk7XG4gICRtb3otdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG8tdmFsdWU6IGNvbW1hLWxpc3QoKTtcblxuICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICBAZWFjaCAkdHJhbnNpdGlvbiBpbiAkdHJhbnNpdGlvbnMge1xuICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBsaXN0XG4gICAgLy8gKHRoaXMgd291bGQgYmUgY2xlYW5lciBpZiBudGggdG9vayBhIDNyZCBhcmd1bWVudCB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSkuXG4gICAgJHByb3BlcnR5OiBudGgoJHRyYW5zaXRpb24sIDEpO1xuICAgICRkdXJhdGlvbjogZmFsc2U7XG4gICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgJGRlbGF5OiBmYWxzZTtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDEgeyAkZHVyYXRpb246ICAgICAgICBudGgoJHRyYW5zaXRpb24sIDIpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAyIHsgJHRpbWluZy1mdW5jdGlvbjogbnRoKCR0cmFuc2l0aW9uLCAzKTsgfVxuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMyB7ICRkZWxheTogICAgICAgICAgIG50aCgkdHJhbnNpdGlvbiwgNCk7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBJZiBhIGRlbGF5IGlzIHByb3ZpZGVkIHdpdGhvdXQgYSB0aW1pbmcgZnVuY3Rpb25cbiAgICBAaWYgaXMtdGltZSgkdGltaW5nLWZ1bmN0aW9uKSBhbmQgbm90KCRkZWxheSkgeyAkZGVsYXk6ICR0aW1pbmctZnVuY3Rpb247ICR0aW1pbmctZnVuY3Rpb246IGZhbHNlOyAkaGFzLWRlbGF5czogdHJ1ZTsgfVxuXG4gICAgLy8gS2VlcCBhIGxpc3Qgb2YgZGVsYXlzIGluIGNhc2Ugb25lIGlzIHNwZWNpZmllZFxuICAgICRkZWxheXM6IGFwcGVuZCgkZGVsYXlzLCBpZigkZGVsYXksICRkZWxheSwgMHMpKTtcblxuICAgICR3ZWJraXQtdmFsdWU6IGFwcGVuZCgkd2Via2l0LXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pKTtcbiAgICAgICAkbW96LXZhbHVlOiBhcHBlbmQoICAgJG1vei12YWx1ZSwgY29tcGFjdChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbiggICAtbW96LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkpO1xuICAgICAgICAgJG8tdmFsdWU6IGFwcGVuZCggICAgICRvLXZhbHVlLCBjb21wYWN0KHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgICAgLW8sICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KSk7XG4gIH1cblxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24gOiAkd2Via2l0LXZhbHVlO1xuICAgIC8vIG9sZCB3ZWJraXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWxheSBwYXJhbWV0ZXIgaW4gdGhlIHNob3J0aGFuZCBzbyB3ZSBwcm9ncmVzc2l2ZWx5IGVuaGFuY2UgaXQuXG4gICAgQGlmICRoYXMtZGVsYXlzICAgICAgICAgICAgICAgICAgICAgICB7IC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSA6ICRkZWxheXM7ICAgICAgIH0gfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAgICAgICAtbW96LXRyYW5zaXRpb24gOiAkbW96LXZhbHVlOyAgICB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbiA6ICRvLXZhbHVlOyAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uIDogJHRyYW5zaXRpb25zO1xufVxuXG4vLyBjb2VyY2UgYSBsaXN0IHRvIGJlIGNvbW1hIGRlbGltaXRlZCBvciBtYWtlIGEgbmV3LCBlbXB0eSBjb21tYSBkZWxpbWl0ZWQgbGlzdC5cbkBmdW5jdGlvbiBjb21tYS1saXN0KCRsaXN0OiAoKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICRsaXN0LCBjb21tYSk7XG59XG5cbi8vIFJldHVybnMgYCRwcm9wZXJ0eWAgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IGlmIGl0IGlzIGZvdW5kIGluIGAkdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzYC5cbkBmdW5jdGlvbiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkcHJvcGVydHkpIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5KSA9PSBsaXN0IHtcbiAgICAkbmV3LWxpc3Q6IGNvbW1hLWxpc3QoKTtcbiAgICBAZWFjaCAkdiBpbiAkcHJvcGVydHkge1xuICAgICAgJG5ldy1saXN0OiBhcHBlbmQoJG5ldy1saXN0LCBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkdikpO1xuICAgIH1cbiAgICBAcmV0dXJuICRuZXctbGlzdDtcbiAgfSBAZWxzZSB7XG4gICAgQGlmIGluZGV4KCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXMsICRwcm9wZXJ0eSkge1xuICAgICAgQHJldHVybiAjeyRwcmVmaXh9LSN7JHByb3BlcnR5fTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gJHByb3BlcnR5O1xuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVja3MgaWYgdGhlIHZhbHVlIGdpdmVuIGlzIGEgdW5pdCBvZiB0aW1lLlxuQGZ1bmN0aW9uIGlzLXRpbWUoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICBAcmV0dXJuIG5vdChub3QoaW5kZXgocyBtcywgdW5pdCgkdmFsdWUpKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYXBwZWFyYW5jZSBmb3IgTW96aWxsYSwgV2Via2l0IGFuZCBwb3NzaWJseSB0aGUgZnV0dXJlLlxuLy8gVGhlIGFwcGVhcmFuY2UgcHJvcGVydHkgaXMgY3VycmVudGx5IG5vdCBwcmVzZW50IGluIGFueSBuZXdlciBDU1Mgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGVyZSBpcyBubyBvZmZpY2lhbCBsaXN0IG9mIGFjY2VwdGVkIHZhbHVlcywgYnV0IHlvdSBtaWdodCBjaGVjayB0aGVzZSBzb3VyY2U6XG4vLyAgIE1vemlsbGEgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9DU1MvLW1vei1hcHBlYXJhbmNlXG4vLyAgIFdlYmtpdCAgOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2Via2l0LW1pcnJvci9zb3VyY2UvYnJvd3NlL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluP3NwZWM9c3ZuZjFhZWE1NTlkY2QwMjVhODk0NmFhN2RhNmU0ZTgzMDZmNWMxYjYwNCZyPTYzYzdkMWFmNDQ0MzBiMzE0MjMzZmVhMzQyYzNkZGIyYTA1MmUzNjVcbi8vICAgKHNlYXJjaCBmb3IgJ2FwcGVhcmFuY2UnIHdpdGhpbiB0aGUgcGFnZSlcblxuQG1peGluIGFwcGVhcmFuY2UoJGFwKSB7XG4gICRhcDogdW5xdW90ZSgkYXApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYXBwZWFyYW5jZSwgJGFwLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gV2Via2l0LCBJRTEwIGFuZCBmdXR1cmUgc3VwcG9ydCBmb3IgW0NTUyBSZWdpb25zXShodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvKVxuLy9cbi8vICR0YXJnZXQgaXMgYSB2YWx1ZSB5b3UgdXNlIHRvIGxpbmsgdHdvIHJlZ2lvbnMgb2YgeW91ciBjc3MuIEdpdmUgdGhlIHNvdXJjZSBvZiB5b3VyIGNvbnRlbnQgdGhlIGZsb3ctaW50byBwcm9wZXJ0eSwgYW5kIGdpdmUgeW91ciB0YXJnZXQgY29udGFpbmVyIHRoZSBmbG93LWZyb20gcHJvcGVydHkuXG4vL1xuLy8gRm9yIGEgdmlzdWFsIGV4cGxhbmF0aW9uLCBzZWUgdGhlIGRpYWdyYW1zIGF0IENocmlzIENveWllcidzXG4vLyBbQ1NTLVRyaWNrc10oaHR0cDovL2Nzcy10cmlja3MuY29tL2NvbnRlbnQtZm9sZGluZy8pXG5cbkBtaXhpbiBmbG93LWludG8oJHRhcmdldCkge1xuICAkdGFyZ2V0OiB1bnF1b3RlKCR0YXJnZXQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmxvdy1pbnRvLCAkdGFyZ2V0LFxuICAgIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgbm90IG9mZmljaWFsXG4gICk7XG59XG5cbkBtaXhpbiBmbG93LWZyb20oJHRhcmdldCkge1xuICAkdGFyZ2V0OiB1bnF1b3RlKCR0YXJnZXQpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoZmxvdy1mcm9tLCAkdGFyZ2V0LFxuICAgIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgbm90IG9mZmljaWFsXG4gICk7XG59IiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBNaXhpbnMgdG8gc3VwcG9ydCBzcGVjaWZpYyBDU1MgVGV4dCBMZXZlbCAzIGVsZW1lbnRzXG4vL1xuLy9cbi8vXG4vLyBNaXhpbiBmb3Igd29yZC1icmVhayBwcm9wZXJ0aWVzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9jc3MzLXRleHQvI3dvcmQtYnJlYWtcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IG5vcm1hbCwga2VlcC1hbGwsIGJyZWFrLWFsbFxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgICBwLndvcmRCcmVhayB7QGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO31cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBwLndvcmRCcmVhayB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDt9XG4vL1xuQG1peGluIHdvcmQtYnJlYWsoJHZhbHVlOiBub3JtYWwpe1xuICBAaWYgJHZhbHVlID09IGJyZWFrLWFsbCB7XG4gICAgLy9Nb3N0IGJyb3dzZXJzIGhhbmRsZSB0aGUgYnJlYWstYWxsIGNhc2UgdGhlIHNhbWUuLi5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgJHZhbHVlLFxuICAgICAgbm90KC1tb3opLCBub3QoLXdlYmtpdCksIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgICAvL1dlYmtpdCBoYW5kbGVzIGJyZWFrLWFsbCBkaWZmZXJlbnRseS4uLiBhcyBicmVhay13b3JkXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssIGJyZWFrLXdvcmQsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIE1peGluIGZvciB0aGUgaHlwaGVucyBwcm9wZXJ0eVxuLy9cbi8vIFczQyBzcGVjaWZpY2F0aW9uOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvI2h5cGhlbnNcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGF1dG8sIG1hbnVhbCwgbm9uZVxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgcCB7XG4vLyAgICBAaW5jbHVkZSBoeXBoZW5zKGF1dG8pO31cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICBwIHtcbi8vICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgIC13ZWJraXQtaHlwaGVuczogYXV0bztcbi8vICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5zKCR2YWx1ZTogYXV0byl7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChoeXBoZW5zLCAkdmFsdWUsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBmb3IgeC1icm93c2VyIGh5cGhlbmF0aW9uIGJhc2VkIG9uIEBhdWNoZW5iZXJnJ3MgcG9zdDpcbi8vIFJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSA8d2JyLz4gSFRNTCB0YWdcbi8vIGh0dHA6Ly9ibG9nLmtlbm5ldGguaW8vYmxvZy8yMDEyLzAzLzA0L3dvcmQtd3JhcHBpbmctaHlwZXJuYXRpb24tdXNpbmctY3NzL1xuLy9cbi8vICBFeGFtcGxlOlxuLy8gIGRpdiB7QGluY2x1ZGUgaHlwaGVuYXRpb247fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBkaXYge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4vLyAgICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICBoeXBoZW5zOiBhdXRvO31cbi8vXG5AbWl4aW4gaHlwaGVuYXRpb257XG4gIEBpbmNsdWRlIHdvcmQtYnJlYWsoYnJlYWstYWxsKTtcbiAgQGluY2x1ZGUgaHlwaGVucztcbn1cbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciB0aGUgdXBjb21pbmcgKD8pIGNzczMgZmlsdGVyIHByb3BlcnR5LlxuLy9cbi8vIEVhY2ggZmlsdGVyIGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGZpbHRlciBwcm9wZXJ0eS5cbkBtaXhpbiBmaWx0ZXIgKFxuICAkZmlsdGVyLTEsXG4gICRmaWx0ZXItMiA6IGZhbHNlLFxuICAkZmlsdGVyLTMgOiBmYWxzZSxcbiAgJGZpbHRlci00IDogZmFsc2UsXG4gICRmaWx0ZXItNSA6IGZhbHNlLFxuICAkZmlsdGVyLTYgOiBmYWxzZSxcbiAgJGZpbHRlci03IDogZmFsc2UsXG4gICRmaWx0ZXItOCA6IGZhbHNlLFxuICAkZmlsdGVyLTkgOiBmYWxzZSxcbiAgJGZpbHRlci0xMDogZmFsc2Vcbikge1xuICAkZmlsdGVyIDogY29tcGFjdCgkZmlsdGVyLTEsICRmaWx0ZXItMiwgJGZpbHRlci0zLCAkZmlsdGVyLTQsICRmaWx0ZXItNSwgJGZpbHRlci02LCAkZmlsdGVyLTcsICRmaWx0ZXItOCwgJGZpbHRlci05LCAkZmlsdGVyLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZpbHRlciwgJGZpbHRlcixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG4iLCIkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZTogdHJ1ZTtcblxuLy8gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIFNhc3MncyBAZXh0ZW5kIGRpcmVjdGl2ZSB0byBhcHBseSB0aGUgYmVoYXZpb3Jcbi8vIHRvIHlvdXIgUElFIGVsZW1lbnRzLiBUbyBhc3Npc3QgeW91LCBDb21wYXNzIHByb3ZpZGVzIHRoaXMgdmFyaWFibGUuXG4vLyBXaGVuIHNldCwgaXQgd2lsbCBjYXVzZSB0aGUgYEBpbmNsdWRlIHBpZWAgbWl4aW4gdG8gZXh0ZW5kIHRoaXMgY2xhc3MuXG4vLyBUaGUgY2xhc3MgbmFtZSB5b3UgcHJvdmlkZSBzaG91bGQgKipub3QqKiBpbmNsdWRlIHRoZSBgLmAuXG4kcGllLWJhc2UtY2xhc3M6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBhcHByb2FjaCB0byB1c2luZyBQSUUuXG4vLyBDYW4gYmUgb25lIG9mOlxuLy9cbi8vICogcmVsYXRpdmUgKGRlZmF1bHQpXG4vLyAqIHotaW5kZXhcbi8vICogbm9uZVxuJHBpZS1kZWZhdWx0LWFwcHJvYWNoOiByZWxhdGl2ZSAhZGVmYXVsdDtcblxuLy8gVGhlIGxvY2F0aW9uIG9mIHlvdXIgUElFIGJlaGF2aW9yIGZpbGVcbi8vIFRoaXMgc2hvdWxkIGJlIHJvb3QtcmVsYXRpdmUgdG8geW91ciB3ZWIgc2VydmVyXG4vLyByZWxhdGl2ZSBhc3NldHMgZG9uJ3Qgd29yay4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdFxuLy8geW91IHNldCB0aGlzIHlvdXJzZWxmLlxuJHBpZS1iZWhhdmlvcjogc3R5bGVzaGVldC11cmwoXCJQSUUuaHRjXCIpICFkZWZhdWx0O1xuXG4vLyBXaGVuIHVzaW5nIHRoZSB6LWluZGV4IGFwcHJvYWNoLCB0aGVcbi8vIGZpcnN0IGFuY2VzdG9yIG9mIHRoZSBQSUUgZWxlbWVudCBhdFxuLy8gb3IgYmVmb3JlIHRoZSBjb250YWluZXIncyBvcGFxdWUgYmFja2dyb3VuZFxuLy8gc2hvdWxkIGhhdmUgYSB6LWluZGV4IHNldCBhcyB3ZWxsIHRvIGVuc3VyZVxuLy8gcHJvcGVydCB6LWluZGV4IHN0YWNraW5nLlxuLy9cbi8vIFRoZSBgJHBvc2l0aW9uYCBhcmd1bWVudCBtdXN0IGJlIHNvbWUgbm9uLXN0YXRpY1xuLy8gdmFsdWUgKGFic29sdXRlLCByZWxhdGl2ZSwgZXRjLilcbkBtaXhpbiBwaWUtY29udGFpbmVyKCR6LWluZGV4OiAwLCAkcG9zaXRpb246IHJlbGF0aXZlKSB7XG4gIHotaW5kZXg6ICR6LWluZGV4O1xuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xufVxuXG4vLyBQSUUgZWxlbWVudHMgbXVzdCBoYXZlIHRoaXMgYmVoYXZpb3IgYXR0YWNoZWQgdG8gdGhlbS5cbi8vIElFIGlzIGJyb2tlbiAtLSBpdCBkb2Vzbid0IHRoaW5rIG9mIGJlaGF2aW9yIHVybHMgYXNcbi8vIHJlbGF0aXZlIHRvIHRoZSBzdHlsZXNoZWV0LiBJdCBjb25zaWRlcnMgdGhlbSByZWxhdGl2ZVxuLy8gdG8gdGhlIHdlYnBhZ2UuIEFzIGEgcmVzdWx0LCB5b3UgY2Fubm90IHJlbGlhYmx5IHVzZVxuLy8gY29tcGFzcydzIHJlbGF0aXZlX2Fzc2V0cyB3aXRoIFBJRS5cbi8vIFxuLy8gKiBgJGFwcHJvYWNoYCAtIG9uZSBvZjogcmVsYXRpdmUsIHotaW5kZXgsIG9yIG5vbmVcbi8vICogYCR6LWluZGV4YCAtIHdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoaXNcbi8vICAgICAgICAgICAgICAgIGlzIHRoZSB6LWluZGV4IHRoYXQgaXMgYXBwbGllZC5cbkBtaXhpbiBwaWUtZWxlbWVudChcbiAgJGFwcHJvYWNoOiAkcGllLWRlZmF1bHQtYXBwcm9hY2gsXG4gICR6LWluZGV4OiAwXG4pIHtcbiAgYmVoYXZpb3I6ICRwaWUtYmVoYXZpb3I7XG4gIEBpZiAkYXBwcm9hY2ggPT0gcmVsYXRpdmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gei1pbmRleCB7XG4gICAgei1pbmRleDogJHotaW5kZXg7XG4gIH1cbn1cblxuLy8gYSBzbWFydCBtaXhpbiB0aGF0IGtub3dzIHRvIGV4dGVuZCBvciBpbmNsdWRlIHBpZS1lbGVtZW50IGFjY29yZGluZ1xuLy8gdG8geW91ciBzdHlsZXNoZWV0J3MgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuXG5AbWl4aW4gcGllKCRiYXNlLWNsYXNzOiAkcGllLWJhc2UtY2xhc3MpIHtcbiAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICBAZXh0ZW5kIC4jeyRiYXNlLWNsYXNzfTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgcGllLWVsZW1lbnQ7XG4gIH1cbn1cblxuLy8gV2F0Y2ggYCRuYCBsZXZlbHMgb2YgYW5jZXN0b3JzIGZvciBjaGFuZ2VzIHRvIHRoZWlyIGNsYXNzIGF0dHJpYnV0ZVxuLy8gU28gdGhhdCBjYXNjYWRpbmcgc3R5bGVzIHdpbGwgd29yayBjb3JyZWN0bHkgb24gdGhlIFBJRSBlbGVtZW50LlxuQG1peGluIHBpZS13YXRjaC1hbmNlc3RvcnMoJG4pIHtcbiAgLXBpZS13YXRjaC1hbmNlc3RvcnM6ICRuO1xufSIsIi8vIFVzZXIgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhpcyBmaWxlIGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYWxsIHRoZSB1c2VyIGludGVyZmFjZSBwcm9wZXJ0aWVzIGFzXG4vLyB0aGV5IGJlY29tZSBhdmFpbGFibGUgaW4gYnJvd3NlcnM6XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELWNzczMtdXNlcmludC0yMDAwMDIxNlxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHNlbGVjdGlvbiBtb2RlbCBhbmQgZ3JhbnVsYXJpdHkgb2YgYW4gZWxlbWVudC5cbi8vXG4vLyBAcGFyYW0gJHNlbGVjdFxuLy8gICBbIG5vbmUgfCB0ZXh0IHwgdG9nZ2xlIHwgZWxlbWVudCB8IGVsZW1lbnRzIHwgYWxsIHwgaW5oZXJpdCBdXG5AbWl4aW4gdXNlci1zZWxlY3QoJHNlbGVjdCkge1xuICAkc2VsZWN0OiB1bnF1b3RlKCRzZWxlY3QpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodXNlci1zZWxlY3QsICRzZWxlY3QsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIC1raHRtbCwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoaXMgaXMgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gZm9yIGFsbCB0aGUgb3RoZXIgbWl4aW5zIGluIHRoaXMgbW9kdWxlLlxuLy8gSXQgaXMgdGhlIG9ubHkgd2F5IHRvIGFjY2VzcyBwcmVmaXggc3VwcG9ydCBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHNwZWMuXG4vLyBEZXZpYXRlcyBmcm9tIGNhbm9uaWNhbCBDb21wYXNzIGltcGxlbWVudGF0aW9uIGJ5IGRyb3BwaW5nIHN1cHBvcnQgZm9yXG4vLyBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgRmxleGJveCBzcGVjLlxuLy9cbi8vIGAkcHJvcGVydGllc2A6IG1hcCBvZiBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0aGF0IHNob3VsZCBiZSBwcmVmaXhlZFxuQG1peGluIGZsZXhib3goJHByb3BlcnRpZXMpIHtcbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRwcm9wID09IGRpc3BsYXkge1xuICAgICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsLXZhbHVlKGRpc3BsYXksICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKCRwcm9wLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVmFsdWVzIGZvciAkZGlzcGxheSBhcmU6IGZsZXggKGRlZmF1bHQpLCBpbmxpbmUtZmxleFxuQG1peGluIGRpc3BsYXktZmxleCgkZGlzcGxheTogZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChkaXNwbGF5OiAkZGlzcGxheSkpO1xufVxuXG4vLyBWYWx1ZXM6IHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2VcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uKSk7XG59XG5cbi8vIFZhbHVlczogbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZVxuQG1peGluIGZsZXgtd3JhcCgkd3JhcCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXdyYXA6ICR3cmFwKSk7XG59XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1kaXJlY3Rpb24gYW5kIGZsZXgtd3JhcC5cbkBtaXhpbiBmbGV4LWZsb3coJGZsb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1mbG93OiAkZmxvdykpO1xufVxuXG4vLyBBY2NlcHRzIGFuIGludGVnZXJcbkBtaXhpbiBvcmRlcigkb3JkZXIpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgob3JkZXI6ICRvcmRlcikpO1xufVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZ3JvdywgZmxleC1zaHJpbmsgYW5kIG9wdGlvbmFsbHkgZmxleC1iYXNpcy5cbi8vIFNwYWNlIHNlcGFyYXRlZCwgaW4gdGhhdCBvcmRlci5cbkBtaXhpbiBmbGV4KCRmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXg6ICRmbGV4KSk7XG59XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1ncm93KCRmbGV4LWdyb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1ncm93OiAkZmxleC1ncm93KSk7XG59XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1zaHJpbmsoJGZsZXgtc2hyaW5rKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtc2hyaW5rOiAkZmxleC1zaHJpbmspKTtcbn1cblxuLy8gQWNjZXB0cyBhbnkgbGVnYWwgdmFsdWUgZm9yIHRoZSB3aWR0aCBwcm9wZXJ0eS5cbkBtaXhpbiBmbGV4LWJhc2lzKCRmbGV4LWJhc2lzKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtYmFzaXM6ICRmbGV4LWJhc2lzKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZFxuQG1peGluIGp1c3RpZnktY29udGVudCgkanVzdGlmeS1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGp1c3RpZnktY29udGVudDogJGp1c3RpZnktY29udGVudCkpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWl0ZW1zKCRhbGlnbi1pdGVtcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1pdGVtczogJGFsaWduLWl0ZW1zKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLXNlbGYoJGFsaWduLXNlbGYpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tc2VsZjogJGFsaWduLXNlbGYpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWNvbnRlbnQoJGFsaWduLWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tY29udGVudDogJGFsaWduLWNvbnRlbnQpKTtcbn1cbiIsIi8vIEJvdXJib24gNC4yLjZcbi8vIGh0dHA6Ly9ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJzZXR0aW5ncy9wcmVmaXhlclwiO1xuQGltcG9ydCBcInNldHRpbmdzL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvYXNzZXQtcGlwZWxpbmVcIjtcblxuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxlbmd0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1saWdodFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtc2l6ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1lbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdW5wYWNrXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcblxuQGltcG9ydCBcImhlbHBlcnMvY29udmVydC11bml0c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9mb250LXNvdXJjZS1kZWNsYXJhdGlvblwiO1xuQGltcG9ydCBcImhlbHBlcnMvZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvc2hhcGUtc2l6ZS1zdHJpcHBlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xuXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvY2FsY1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4LWJveFwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJjc3MzL2hpZHBpLW1lZGlhLXF1ZXJ5XCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvc2VsZWN0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LWRlY29yYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvdXNlci1zZWxlY3RcIjtcblxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItY29sb3JcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXdpZHRoXCI7XG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZm9udC1zdGFja3NcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XG5AaW1wb3J0IFwiYWRkb25zL21hcmdpblwiO1xuQGltcG9ydCBcImFkZG9ucy9wYWRkaW5nXCI7XG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwiYWRkb25zL3JldGluYS1pbWFnZVwiO1xuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RleHQtaW5wdXRzXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RpbWluZy1mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvd29yZC13cmFwXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdsb2JhbCB2YXJpYWJsZXMgdG8gZW5hYmxlIG9yIGRpc2FibGUgdmVuZG9yIHByZWZpeGVzXG5cbiRwcmVmaXgtZm9yLXdlYmtpdDogICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1vemlsbGE6ICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW1pY3Jvc29mdDogdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLW9wZXJhOiAgICAgdHJ1ZSAhZGVmYXVsdDtcbiRwcmVmaXgtZm9yLXNwZWM6ICAgICAgdHJ1ZSAhZGVmYXVsdDtcbiIsIiRlbS1iYXNlOiAxNnB4ICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBnbG9iYWwgc2V0dGluZyB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYCRhc3NldC1waXBlbGluZWAgdmFyaWFibGUgZm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgaXQuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRhc3NldC1waXBlbGluZTogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XG4gICRsaXN0OiAoKTtcblxuICBAZWFjaCAkaW5wdXQgaW4gJGlucHV0cyB7XG4gICAgJGlucHV0OiB1bnF1b3RlKCRpbnB1dCk7XG4gICAgJGlucHV0OiBpZigkcHNldWRvLCAkaW5wdXQgKyBcIjpcIiArICRwc2V1ZG8sICRpbnB1dCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGlucHV0LCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBjb250YWlucyBhIHZhbHVlKHMpLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0XG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsdWVzXG4vLy8gICBBIHNpbmdsZSB2YWx1ZSBvciBsaXN0IG9mIHZhbHVlcyB0byBjaGVjayBmb3IuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIGNvbnRhaW5zKCRsaXN0LCAkdmFsdWUpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMoJGxpc3QsICR2YWx1ZXMuLi4pIHtcbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZXMge1xuICAgIEBpZiB0eXBlLW9mKGluZGV4KCRsaXN0LCAkdmFsdWUpKSAhPSBcIm51bWJlclwiIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGlmIGEgbGlzdCBkb2VzIG5vdCBjb250YWlucyBhIHZhbHVlLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0XG4vLy8gICBUaGUgbGlzdCB0byBjaGVjayBhZ2FpbnN0LlxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGNvbnRhaW5zLWZhbHN5KCRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgbm90ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBsZW5ndGguXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXG5cbkBmdW5jdGlvbiBpcy1sZW5ndGgoJHZhbHVlKSB7XG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpICE9IFwibnVsbFwiIGFuZCAoc3RyLXNsaWNlKCR2YWx1ZSArIFwiXCIsIDEsIDQpID09IFwiY2FsY1wiXG4gICAgICAgb3IgaW5kZXgoYXV0byBpbmhlcml0IGluaXRpYWwgMCwgJHZhbHVlKVxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY29sb3IgaXMgbGlnaHQgb3IgZGFyay5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yIChIZXgpfSAkY29sb3Jcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgaXMtbGlnaHQoJGNvbG9yKVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ncmVlbjogZ3JlZW4ocmdiYSgkaGV4LWNvbG9yLCAxKSk7XG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1saWdodG5lc3M6ICgkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjIpIC8gMjU1O1xuXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuXG5AZnVuY3Rpb24gaXMtbnVtYmVyKCR2YWx1ZSkge1xuICBAcmV0dXJuIGNvbnRhaW5zKFwiMFwiIFwiMVwiIFwiMlwiIFwiM1wiIFwiNFwiIFwiNVwiIFwiNlwiIFwiN1wiIFwiOFwiIFwiOVwiIDAgMSAyIDMgNCA1IDYgNyA4IDksICR2YWx1ZSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIHNpemUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcblxuQGZ1bmN0aW9uIGlzLXNpemUoJHZhbHVlKSB7XG4gIEByZXR1cm4gaXMtbGVuZ3RoKCR2YWx1ZSlcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuICBAaWYgbm90IHVuaXRsZXNzKCRiYXNlKSB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuICBAcmV0dXJuICgkcHh2YWwgLyAkYmFzZSkgKiAxZW07XG59XG4iLCIvLyBDb252ZXJ0IHBpeGVscyB0byByZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIHJlbSgxMilcbi8vIEFzc3VtZXMgJGVtLWJhc2UgaXMgdGhlIGZvbnQtc2l6ZSBvZiA8aHRtbD5cblxuQGZ1bmN0aW9uIHJlbSgkcHh2YWwpIHtcbiAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XG4gIH1cblxuICAkYmFzZTogJGVtLWJhc2U7XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFyZW07XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggYmxhY2suXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcbi8vLyAgIFRoZSBhbW91bnQgb2YgYmxhY2sgdG8gYmUgbWl4ZWQgaW4uXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUoI2ZmYmI1MiwgNjAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY2NGEyMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXR1cm4ge0NvbG9yfVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFN0cmlwcyB0aGUgdW5pdCBmcm9tIGEgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFdpdGggVW5pdCl9ICR2YWx1ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAkZGltZW5zaW9uOiBzdHJpcC11bml0cygxMGVtKTtcbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgICRkaW1lbnNpb246IDEwO1xuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyIChVbml0bGVzcyl9XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0cygkdmFsdWUpIHtcbiAgQHJldHVybiAoJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggd2hpdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcbi8vLyAgIFRoZSBhbW91bnQgb2Ygd2hpdGUgdG8gYmUgbWl4ZWQgaW4uXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogdGludCgjNmVjYWE2LCA0MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG4iLCIvLyBSZXR1cm4gdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIGlmIGFwcHJvcHJpYXRlXG4vLyBFeGFtcGxlOiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCh0cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kKSwgbW96KSAtPiAtbW96LXRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmRcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wcywgJHZlbmRvcjogZmFsc2UpIHtcbiAgJG5ldy1wcm9wczogKCk7XG5cbiAgQGVhY2ggJHByb3AgaW4gJHByb3BzIHtcbiAgICAkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuICAvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcbiAgQGlmICR2ZW5kb3IgYW5kICRwcm9wID09IHRyYW5zZm9ybSB7XG4gICAgQHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHByb3A7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENvbnZlcnRzIHNob3J0aGFuZCB0byB0aGUgNC12YWx1ZSBzeW50YXguXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG9ydGhhbmRcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IHVucGFjaygxZW0gMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luOiAxZW0gMmVtIDFlbSAyZW07XG4vLy8gICB9XG5cbkBmdW5jdGlvbiB1bnBhY2soJHNob3J0aGFuZCkge1xuICBAaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDEge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAyIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAzKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcbiAgfVxufVxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcbiRnb2xkZW46ICAgICAgICAgICAxLjYxODtcbiRtaW5vci1zZWNvbmQ6ICAgICAxLjA2NztcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcbiRtaW5vci10aGlyZDogICAgICAxLjI7XG4kbWFqb3ItdGhpcmQ6ICAgICAgMS4yNTtcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcbiRwZXJmZWN0LWZpZnRoOiAgICAxLjU7XG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xuJG1pbm9yLXNldmVudGg6ICAgIDEuNzc4O1xuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xuJG9jdGF2ZTogICAgICAgICAgIDI7XG4kbWFqb3ItdGVudGg6ICAgICAgMi41O1xuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XG4kZG91YmxlLW9jdGF2ZTogICAgNDtcblxuJG1vZHVsYXItc2NhbGUtcmF0aW86ICRwZXJmZWN0LWZvdXJ0aCAhZGVmYXVsdDtcbiRtb2R1bGFyLXNjYWxlLWJhc2U6IGVtKCRlbS1iYXNlKSAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlOiAkbW9kdWxhci1zY2FsZS1iYXNlLCAkcmF0aW86ICRtb2R1bGFyLXNjYWxlLXJhdGlvKSB7XG4gICR2MTogbnRoKCR2YWx1ZSwgMSk7XG4gICR2MjogbnRoKCR2YWx1ZSwgbGVuZ3RoKCR2YWx1ZSkpO1xuICAkdmFsdWU6ICR2MTtcblxuICAvLyBzY2FsZSAkdjIgdG8ganVzdCBhYm92ZSAkdjFcbiAgQHdoaWxlICR2MiA+ICR2MSB7XG4gICAgJHYyOiAoJHYyIC8gJHJhdGlvKTsgLy8gd2lsbCBiZSBvZmYtYnktMVxuICB9XG4gIEB3aGlsZSAkdjIgPCAkdjEge1xuICAgICR2MjogKCR2MiAqICRyYXRpbyk7IC8vIHdpbGwgZml4IG9mZi1ieS0xXG4gIH1cblxuICAvLyBjaGVjayBBRlRFUiBzY2FsaW5nICR2MiB0byBwcmV2ZW50IGRvdWJsZS1jb3VudGluZyBjb3JuZXItY2FzZVxuICAkZG91YmxlLXN0cmFuZGVkOiAkdjIgPiAkdjE7XG5cbiAgQGlmICRpbmNyZW1lbnQgPiAwIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRpbmNyZW1lbnQge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgKiAkcmF0aW8pID4gJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAqICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxICogJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRpbmNyZW1lbnQgPCAwIHtcbiAgICAvLyBhZGp1c3QgJHYyIHRvIGp1c3QgYmVsb3cgJHYxXG4gICAgQGlmICRkb3VibGUtc3RyYW5kZWQge1xuICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICB9XG5cbiAgICBAZm9yICRpIGZyb20gJGluY3JlbWVudCB0aHJvdWdoIC0xIHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxIC8gJHJhdGlvKSA8ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAvICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBzdHItdG8tbnVtIGZuLlxuLy8gU291cmNlOiBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvOTY0NzQwOFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIF9jb252ZXJ0LXVuaXRzKCRudW1iZXIsICR1bml0KSB7XG4gICRzdHJpbmdzOiBcInB4XCIsIFwiY21cIiwgXCJtbVwiLCBcIiVcIiwgXCJjaFwiLCBcInBpY2FcIiwgXCJpblwiLCBcImVtXCIsIFwicmVtXCIsIFwicHRcIiwgXCJwY1wiLCBcImV4XCIsIFwidndcIiwgXCJ2aFwiLCBcInZtaW5cIiwgXCJ2bWF4XCIsIFwiZGVnXCIsIFwicmFkXCIsIFwiZ3JhZFwiLCBcInR1cm5cIjtcbiAgJHVuaXRzOiAgIDFweCwgMWNtLCAxbW0sIDElLCAxY2gsIDFwaWNhLCAxaW4sIDFlbSwgMXJlbSwgMXB0LCAxcGMsIDFleCwgMXZ3LCAxdmgsIDF2bWluLCAxdm1heCwgMWRlZywgMXJhZCwgMWdyYWQsIDF0dXJuO1xuICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkdW5pdCk7XG5cbiAgQGlmIG5vdCAkaW5kZXgge1xuICAgIEB3YXJuIFwiVW5rbm93biB1bml0IGAjeyR1bml0fWAuXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpICE9IFwibnVtYmVyXCIge1xuICAgIEB3YXJuIFwiYCN7JG51bWJlcn0gaXMgbm90IGEgbnVtYmVyYFwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAcmV0dXJuICRudW1iZXIgKiBudGgoJHVuaXRzLCAkaW5kZXgpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlyZWN0aW9uYWwtcHJvcGVydHkgbWl4aW5zIGFyZSBzaG9ydGhhbmRzIGZvciB3cml0aW5nIHByb3BlcnRpZXMgbGlrZSB0aGUgZm9sbG93aW5nXG4vLy9cbi8vLyBAaWdub3JlIFlvdSBjYW4gYWxzbyB1c2UgYGZhbHNlYCBpbnN0ZWFkIG9mIGBudWxsYC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgZGlyZWN0aW9uYWwgdmFsdWVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXN0eWxlKGRvdHRlZCBudWxsKTtcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMCAxMHB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogZG90dGVkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAwO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuXG5AZnVuY3Rpb24gY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKSB7XG4gICRvdXRwdXQ6IG51bGw7XG5cbiAgJGE6IG50aCgkdmFscywgMSk7XG4gICRiOiBpZihsZW5ndGgoJHZhbHMpIDwgMiwgJGEsIG50aCgkdmFscywgMikpO1xuICAkYzogaWYobGVuZ3RoKCR2YWxzKSA8IDMsICRhLCBudGgoJHZhbHMsIDMpKTtcbiAgJGQ6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCBpZihsZW5ndGgoJHZhbHMpIDwgNCwgMiwgNCkpKTtcblxuICBAaWYgJGEgPT0gMCB7ICRhOiAwOyB9XG4gIEBpZiAkYiA9PSAwIHsgJGI6IDA7IH1cbiAgQGlmICRjID09IDAgeyAkYzogMDsgfVxuICBAaWYgJGQgPT0gMCB7ICRkOiAwOyB9XG5cbiAgQGlmICRhID09ICRiIGFuZCAkYSA9PSAkYyBhbmQgJGEgPT0gJGQgeyAkb3V0cHV0OiAkYTsgICAgICAgICAgfVxuICBAZWxzZSBpZiAkYSA9PSAkYyBhbmQgJGIgPT0gJGQgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiOyAgICAgICB9XG4gIEBlbHNlIGlmICRiID09ICRkICAgICAgICAgICAgICAgICAgICAgIHsgJG91dHB1dDogJGEgJGIgJGM7ICAgIH1cbiAgQGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYyAkZDsgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuLy8vIE91dHB1dCBkaXJlY3Rpb25hbCBwcm9wZXJ0aWVzLCBmb3IgaW5zdGFuY2UgYG1hcmdpbmAuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJlXG4vLy8gICBQcmVmaXggdG8gdXNlXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdWZcbi8vLyAgIFN1ZmZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIHZhbHVlc1xuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb2xsYXBzZS1kaXJlY3Rpb25hbHNcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zLWZhbHN5XG5cbkBtaXhpbiBkaXJlY3Rpb25hbC1wcm9wZXJ0eSgkcHJlLCAkc3VmLCAkdmFscykge1xuICAvLyBQcm9wZXJ0eSBOYW1lc1xuICAkdG9wOiAgICAkcHJlICsgXCItdG9wXCIgICAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkYm90dG9tOiAkcHJlICsgXCItYm90dG9tXCIgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkbGVmdDogICAkcHJlICsgXCItbGVmdFwiICAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkcmlnaHQ6ICAkcHJlICsgXCItcmlnaHRcIiAgKyBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuICAkYWxsOiAgICAkcHJlICsgICAgICAgICAgICAgaWYoJHN1ZiwgXCItI3skc3VmfVwiLCBcIlwiKTtcblxuICAkdmFsczogY29sbGFwc2UtZGlyZWN0aW9uYWxzKCR2YWxzKTtcblxuICBAaWYgY29udGFpbnMtZmFsc3koJHZhbHMpIHtcbiAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHRvcH06IG50aCgkdmFscywgMSk7IH1cblxuICAgIEBpZiBsZW5ndGgoJHZhbHMpID09IDEge1xuICAgICAgQGlmIG50aCgkdmFscywgMSkgeyAjeyRyaWdodH06IG50aCgkdmFscywgMSk7IH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skcmlnaHR9OiBudGgoJHZhbHMsIDIpOyB9XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMiB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMSk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDIpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCAyKTsgfVxuICAgIH0gQGVsc2UgaWYgbGVuZ3RoKCR2YWxzKSA9PSAzIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDMpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAzKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDQge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCA0KSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgNCk7IH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICN7JGFsbH06ICR2YWxzO1xuICB9XG59XG4iLCIvLyBVc2VkIGZvciBjcmVhdGluZyB0aGUgc291cmNlIHN0cmluZyBmb3IgZm9udHMgdXNpbmcgQGZvbnQtZmFjZVxuLy8gUmVmZXJlbmNlOiBodHRwOi8vZ29vLmdsL1J1MWJLUFxuXG5AZnVuY3Rpb24gZm9udC11cmwtcHJlZml4ZXIoJGFzc2V0LXBpcGVsaW5lKSB7XG4gIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgQHJldHVybiBmb250LXVybDtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiB1cmw7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0cyxcbiAgJGZvbnQtdXJsKSB7XG5cbiAgJHNyYzogKCk7XG5cbiAgJGZvcm1hdHMtbWFwOiAoXG4gICAgZW90OiAgIFwiI3skZmlsZS1wYXRofS5lb3Q/I2llZml4XCIgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgd29mZjI6IFwiI3skZmlsZS1wYXRofS53b2ZmMlwiIGZvcm1hdChcIndvZmYyXCIpLFxuICAgIHdvZmY6ICBcIiN7JGZpbGUtcGF0aH0ud29mZlwiIGZvcm1hdChcIndvZmZcIiksXG4gICAgdHRmOiAgIFwiI3skZmlsZS1wYXRofS50dGZcIiBmb3JtYXQoXCJ0cnVldHlwZVwiKSxcbiAgICBzdmc6ICAgXCIjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX1cIiBmb3JtYXQoXCJzdmdcIilcbiAgKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWVzIGluICRmb3JtYXRzLW1hcCB7XG4gICAgQGlmIGNvbnRhaW5zKCRmaWxlLWZvcm1hdHMsICRrZXkpIHtcbiAgICAgICRmaWxlLXBhdGg6IG50aCgkdmFsdWVzLCAxKTtcbiAgICAgICRmb250LWZvcm1hdDogbnRoKCR2YWx1ZXMsIDIpO1xuXG4gICAgICBAaWYgJGFzc2V0LXBpcGVsaW5lID09IHRydWUge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgZm9udC11cmwoJGZpbGUtcGF0aCkgJGZvbnQtZm9ybWF0LCBjb21tYSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHNyYzogYXBwZW5kKCRzcmMsIHVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzcmM7XG59XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCkge1xuICAkb2Zmc2V0OiBudWxsO1xuICAkdW5pdC1zaG9ydDogIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMiwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICR1bml0LWxvbmc6ICAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAzLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcblxuICBAaWYgKCR1bml0LWxvbmcgPT0gXCJncmFkXCIpIG9yXG4gICAgICAoJHVuaXQtbG9uZyA9PSBcInR1cm5cIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LWxvbmcgPT0gXCJncmFkXCIsIC0xMDBncmFkICogMywgLTAuNzV0dXJuKTtcbiAgfVxuXG4gIEBlbHNlIGlmICgkdW5pdC1zaG9ydCA9PSBcImRlZ1wiKSBvclxuICAgICAgICAgICAoJHVuaXQtc2hvcnQgPT0gXCJyYWRcIikge1xuICAgICRvZmZzZXQ6IGlmKCR1bml0LXNob3J0ID09IFwiZGVnXCIsIC05MCAqIDMsIDEuNnJhZCk7XG4gIH1cblxuICBAaWYgJG9mZnNldCB7XG4gICAgJG51bTogX3N0ci10by1udW0oJGZpcnN0LXZhbCk7XG5cbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgKCRvZmZzZXQgLSAkbnVtKSArICRzdWZmaXgsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKSB7XG4gICRpbWFnZTogdW5xdW90ZSgkaW1hZ2UpO1xuICAkZ3JhZGllbnRzOiAoKTtcbiAgJHN0YXJ0OiBzdHItaW5kZXgoJGltYWdlLCBcIihcIik7XG4gICRlbmQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiLFwiKTtcbiAgJGZpcnN0LXZhbDogc3RyLXNsaWNlKCRpbWFnZSwgJHN0YXJ0ICsgMSwgJGVuZCAtIDEpO1xuXG4gICRwcmVmaXg6IHN0ci1zbGljZSgkaW1hZ2UsIDEsICRzdGFydCk7XG4gICRzdWZmaXg6IHN0ci1zbGljZSgkaW1hZ2UsICRlbmQsIHN0ci1sZW5ndGgoJGltYWdlKSk7XG5cbiAgJGhhcy1tdWx0aXBsZS12YWxzOiBzdHItaW5kZXgoJGZpcnN0LXZhbCwgXCIgXCIpO1xuICAkaGFzLXNpbmdsZS1wb3NpdGlvbjogdW5xdW90ZShfcG9zaXRpb24tZmxpcHBlcigkZmlyc3QtdmFsKSArIFwiXCIpO1xuICAkaGFzLWFuZ2xlOiBpcy1udW1iZXIoc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsIDEpKTtcblxuICBAaWYgJGhhcy1tdWx0aXBsZS12YWxzIHtcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscyk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLXNpbmdsZS1wb3NpdGlvbiAhPSBcIlwiIHtcbiAgICAkcG9zOiB1bnF1b3RlKCRoYXMtc2luZ2xlLXBvc2l0aW9uICsgXCJcIik7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaGFzLWFuZ2xlIHtcbiAgICAvLyBSb3RhdGUgZGVncmVlIGZvciB3ZWJraXRcbiAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuICBAcmV0dXJuIGlmKCRwb3MgPT0gbGVmdCwgcmlnaHQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHJpZ2h0LCBsZWZ0LCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSB0b3AsIGJvdHRvbSwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gYm90dG9tLCB0b3AsIG51bGwpO1xufVxuIiwiLy8gUHJpdmF0ZSBmdW5jdGlvbiBmb3IgbGluZWFyLWdyYWRpZW50LXBhcnNlclxuQGZ1bmN0aW9uIF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKSB7XG4gICR2YWwtMTogc3RyLXNsaWNlKCRmaXJzdC12YWwsIDEsICRoYXMtbXVsdGlwbGUtdmFscyAtIDEpO1xuICAkdmFsLTI6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAkaGFzLW11bHRpcGxlLXZhbHMgKyAxLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHZhbC0zOiBudWxsO1xuICAkaGFzLXZhbC0zOiBzdHItaW5kZXgoJHZhbC0yLCBcIiBcIik7XG5cbiAgQGlmICRoYXMtdmFsLTMge1xuICAgICR2YWwtMzogc3RyLXNsaWNlKCR2YWwtMiwgJGhhcy12YWwtMyArIDEsIHN0ci1sZW5ndGgoJHZhbC0yKSk7XG4gICAgJHZhbC0yOiBzdHItc2xpY2UoJHZhbC0yLCAxLCAkaGFzLXZhbC0zIC0gMSk7XG4gIH1cblxuICAkcG9zOiBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTEpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMikgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0zKTtcbiAgJHBvczogdW5xdW90ZSgkcG9zICsgXCJcIik7XG5cbiAgLy8gVXNlIG9sZCBzcGVjIGZvciB3ZWJraXRcbiAgQGlmICR2YWwtMSA9PSBcInRvXCIge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICAvLyBCcmluZyB0aGUgY29kZSB1cCB0byBzcGVjXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpIHtcbiAgQGVhY2ggJHZhbHVlIGluICRnMSwgJGcyIHtcbiAgICAkZmlyc3QtdmFsOiBudGgoJHZhbHVlLCAxKTtcbiAgICAkcG9zLXR5cGU6ICB0eXBlLW9mKCRmaXJzdC12YWwpO1xuICAgICRzcGVjLWF0LWluZGV4OiBudWxsO1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNwZWMgd2FzIHBhc3NlZCB0byBtaXhpblxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICAkc3BlYy1hdC1pbmRleDogaWYoaW5kZXgoJHZhbHVlLCBhdCksIGluZGV4KCR2YWx1ZSwgYXQpLCBmYWxzZSk7XG4gICAgfVxuICAgIEBpZiAkc3BlYy1hdC1pbmRleCB7XG4gICAgICBAaWYgJHNwZWMtYXQtaW5kZXggPiAxIHtcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJHNwZWMtYXQtaW5kZXggLSAxKSB7XG4gICAgICAgICAgJHNoYXBlLXNpemU6ICRzaGFwZS1zaXplIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRzcGVjLWF0LWluZGV4ID09IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gKCRzcGVjLWF0LWluZGV4ICsgMSkgdGhyb3VnaCBsZW5ndGgoJHZhbHVlKSB7XG4gICAgICAgICAgJHBvczogJHBvcyBudGgoJHZhbHVlLCAkaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRnMTogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJZiBub3Qgc3BlYyBjYWxjdWxhdGUgY29ycmVjdCB2YWx1ZXNcbiAgICBAZWxzZSB7XG4gICAgICBAaWYgKCRwb3MtdHlwZSAhPSBjb2xvcikgb3IgKCRmaXJzdC12YWwgIT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgICAgIEBpZiAoJHBvcy10eXBlID09IG51bWJlcilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjZW50ZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJ0b3BcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJyaWdodFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImJvdHRvbVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImxlZnRcIikge1xuXG4gICAgICAgICAgJHBvczogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICRwb3MgPT0gJGcxIHtcbiAgICAgICAgICAgICRnMTogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWxzZSBpZlxuICAgICAgICAgICAoJGZpcnN0LXZhbCA9PSBcImVsbGlwc2VcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjaXJjbGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjbG9zZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LXNpZGVcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJmYXJ0aGVzdC1jb3JuZXJcIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb250YWluXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiY292ZXJcIikge1xuXG4gICAgICAgICAgJHNoYXBlLXNpemU6ICR2YWx1ZTtcblxuICAgICAgICAgIEBpZiAkdmFsdWUgPT0gJGcxIHtcbiAgICAgICAgICAgICRnMTogbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAZWxzZSBpZiAkdmFsdWUgPT0gJGcyIHtcbiAgICAgICAgICAgICRnMjogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemU7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3MpIHtcbiAgJHNoYXBlLXNpemU6IG50aCgkZ3JhZGllbnQtcG9zLCAxKTtcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XG4gICRwb3Mtc3BlYzogaWYoJHBvcywgXCJhdCAjeyRwb3N9XCIsIG51bGwpO1xuXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XG5cbiAgLy8gQWRkIGNvbW1hXG4gIEBpZiAoJHNwZWMgIT0gXCIgIFwiKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCI7XG4gIH1cblxuICBAcmV0dXJuICRwcmUtc3BlYyAkc3BlYztcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaXMtc3BlYy1zeW50YXg6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcImF0XCIpO1xuXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xuICAgICRrZXl3b3JkOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGlzLXNwZWMtc3ludGF4IC0gMik7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XG4gICAgQHdhcm4gXCJSYWRpYWwtZ3JhZGllbnQgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBjb25mb3JtIHRvIGxhdGVzdCBzcGVjLlwiO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiBudWxsLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xuXG5AZnVuY3Rpb24gX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50cywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRwcmUtc3BlYzogbnVsbDtcbiAgJHNwZWM6IG51bGw7XG4gICR2ZW5kb3ItZ3JhZGllbnRzOiBudWxsO1xuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcbiAgICBAaWYgJGdyYWRpZW50LXBvc2l0aW9ucyB7XG4gICAgICAkcHJlLXNwZWM6IG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAxKTtcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xuICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgQGlmICR2ZW5kb3Ige1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XG4gIH1cbiAgQGVsc2UgaWYgJHZlbmRvciA9PSBmYWxzZSB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogdW5xdW90ZSgkdmVuZG9yLWdyYWRpZW50cyk7XG4gIH1cbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSkge1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHNoYXBlLXNpemUge1xuICAgIEBpZiAoJHZhbHVlID09IFwiY292ZXJcIikgb3IgKCR2YWx1ZSA9PSBcImNvbnRhaW5cIikge1xuICAgICAgJHZhbHVlOiBudWxsO1xuICAgIH1cbiAgICAkc2hhcGUtc2l6ZS1zcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skdmFsdWV9XCI7XG4gIH1cbiAgQHJldHVybiAkc2hhcGUtc2l6ZS1zcGVjO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBsaW5lYXIvcmFkaWFsLWdyYWRpZW50LXBhcnNlcnMuXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX3N0ci10by1udW0oJHN0cmluZykge1xuICAvLyBNYXRyaWNlc1xuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcblxuICAvLyBSZXN1bHRcbiAgJHJlc3VsdDogMDtcbiAgJGRpdmlkZXI6IDA7XG4gICRtaW51czogZmFsc2U7XG5cbiAgLy8gTG9vcGluZyB0aHJvdWdoIGFsbCBjaGFyYWN0ZXJzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XG4gICAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJGNoYXJhY3Rlcik7XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSBcIi1cIiB7XG4gICAgICAkbWludXM6IHRydWU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGNoYXJhY3RlciA9PSBcIi5cIiB7XG4gICAgICAkZGl2aWRlcjogMTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAgICRyZXN1bHQ6IGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcbiAgICAgIH1cblxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xuXG4gICAgICBAaWYgJGRpdmlkZXIgPT0gMCB7XG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBNb3ZlIHRoZSBkZWNpbWFsIGRvdCB0byB0aGUgbGVmdFxuICAgICAgICAkZGl2aWRlcjogJGRpdmlkZXIgKiAxMDtcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xuICAgICAgfVxuXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XG59XG4iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgkdmFsdWVzLi4uKSB7XG4gIC8vIGluZmluaXRlIHwgPG51bWJlcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJHZhbHVlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGRpcmVjdGlvbnMuLi4pIHtcbiAgLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXBsYXktc3RhdGUoJHN0YXRlcy4uLikge1xuICAvLyBydW5uaW5nIHwgcGF1c2VkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1wbGF5LXN0YXRlLCAkc3RhdGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGVsYXksICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUoJG1vZGVzLi4uKSB7XG4gIC8vIG5vbmUgfCBmb3J3YXJkcyB8IGJhY2t3YXJkcyB8IGJvdGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWZpbGwtbW9kZSwgJG1vZGVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGFwcGVhcmFuY2UoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZCgkYmFja2dyb3VuZHMuLi4pIHtcbiAgJHdlYmtpdC1iYWNrZ3JvdW5kczogKCk7XG4gICRzcGVjLWJhY2tncm91bmRzOiAoKTtcblxuICBAZWFjaCAkYmFja2dyb3VuZCBpbiAkYmFja2dyb3VuZHMge1xuICAgICR3ZWJraXQtYmFja2dyb3VuZDogKCk7XG4gICAgJHNwZWMtYmFja2dyb3VuZDogKCk7XG4gICAgJGJhY2tncm91bmQtdHlwZTogdHlwZS1vZigkYmFja2dyb3VuZCk7XG5cbiAgICBAaWYgJGJhY2tncm91bmQtdHlwZSA9PSBzdHJpbmcgb3IgJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0IHtcbiAgICAgICRiYWNrZ3JvdW5kLXN0cjogaWYoJGJhY2tncm91bmQtdHlwZSA9PSBsaXN0LCBudGgoJGJhY2tncm91bmQsIDEpLCAkYmFja2dyb3VuZCk7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJhY2tncm91bmQtc3RyLCAxLCA2KTtcblxuICAgICAgQGlmICR1cmwtc3RyID09IFwidXJsXCIge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYmFja2dyb3VuZH1cIik7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgJHNwZWMtYmFja2dyb3VuZDogICAkYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAkd2Via2l0LWJhY2tncm91bmRzOiBhcHBlbmQoJHdlYmtpdC1iYWNrZ3JvdW5kcywgJHdlYmtpdC1iYWNrZ3JvdW5kLCBjb21tYSk7XG4gICAgJHNwZWMtYmFja2dyb3VuZHM6ICAgYXBwZW5kKCRzcGVjLWJhY2tncm91bmRzLCAgICRzcGVjLWJhY2tncm91bmQsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZDogJHdlYmtpdC1iYWNrZ3JvdW5kcztcbiAgYmFja2dyb3VuZDogJHNwZWMtYmFja2dyb3VuZHM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZCBpbWFnZXMgd2l0aFxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xuICAkd2Via2l0LWltYWdlczogKCk7XG4gICRzcGVjLWltYWdlczogKCk7XG5cbiAgQGVhY2ggJGltYWdlIGluICRpbWFnZXMge1xuICAgICR3ZWJraXQtaW1hZ2U6ICgpO1xuICAgICRzcGVjLWltYWdlOiAoKTtcblxuICAgIEBpZiAodHlwZS1vZigkaW1hZ2UpID09IHN0cmluZykge1xuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkaW1hZ2UsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6ICRpbWFnZTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgJGltYWdlO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogIG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWltYWdlOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xuICAgICRzcGVjLWltYWdlczogICBhcHBlbmQoJHNwZWMtaW1hZ2VzLCAgICRzcGVjLWltYWdlLCAgIGNvbW1hKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtaW1hZ2U6ICR3ZWJraXQtaW1hZ2VzO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkc3BlYy1pbWFnZXM7XG59XG4iLCJAbWl4aW4gYm9yZGVyLWltYWdlKCRib3JkZXJzLi4uKSB7XG4gICR3ZWJraXQtYm9yZGVyczogKCk7XG4gICRzcGVjLWJvcmRlcnM6ICgpO1xuXG4gIEBlYWNoICRib3JkZXIgaW4gJGJvcmRlcnMge1xuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcbiAgICAkc3BlYy1ib3JkZXI6ICgpO1xuICAgICRib3JkZXItdHlwZTogdHlwZS1vZigkYm9yZGVyKTtcblxuICAgIEBpZiAkYm9yZGVyLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xuICAgICAgJGJvcmRlci1zdHI6IGlmKCRib3JkZXItdHlwZSA9PSBsaXN0LCBudGgoJGJvcmRlciwgMSksICRib3JkZXIpO1xuXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJvcmRlcn1cIik7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcbiAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgIH1cblxuICAgICR3ZWJraXQtYm9yZGVyczogYXBwZW5kKCR3ZWJraXQtYm9yZGVycywgJHdlYmtpdC1ib3JkZXIsIGNvbW1hKTtcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XG4gIH1cblxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogJHNwZWMtYm9yZGVycztcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgI3skcHJvcGVydHl9OiAtd2Via2l0LWNhbGMoI3skdmFsdWV9KTtcbiAgI3skcHJvcGVydHl9OiBjYWxjKCN7JHZhbHVlfSk7XG59XG4iLCJAbWl4aW4gY29sdW1ucygkYXJnOiBhdXRvKSB7XG4gIC8vIDxjb2x1bW4tY291bnQ+IHx8IDxjb2x1bW4td2lkdGg+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xuICAvLyBhdXRvIHx8IGludGVnZXJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWNvdW50LCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWdhcCgkbGVuZ3RoOiBub3JtYWwpIHtcbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xuICAvLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZmlsbCwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlKCRhcmcpIHtcbiAgLy8gPGJvcmRlci13aWR0aD4gfHwgPGJvcmRlci1zdHlsZT4gfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZSwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XG4gIC8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuICAvLyBub25lIHx8IGFsbFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tc3BhbiwgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi13aWR0aCgkbGVuZ3RoOiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi13aWR0aCwgJGxlbmd0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBmaWx0ZXIoJGZ1bmN0aW9uOiBub25lKSB7XG4gIC8vIDxmaWx0ZXItZnVuY3Rpb24+IFs8ZmlsdGVyLWZ1bmN0aW9uXSogfCBub25lXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZpbHRlciwgJGZ1bmN0aW9uLCB3ZWJraXQgc3BlYyk7XG59XG4iLCIvLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcblxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxuQG1peGluIGJveCgkb3JpZW50OiBpbmxpbmUtYXhpcywgJHBhY2s6IHN0YXJ0LCAkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1ib3g7XG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XG4gIEBpbmNsdWRlIGJveC1wYWNrKCRwYWNrKTtcbiAgQGluY2x1ZGUgYm94LWFsaWduKCRhbGlnbik7XG59XG5cbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbW96LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIElFIDEwXG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBhY2s6ICRwYWNrOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbjogc3RyZXRjaCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1hbGlnbjogJGFsaWduOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiBub3JtYWwpIHtcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKSwgMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkdmFsdWUtMjAwOTogJHZhbHVlO1xuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAkZGlyZWN0aW9uOiBub3JtYWw7XG5cbiAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuICAvLyBBbHQgdmFsdWVzXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICRhbHQtdmFsdWU6IHNpbmdsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICB9XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXdyYXAsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxuQG1peGluIGZsZXgtZmxvdygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXI6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tc2VsZiAoYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1zZWxmKCR2YWx1ZTogYXV0bykge1xuXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xuICB9XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIkBtaXhpbiBmb250LWZhY2UoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUsXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcblxuICAkZm9udC11cmwtcHJlZml4OiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpO1xuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgICAgICRmb250LWZhbWlseSxcbiAgICAgICRmaWxlLXBhdGgsXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXG4gICAgICAkZmlsZS1mb3JtYXRzLFxuICAgICAgJGZvbnQtdXJsLXByZWZpeFxuICAgICk7XG4gIH1cbn1cbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAwIHsgJHNldHRpbmdzOiBub25lOyB9XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZvbnQtZmVhdHVyZS1zZXR0aW5ncywgJHNldHRpbmdzLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxuQG1peGluIGhpZHBpKCRyYXRpbzogMS4zKSB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogI3skcmF0aW99LzEpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiByb3VuZCgkcmF0aW8gKiA5NmRwaSkpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAkcmF0aW8gKiAxZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCJAbWl4aW4gaHlwaGVucygkaHlwaGVuYXRpb246IG5vbmUpIHtcbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cbiAgQGluY2x1ZGUgcHJlZml4ZXIoaHlwaGVucywgJGh5cGhlbmF0aW9uLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xuXG4gIEBpZiAoJG1vZGUgPT0gY3Jpc3AtZWRnZXMpIHtcbiAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAvLyBJRTgrXG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO1xuICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xuICAgIGltYWdlLXJlbmRlcmluZzogY3Jpc3AtZWRnZXM7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtd2Via2l0LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLW1vemlsbGE6IHRydWUgIWdsb2JhbDtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbWljcm9zb2Z0OiAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYSAgICAgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjICAgICAgIWdsb2JhbDtcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyB7XG4gICAgQGtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJHBvcywgJGcxLCAkZzI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnMzogbnVsbCwgJGc0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzU6IG51bGwsICRnNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc3OiBudWxsLCAkZzg6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnOTogbnVsbCwgJGcxMDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG4gIC8vIERldGVjdCB3aGF0IHR5cGUgb2YgdmFsdWUgZXhpc3RzIGluICRwb3NcbiAgJHBvcy10eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRwb3Mtc3BlYzogbnVsbDtcbiAgJHBvcy1kZWdyZWU6IG51bGw7XG5cbiAgLy8gSWYgJHBvcyBpcyBtaXNzaW5nIGZyb20gbWl4aW4sIHJlYXNzaWduIHZhcnMgYW5kIGFkZCBkZWZhdWx0IHBvc2l0aW9uXG4gIEBpZiAoJHBvcy10eXBlID09IGNvbG9yKSBvciAobnRoKCRwb3MsIDEpID09IFwidHJhbnNwYXJlbnRcIikgIHtcbiAgICAkZzEwOiAkZzk7ICRnOTogJGc4OyAkZzg6ICRnNzsgJGc3OiAkZzY7ICRnNjogJGc1O1xuICAgICRnNTogJGc0OyAkZzQ6ICRnMzsgJGczOiAkZzI7ICRnMjogJGcxOyAkZzE6ICRwb3M7XG4gICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRnMSwgJGcyLCAkZzMsICRnNCwgJGc1LCAkZzYsICRnNywgJGc4LCAkZzksICRnMTA7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xuICAkcGxhY2Vob2xkZXJzOiBcIjotd2Via2l0LWlucHV0XCIgXCI6LW1velwiIFwiLW1velwiIFwiLW1zLWlucHV0XCI7XG4gIEBlYWNoICRwbGFjZWhvbGRlciBpbiAkcGxhY2Vob2xkZXJzIHtcbiAgICAmOiN7JHBsYWNlaG9sZGVyfS1wbGFjZWhvbGRlciB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJlcXVpcmVzIFNhc3MgMy4xK1xuQG1peGluIHJhZGlhbC1ncmFkaWVudCgkZzEsICRnMixcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkcG9zOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGZhbGxiYWNrOiBudWxsKSB7XG5cbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xuICAkZzE6ICBudGgoJGRhdGEsIDEpO1xuICAkZzI6ICBudGgoJGRhdGEsIDIpO1xuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xuICAkc2hhcGUtc2l6ZTogbnRoKCRkYXRhLCA0KTtcblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTdHJpcCBkZXByZWNhdGVkIGNvdmVyL2NvbnRhaW4gZm9yIHNwZWNcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZmlyc3QtY29sb3IsIDEpO1xuXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgLy8gQWRkIENvbW1hcyBhbmQgc3BhY2VzXG4gICRzaGFwZS1zaXplOiBpZigkc2hhcGUtc2l6ZSwgXCIjeyRzaGFwZS1zaXplfSwgXCIsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG4gICRzaGFwZS1zaXplLXNwZWM6IGlmKCgkc2hhcGUtc2l6ZS1zcGVjICE9IFwiIFwiKSBhbmQgKCRwb3MgPT0gbnVsbCksIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSwgXCIsIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSBcIik7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQodW5xdW90ZSgjeyRwb3N9I3skc2hhcGUtc2l6ZX0jeyRmdWxsfSkpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwicmFkaWFsLWdyYWRpZW50KCN7JHNoYXBlLXNpemUtc3BlY30jeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XHJcblxyXG4vLy8gT3V0cHV0cyB0aGUgc3BlYyBhbmQgcHJlZml4ZWQgdmVyc2lvbnMgb2YgdGhlIGA6OnNlbGVjdGlvbmAgcHNldWRvLWVsZW1lbnQuXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtCb29sfSAkY3VycmVudC1zZWxlY3RvciBbZmFsc2VdXHJcbi8vLyAgIElmIHNldCB0byBgdHJ1ZWAsIGl0IHRha2VzIHRoZSBjdXJyZW50IGVsZW1lbnQgaW50byBjb25zaWRlcmF0aW9uLlxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxyXG4vLy8gICAuZWxlbWVudCB7XHJcbi8vLyAgICAgQGluY2x1ZGUgc2VsZWN0aW9uKHRydWUpIHtcclxuLy8vICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgICAgfVxyXG4vLy8gICB9XHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxyXG4vLy8gICAuZWxlbWVudDo6LW1vei1zZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyAgIC5lbGVtZW50OjpzZWxlY3Rpb24ge1xyXG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XHJcbi8vLyAgIH1cclxuXHJcbkBtaXhpbiBzZWxlY3Rpb24oJGN1cnJlbnQtc2VsZWN0b3I6IGZhbHNlKSB7XHJcbiAgQGlmICRjdXJyZW50LXNlbGVjdG9yIHtcclxuICAgICY6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIHRleHQtZGVjb3JhdGlvbigkdmFsdWUpIHtcbi8vIDx0ZXh0LWRlY29yYXRpb24tbGluZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1zdHlsZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1jb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLCAkdmFsdWUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tbGluZSgkbGluZTogbm9uZSkge1xuLy8gbm9uZSB8fCB1bmRlcmxpbmUgfHwgb3ZlcmxpbmUgfHwgbGluZS10aHJvdWdoXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1saW5lLCAkbGluZSwgbW96KTtcbn1cblxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1zdHlsZSgkc3R5bGU6IHNvbGlkKSB7XG4vLyBzb2xpZCB8fCBkb3VibGUgfHwgZG90dGVkIHx8IGRhc2hlZCB8fCB3YXZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1zdHlsZSwgJHN0eWxlLCBtb3ogd2Via2l0KTtcbn1cblxuQG1peGluIHRleHQtZGVjb3JhdGlvbi1jb2xvcigkY29sb3I6IGN1cnJlbnRDb2xvcikge1xuLy8gY3VycmVudENvbG9yIHx8IDxjb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWNvbG9yLCAkY29sb3IsIG1veik7XG59XG4iLCJAbWl4aW4gdHJhbnNmb3JtKCRwcm9wZXJ0eTogbm9uZSkge1xuICAvLyBub25lIHwgPHRyYW5zZm9ybS1mdW5jdGlvbj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLCAkcHJvcGVydHksIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJGF4ZXM6IDUwJSkge1xuICAvLyB4LWF4aXMgLSBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgIHwgbGVuZ3RoIHwgJVxuICAvLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuICAvLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRheGVzLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBmbGF0KSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCIvLyBTaG9ydGhhbmQgbWl4aW4uIFN1cHBvcnRzIG11bHRpcGxlIHBhcmVudGhlc2VzLWRlbGltaW5hdGVkIHZhbHVlcyBmb3IgZWFjaCB2YXJpYWJsZS5cbi8vIEV4YW1wbGU6IEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAycyBlYXNlLWluLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uIChvcGFjaXR5IDFzIGVhc2UtaW4gMnMsIHdpZHRoIDJzIGVhc2Utb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tcHJvcGVydHkgKHRyYW5zZm9ybSwgb3BhY2l0eSk7XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIC8vIEZpeCBmb3IgdmVuZG9yLXByZWZpeCB0cmFuc2Zvcm0gcHJvcGVydHlcbiAgJG5lZWRzLXByZWZpeGVzOiBmYWxzZTtcbiAgJHdlYmtpdDogKCk7XG4gICRtb3o6ICgpO1xuICAkc3BlYzogKCk7XG5cbiAgLy8gQ3JlYXRlIGxpc3RzIGZvciB2ZW5kb3ItcHJlZml4ZWQgdHJhbnNmb3JtXG4gIEBlYWNoICRsaXN0IGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgbnRoKCRsaXN0LCAxKSA9PSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICRuZWVkcy1wcmVmaXhlczogdHJ1ZTtcbiAgICAgICRsaXN0MTogLXdlYmtpdC10cmFuc2Zvcm07XG4gICAgICAkbGlzdDI6IC1tb3otdHJhbnNmb3JtO1xuICAgICAgJGxpc3QzOiAoKTtcblxuICAgICAgQGVhY2ggJHZhciBpbiAkbGlzdCB7XG4gICAgICAgICRsaXN0Mzogam9pbigkbGlzdDMsICR2YXIpO1xuXG4gICAgICAgIEBpZiAkdmFyICE9IFwidHJhbnNmb3JtXCIge1xuICAgICAgICAgICRsaXN0MTogam9pbigkbGlzdDEsICR2YXIpO1xuICAgICAgICAgICRsaXN0Mjogam9pbigkbGlzdDIsICR2YXIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdDEpO1xuICAgICAgJG1vejogICAgYXBwZW5kKCRtb3osICAgICRsaXN0Mik7XG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QzKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6IGFwcGVuZCgkd2Via2l0LCAkbGlzdCwgY29tbWEpO1xuICAgICAgJG1vejogICAgYXBwZW5kKCRtb3osICAgICRsaXN0LCBjb21tYSk7XG4gICAgICAkc3BlYzogICBhcHBlbmQoJHNwZWMsICAgJGxpc3QsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJG5lZWRzLXByZWZpeGVzIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR3ZWJraXQ7XG4gICAgICAgLW1vei10cmFuc2l0aW9uOiAkbW96O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogJHNwZWM7XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJvcGVydGllczogYWxsIDAuMTVzIGVhc2Utb3V0IDBzO1xuICAgICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0aWVzLi4uKSB7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgXCJ3ZWJraXRcIik7XG4gICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgXCJtb3pcIik7XG4gICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgZmFsc2UpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKClcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZTogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcih1c2VyLXNlbGVjdCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLWNvbG9yYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItY29sb3IoI2E2MGI1NSAjNzZjZDljIG51bGwgI2U4YWUxYSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjZThhZTFhO1xuLy8vICAgICBib3JkZXItcmlnaHQtY29sb3I6ICM3NmNkOWM7XG4vLy8gICAgIGJvcmRlci10b3AtY29sb3I6ICNhNjBiNTU7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItY29sb3JgXG5cbkBtaXhpbiBib3JkZXItY29sb3IoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBjb2xvciwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXJhZGl1c2Agb24gYm90aCBjb3JuZXJzIG9uIHRoZSBzaWRlIG9mIGEgYm94LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyYWRpaVxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yYWRpdXMoNXB4KTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQtdHdvIHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWxlZnQtcmFkaXVzKDNweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudC1vbmUge1xuLy8vICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7XG4vLy8gICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4O1xuLy8vICAgfVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXJhZGl1c2BcblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItc3R5bGVgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkYXNoZWQgbnVsbCBzb2xpZCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuLy8vICAgICBib3JkZXItdG9wLXN0eWxlOiBkYXNoZWQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItc3R5bGVgXG5cbkBtaXhpbiBib3JkZXItc3R5bGUoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBzdHlsZSwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXdpZHRoYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItd2lkdGgoMWVtIG51bGwgMjBweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIwcHg7XG4vLy8gICAgIGJvcmRlci10b3Atd2lkdGg6IDFlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci13aWR0aGBcblxuQG1peGluIGJvcmRlci13aWR0aCgkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHdpZHRoLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW5lcmF0ZXMgdmFyaWFibGVzIGZvciBhbGwgYnV0dG9ucy4gUGxlYXNlIG5vdGUgdGhhdCB5b3UgbXVzdCB1c2UgaW50ZXJwb2xhdGlvbiBvbiB0aGUgdmFyaWFibGU6IGAjeyRhbGwtYnV0dG9uc31gLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAjeyRhbGwtYnV0dG9uc30ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1mb2N1c30sXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1ob3Zlcn0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtYnV0dG9ucy1hY3RpdmV9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIGJ1dHRvbixcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgYnV0dG9uOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06Zm9jdXMsXG4vLy8gICBidXR0b246aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpob3ZlciB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGJ1dHRvbjphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmFjdGl2ZSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG4vLy9cbi8vLyBAdG9kbyBSZW1vdmUgZG91YmxlIGFzc2lnbmVkIHZhcmlhYmxlcyAoTGluZXMgNTnigJM2MikgaW4gdjUuMC4wXG5cbiRidXR0b25zLWxpc3Q6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJidXR0b25cIl0nLFxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJyZXNldFwiXScsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSc7XG5cbiRhbGwtYnV0dG9uczogICAgICAgIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCk7XG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGFjdGl2ZSk7XG4kYWxsLWJ1dHRvbnMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGZvY3VzKTtcbiRhbGwtYnV0dG9ucy1ob3ZlcjogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgaG92ZXIpO1xuXG4kYWxsLWJ1dHRvbi1pbnB1dHM6ICAgICAgICAkYWxsLWJ1dHRvbnM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtYWN0aXZlOiAkYWxsLWJ1dHRvbnMtYWN0aXZlO1xuJGFsbC1idXR0b24taW5wdXRzLWZvY3VzOiAgJGFsbC1idXR0b25zLWZvY3VzO1xuJGFsbC1idXR0b24taW5wdXRzLWhvdmVyOiAgJGFsbC1idXR0b25zLWhvdmVyO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaW5jbHVkZSBhIGNsZWFyZml4IGZvciBjb250YWluaW5nIGZsb2F0cy5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9jc3Ntb2pvLmNvbS9sYXRlc3RfbmV3X2NsZWFyZml4X3NvX2Zhci9cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50OjphZnRlciB7XG4vLy8gICAgIGNsZWFyOiBib3RoO1xuLy8vICAgICBjb250ZW50OiBcIlwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFRydW5jYXRlcyB0ZXh0IGFuZCBhZGRzIGFuIGVsbGlwc2lzIHRvIHJlcHJlc2VudCBvdmVyZmxvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzEwMCVdXG4vLy8gICBNYXgtd2lkdGggZm9yIHRoZSBzdHJpbmcgdG8gcmVzcGVjdCBiZWZvcmUgYmVpbmcgdHJ1bmNhdGVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZWxsaXBzaXM7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgICAgd29yZC13cmFwOiBub3JtYWw7XG4vLy8gICB9XG5cbkBtaXhpbiBlbGxpcHNpcygkd2lkdGg6IDEwMCUpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VvcmdpYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kZ2VvcmdpYTogXCJHZW9yZ2lhXCIsIFwiQ2FtYnJpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIlRpbWVzXCIsIHNlcmlmO1xuXG4vLy8gSGVsdmV0aWNhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgXCJSb2JvdG9cIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuXG4vLy8gTHVjaWRhIEdyYW5kZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbHVjaWRhLWdyYW5kZTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiVGFob21hXCIsIFwiVmVyZGFuYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBNb25vc3BhY2UgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb25zb2xhc1wiLCBcIkNvdXJpZXJcIiwgbW9ub3NwYWNlO1xuXG4vLy8gVmVyZGFuYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kdmVyZGFuYTogXCJWZXJkYW5hXCIsIFwiR2VuZXZhXCIsIHNhbnMtc2VyaWY7XG4iLCIvLy8gSGlkZXMgdGhlIHRleHQgaW4gYW4gZWxlbWVudCwgY29tbW9ubHkgdXNlZCB0byBzaG93IGFuIGltYWdlLiBTb21lIGVsZW1lbnRzIHdpbGwgbmVlZCBibG9jay1sZXZlbCBzdHlsZXMgYXBwbGllZC5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly96ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LWluZGVudDogMTAxJTtcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBoZWlnaHQgYXJndW1lbnQgaW4gdjUuMC4wXG5cbkBtaXhpbiBoaWRlLXRleHQoJGhlaWdodDogbnVsbCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWluZGVudDogMTAxJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgJGhlaWdodCB7XG4gICAgQHdhcm4gXCJUaGUgYGhpZGUtdGV4dGAgbWl4aW4gaGFzIGNoYW5nZWQgYW5kIG5vIGxvbmdlciByZXF1aXJlcyBhIGhlaWdodC4gVGhlIGhlaWdodCBhcmd1bWVudCB3aWxsIG5vIGxvbmdlciBiZSBhY2NlcHRlZCBpbiB2NS4wLjBcIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgbWFyZ2luYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAxMHB4IDNlbSAyMHZoKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xuLy8vICAgICBtYXJnaW4tbGVmdDogMjB2aDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgbWFyZ2luYFxuXG5AbWl4aW4gbWFyZ2luKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KG1hcmdpbiwgZmFsc2UsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYHBhZGRpbmdgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBhZGRpbmcoMTJ2aCBudWxsIDEwcHggNSUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiA1JTtcbi8vLyAgICAgcGFkZGluZy10b3A6IDEydmg7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBwYWRkaW5nYFxuXG5AbWl4aW4gcGFkZGluZygkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShwYWRkaW5nLCBmYWxzZSwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHNldHRpbmcgYW4gZWxlbWVudOKAmXMgcG9zaXRpb24uIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7UG9zaXRpb259ICRwb3NpdGlvbiBbcmVsYXRpdmVdXG4vLy8gICBBIENTUyBwb3NpdGlvbiB2YWx1ZVxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkY29vcmRpbmF0ZXMgW251bGwgbnVsbCBudWxsIG51bGxdXG4vLy8gICBMaXN0IG9mIHZhbHVlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIDQtdmFsdWUgc3ludGF4IGZvciB0aGUgZWRnZXMgb2YgYSBib3hcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMCBudWxsIG51bGwgMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGxlZnQ6IDEwZW07XG4vLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vLyAgICAgdG9wOiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBpcy1sZW5ndGhcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IHVucGFja1xuXG5AbWl4aW4gcG9zaXRpb24oJHBvc2l0aW9uOiByZWxhdGl2ZSwgJGNvb3JkaW5hdGVzOiBudWxsIG51bGwgbnVsbCBudWxsKSB7XG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICRjb29yZGluYXRlczogdW5wYWNrKCRjb29yZGluYXRlcyk7XG5cbiAgJG9mZnNldHM6IChcbiAgICB0b3A6ICAgIG50aCgkY29vcmRpbmF0ZXMsIDEpLFxuICAgIHJpZ2h0OiAgbnRoKCRjb29yZGluYXRlcywgMiksXG4gICAgYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKSxcbiAgICBsZWZ0OiAgIG50aCgkY29vcmRpbmF0ZXMsIDQpXG4gICk7XG5cbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcblxuICBAZWFjaCAkb2Zmc2V0LCAkdmFsdWUgaW4gJG9mZnNldHMge1xuICAgIEBpZiBpcy1sZW5ndGgoJHZhbHVlKSB7XG4gICAgICAjeyRvZmZzZXR9OiAkdmFsdWU7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIG1peGluIGZvciBnZW5lcmF0aW5nIHZlbmRvciBwcmVmaXhlcyBvbiBub24tc3RhbmRhcmRpemVkIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXhcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXG4vLy8gICBWYWx1ZSB0byB1c2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXG4vLy8gICBQcmVmaXhlcyB0byBkZWZpbmVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItcmFkaXVzLCAxMHB4LCB3ZWJraXQgbXMgc3BlYyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1vemlsbGFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1pY3Jvc29mdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXNwZWNcblxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgIEBpZiAkcHJlZml4ID09IHdlYmtpdCB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcbiAgICAgICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbXMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1pY3Jvc29mdCB7XG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xuICAgICAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgIHtcbiAgICAgIEB3YXJuIFwiVW5yZWNvZ25pemVkIHByZWZpeDogI3skcHJlZml4fVwiO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpIHtcbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XG59XG4iLCJAbWl4aW4gcmV0aW5hLWltYWdlKCRmaWxlbmFtZSwgJGJhY2tncm91bmQtc2l6ZSwgJGV4dGVuc2lvbjogcG5nLCAkcmV0aW5hLWZpbGVuYW1lOiBudWxsLCAkcmV0aW5hLXN1ZmZpeDogXzJ4LCAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSkge1xuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cblxuICBAaW5jbHVkZSBoaWRwaSB7XG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0jeyRyZXRpbmEtc3VmZml4fS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2l6ZVxuLy8vICAgQSBsaXN0IG9mIGF0IG1vc3QgMiBzaXplIHZhbHVlcy5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSB2YWx1ZSBpbiBgJHNpemVgIGl0IGlzIHVzZWQgZm9yIGJvdGggd2lkdGggYW5kIGhlaWdodC4gQWxsIHVuaXRzIGFyZSBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZSgyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8gMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiAyZW07XG4vLy8gICAgIGhlaWdodDogMmVtO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogYXV0bztcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVmYWN0b3IgaW4gNS4wLjAgdG8gdXNlIGEgY29tbWEtc2VwYXJhdGVkIGFyZ3VtZW50XG5cbkBtaXhpbiBzaXplKCR2YWx1ZSkge1xuICAkd2lkdGg6IG50aCgkdmFsdWUsIDEpO1xuICAkaGVpZ2h0OiAkd2lkdGg7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID4gMSB7XG4gICAgJGhlaWdodDogbnRoKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAaWYgaXMtc2l6ZSgkaGVpZ2h0KSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyRoZWlnaHR9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJGhlaWdodGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XG4gIH1cblxuICBAaWYgaXMtc2l6ZSgkd2lkdGgpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHZW5lcmF0ZXMgdmFyaWFibGVzIGZvciBhbGwgdGV4dC1iYXNlZCBpbnB1dHMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLXRleHQtaW5wdXRzfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0c30ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtZm9jdXN9LFxuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWhvdmVyfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1hY3RpdmV9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXSxcbi8vLyAgIHRleHRhcmVhIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmZvY3VzLFxuLy8vICAgdGV4dGFyZWE6Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06aG92ZXIsXG4vLy8gICB0ZXh0YXJlYTpob3ZlciB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl06YWN0aXZlLFxuLy8vICAgdGV4dGFyZWE6YWN0aXZlIHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJHRleHQtaW5wdXRzLWxpc3Q6ICdpbnB1dFt0eXBlPVwiY29sb3JcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRlbFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cIndlZWtcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dDpub3QoW3R5cGVdKScsXG4gICAgICAgICAgICAgICAgICAgJ3RleHRhcmVhJztcblxuJGFsbC10ZXh0LWlucHV0czogICAgICAgIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QpO1xuJGFsbC10ZXh0LWlucHV0cy1hY3RpdmU6IGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGFjdGl2ZSk7XG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgZm9jdXMpO1xuJGFsbC10ZXh0LWlucHV0cy1ob3ZlcjogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGhvdmVyKTtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENTUyBjdWJpYy1iZXppZXIgdGltaW5nIGZ1bmN0aW9ucy4gVGltaW5nIGZ1bmN0aW9ucyBjb3VydGVzeSBvZiBqcXVlcnkuZWFzaWUgKGdpdGh1Yi5jb20vamF1a2lhL2Vhc2llKVxuLy8vXG4vLy8gVGltaW5nIGZ1bmN0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZGVtb2VkIGhlcmU6IGh0dHA6Ly9qcXVlcnl1aS5jb20vcmVzb3VyY2VzL2RlbW9zL2VmZmVjdC9lYXNpbmcuaHRtbFxuLy8vXG4vLy8gQHR5cGUgY3ViaWMtYmV6aWVyXG5cbiRlYXNlLWluLXF1YWQ6ICAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wODUsIDAuNjgwLCAwLjUzMCk7XG4kZWFzZS1pbi1jdWJpYzogICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDU1LCAwLjY3NSwgMC4xOTApO1xuJGVhc2UtaW4tcXVhcnQ6ICAgICBjdWJpYy1iZXppZXIoMC44OTUsICAwLjAzMCwgMC42ODUsIDAuMjIwKTtcbiRlYXNlLWluLXF1aW50OiAgICAgY3ViaWMtYmV6aWVyKDAuNzU1LCAgMC4wNTAsIDAuODU1LCAwLjA2MCk7XG4kZWFzZS1pbi1zaW5lOiAgICAgIGN1YmljLWJlemllcigwLjQ3MCwgIDAuMDAwLCAwLjc0NSwgMC43MTUpO1xuJGVhc2UtaW4tZXhwbzogICAgICBjdWJpYy1iZXppZXIoMC45NTAsICAwLjA1MCwgMC43OTUsIDAuMDM1KTtcbiRlYXNlLWluLWNpcmM6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAgMC4wNDAsIDAuOTgwLCAwLjMzNSk7XG4kZWFzZS1pbi1iYWNrOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgLTAuMjgwLCAwLjczNSwgMC4wNDUpO1xuXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2Utb3V0LWN1YmljOiAgICBjdWJpYy1iZXppZXIoMC4yMTUsICAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2Utb3V0LXNpbmU6ICAgICBjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKTtcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWJhY2s6ICAgICBjdWJpYy1iZXppZXIoMC4xNzUsICAwLjg4NSwgMC4zMjAsIDEuMjc1KTtcblxuJGVhc2UtaW4tb3V0LXF1YWQ6ICBjdWJpYy1iZXppZXIoMC40NTUsICAwLjAzMCwgMC41MTUsIDAuOTU1KTtcbiRlYXNlLWluLW91dC1jdWJpYzogY3ViaWMtYmV6aWVyKDAuNjQ1LCAgMC4wNDUsIDAuMzU1LCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtcXVhcnQ6IGN1YmljLWJlemllcigwLjc3MCwgIDAuMDAwLCAwLjE3NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1aW50OiBjdWJpYy1iZXppZXIoMC44NjAsICAwLjAwMCwgMC4wNzAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1zaW5lOiAgY3ViaWMtYmV6aWVyKDAuNDQ1LCAgMC4wNTAsIDAuNTUwLCAwLjk1MCk7XG4kZWFzZS1pbi1vdXQtZXhwbzogIGN1YmljLWJlemllcigxLjAwMCwgIDAuMDAwLCAwLjAwMCwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LWNpcmM6ICBjdWJpYy1iZXppZXIoMC43ODUsICAwLjEzNSwgMC4xNTAsIDAuODYwKTtcbiRlYXNlLWluLW91dC1iYWNrOiAgY3ViaWMtYmV6aWVyKDAuNjgwLCAtMC41NTAsIDAuMjY1LCAxLjU1MCk7XG4iLCJAbWl4aW4gdHJpYW5nbGUoJHNpemUsICRjb2xvciwgJGRpcmVjdGlvbikge1xuICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICRoZWlnaHQ6IG50aCgkc2l6ZSwgbGVuZ3RoKCRzaXplKSk7XG4gICRmb3JlZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAxKTtcbiAgJGJhY2tncm91bmQtY29sb3I6IGlmKGxlbmd0aCgkY29sb3IpID09IDIsIG50aCgkY29sb3IsIDIpLCB0cmFuc3BhcmVudCk7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgICR3aWR0aDogJHdpZHRoIC8gMjtcbiAgICAkaGVpZ2h0OiBpZihsZW5ndGgoJHNpemUpID4gMSwgJGhlaWdodCwgJGhlaWdodC8yKTtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB1cC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdXAtbGVmdCkge1xuICAgIGJvcmRlci10b3A6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdXAtbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0KSB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24tbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtdXApIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1kb3duKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtcmlnaHQpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1sZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGNoYW5nZSB0aGUgYHdvcmQtd3JhcGAgcHJvcGVydHkuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHdyYXAgW2JyZWFrLXdvcmRdXG4vLy8gICBWYWx1ZSBmb3IgdGhlIGB3b3JkLWJyZWFrYCBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLndyYXBwZXIge1xuLy8vICAgICBAaW5jbHVkZSB3b3JkLXdyYXAoYnJlYWstd29yZCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAud3JhcHBlciB7XG4vLy8gICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vLyAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuLy8vICAgfVxuXG5AbWl4aW4gd29yZC13cmFwKCR3cmFwOiBicmVhay13b3JkKSB7XG4gIG92ZXJmbG93LXdyYXA6ICR3cmFwO1xuICB3b3JkLXdyYXA6ICR3cmFwO1xuXG4gIEBpZiAkd3JhcCA9PSBicmVhay13b3JkIHtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIH0gQGVsc2Uge1xuICAgIHdvcmQtYnJlYWs6ICR3cmFwO1xuICB9XG59XG4iLCIvLyBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgTUFKT1IgdmVyc2lvbiByZWxlYXNlXG5cbkBtaXhpbiBpbmxpbmUtYmxvY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgLy8gQHdhcm4gXCJUaGUgaW5saW5lLWJsb2NrIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuQG1peGluIGJ1dHRvbiAoJHN0eWxlOiBzaW1wbGUsICRiYXNlLWNvbG9yOiAjNDI5NGYwLCAkdGV4dC1zaXplOiBpbmhlcml0LCAkcGFkZGluZzogMThweCkge1xuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBjb2xvciBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJGJhc2UtY29sb3I7XG4gICAgJHRleHQtc2l6ZTogJHN0eWxlO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuICAgICRzdHlsZTogc2ltcGxlO1xuXG4gICAgQGlmICRwYWRkaW5nID09ICM0Mjk0ZjAge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gICY6ZGlzYWJsZWQge1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5cbiAgLy8gQHdhcm4gXCJUaGUgYnV0dG9uIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuLy8gU2VsZWN0b3IgU3R5bGUgQnV0dG9uXG5AbWl4aW4gYnV0dG9uc3R5bGUoJHR5cGUsICRiLWNvbG9yLCAkdC1zaXplLCAkcGFkKSB7XG4gIC8vIEdyYXlzY2FsZSBidXR0b25cbiAgQGlmICR0eXBlID09IHNpbXBsZSBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgc2ltcGxlKCRiLWNvbG9yLCB0cnVlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBpZiAkdHlwZSA9PSBzaGlueSBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHBpbGwgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IGZsYXQgYW5kICRiLWNvbG9yID09IGdyYXlzY2FsZSgkYi1jb2xvcikge1xuICAgIEBpbmNsdWRlIGZsYXQoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgLy8gQ29sb3JlZCBidXR0b25cbiAgQGlmICR0eXBlID09IHNpbXBsZSB7XG4gICAgQGluY2x1ZGUgc2ltcGxlKCRiLWNvbG9yLCBmYWxzZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAZWxzZSBpZiAkdHlwZSA9PSBzaGlueSB7XG4gICAgQGluY2x1ZGUgc2hpbnkoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHBpbGwge1xuICAgIEBpbmNsdWRlIHBpbGwoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IGZsYXQge1xuICAgIEBpbmNsdWRlIGZsYXQoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxufVxuXG4vLyBTaW1wbGUgQnV0dG9uXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xNCUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTglLCAgJGxpZ2h0bmVzczogIDE1JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOSUsICAkbGlnaHRuZXNzOiAtMTElKTtcbiAgJHRleHQtc2hhZG93OiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICAxNSUsICRsaWdodG5lc3M6IC0xOCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTclLCAkbGlnaHRuZXNzOiAgNSUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAgOCUsICRsaWdodG5lc3M6IC0xNCUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDklLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogNyUsICRsaWdodG5lc3M6IC0xNyUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCBpbnNldCAwIDAgOHB4IDRweCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBTaGlueSBCdXR0b25cbkBtaXhpbiBzaGlueSgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UsICR0ZXh0c2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXIpO1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRmb3VydGgtc3RvcDogICBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzZWNvbmQtc3RvcDogICBncmF5c2NhbGUoJHNlY29uZC1zdG9wKTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gICAgJHRoaXJkLXN0b3A6ICAgIGdyYXlzY2FsZSgkdGhpcmQtc3RvcCk7XG4gIH1cblxuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkYmFzZS1jb2xvciAwJSwgJHNlY29uZC1zdG9wIDUwJSwgJHRoaXJkLXN0b3AgNTAlLCAkZm91cnRoLXN0b3AgMTAwJSk7XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xuICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNjYsICRncmVlbjogLTYyLCAkYmx1ZTogLTUxKTtcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XG4gICAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkc2Vjb25kLXN0b3AtaG92ZXIpO1xuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG9wLCAkZmlyc3Qtc3RvcC1ob3ZlciAgMCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlY29uZC1zdG9wLWhvdmVyIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcmQtc3RvcC1ob3ZlciAgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VydGgtc3RvcC1ob3ZlciAxMDAlKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuLy8gUGlsbCBCdXR0b25cbkBtaXhpbiBwaWxsKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXItYm90dG9tOiBncmF5c2NhbGUoJGJvcmRlci1ib3R0b20pO1xuICAgICRib3JkZXItc2lkZXM6ICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgJGJvcmRlci10b3A6ICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLXRvcCAkYm9yZGVyLXNpZGVzICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdztcbiAgY29sb3I6ICRjb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0ZXh0c2l6ZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaWdodG5lc3M6IC00LjUlKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxMy41JSwgJGxpZ2h0bmVzczogLTMyJSk7XG4gICAgJGJvcmRlci1zaWRlczogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMiUsICAgICRsaWdodG5lc3M6IC0yNyUpO1xuICAgICRib3JkZXItdG9wOiAgICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IC0xLCAkc2F0dXJhdGlvbjogLTE3JSwgICAkbGlnaHRuZXNzOiAtMjElKTtcbiAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgJHNhdHVyYXRpb246IC0xJSwgICAgJGxpZ2h0bmVzczogIDMlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC00JSwgICAgJGxpZ2h0bmVzczogLTE1LjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC01JSwgICAgJGxpZ2h0bmVzczogLTIyJSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGJvcmRlci1ib3R0b206ICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICAgJGJvcmRlci10b3A6ICAgICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLXRvcCk7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgICAkdGV4dC1zaGFkb3ctaG92ZXI6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdy1ob3Zlcik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvci1ob3ZlciwgJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdy1ob3ZlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDYsICAkc2F0dXJhdGlvbjogLTIuNSUsICRsaWdodG5lc3M6IC0zMCUpO1xuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNSwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTIxLjUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBncmF5c2NhbGUoJGFjdGl2ZS1jb2xvcik7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b20tYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICAgIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdy1hY3RpdmU7XG4gIH1cbn1cblxuLy8gRmxhdCBCdXR0b25cbkBtaXhpbiBmbGF0KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcblxuICBAaWYgaXMtbGlnaHQoJGJhc2UtY29sb3IpIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm9yZGVyOiAwO1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA0JSwgJGxpZ2h0bmVzczogNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYmFzZS1jb2xvci1ob3ZlcjogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWhvdmVyKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSxcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XG4gICAgJGJhc2UtY29sb3ItYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWFjdGl2ZTogZ3JheXNjYWxlKCRiYXNlLWNvbG9yLWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhc2UtY29sb3ItYWN0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4vLyBGbGV4aWJsZSBncmlkXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcblxuICAvLyBAd2FybiBcIlRoZSBmbGV4LWdyaWQgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG4vLyBGbGV4aWJsZSBndXR0ZXJcbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcblxuICAvLyBAd2FybiBcIlRoZSBmbGV4LWd1dHRlciBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xuXG4gIC8vIEB3YXJuIFwiVGhlIGdyaWQtd2lkdGggZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG5AZnVuY3Rpb24gZ29sZGVuLXJhdGlvKCR2YWx1ZSwgJGluY3JlbWVudCkge1xuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJGluY3JlbWVudCwgJHZhbHVlLCAkcmF0aW86ICRnb2xkZW4pO1xuXG4gIC8vIEB3YXJuIFwiVGhlIGdvbGRlbi1yYXRpbyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLiBQbGVhc2UgdXNlIHRoZSBtb2R1bGFyLXNjYWxlIGZ1bmN0aW9uLCBpbnN0ZWFkLlwiO1xufVxuXG5AbWl4aW4gYm94LXNpemluZygkYm94KSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gQHdhcm4gXCJUaGUgYm94LXNpemluZyBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlLiBUaGlzIHByb3BlcnR5IGNhbiBub3cgYmUgdXNlZCB1bi1wcmVmaXhlZC5cIjtcbn1cbiIsIi8vIE5lYXQgMS43LjJcbi8vIGh0dHA6Ly9uZWF0LmJvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDEyLTIwMTUgdGhvdWdodGJvdCwgaW5jLlxuLy8gTUlUIExpY2Vuc2VcblxuLy8gSGVscGVyc1xuQGltcG9ydCBcIm5lYXQtaGVscGVyc1wiO1xuXG4vLyBHcmlkXG5AaW1wb3J0IFwiZ3JpZC9wcml2YXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiZ3JpZC9vbWVnYVwiO1xuQGltcG9ydCBcImdyaWQvb3V0ZXItY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZ3JpZC9zcGFuLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJncmlkL3Jvd1wiO1xuQGltcG9ydCBcImdyaWQvc2hpZnRcIjtcbkBpbXBvcnQgXCJncmlkL3BhZFwiO1xuQGltcG9ydCBcImdyaWQvZmlsbC1wYXJlbnRcIjtcbkBpbXBvcnQgXCJncmlkL21lZGlhXCI7XG5AaW1wb3J0IFwiZ3JpZC90by1kZXByZWNhdGVcIjtcbkBpbXBvcnQgXCJncmlkL3Zpc3VhbC1ncmlkXCI7XG5AaW1wb3J0IFwiZ3JpZC9kaXNwbGF5LWNvbnRleHRcIjtcbkBpbXBvcnQgXCJncmlkL2RpcmVjdGlvbi1jb250ZXh0XCI7XG4iLCIvLyBGdW5jdGlvbnNcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9uZXctYnJlYWtwb2ludFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL2dyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy92aXN1YWwtZ3JpZFwiO1xuQGltcG9ydCBcInNldHRpbmdzL2Rpc2FibGUtd2FybmluZ3NcIjtcbiIsIi8vIE5vdCBmdW5jdGlvbiBmb3IgTGlic2FzcyBjb21wYXRpYmlsaXR5XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9saWJzYXNzL2lzc3Vlcy8zNjhcbkBmdW5jdGlvbiBpcy1ub3QoJHZhbHVlKSB7XG4gIEByZXR1cm4gaWYoJHZhbHVlLCBmYWxzZSwgdHJ1ZSk7XG59XG5cbi8vIENoZWNrcyBpZiBhIG51bWJlciBpcyBldmVuXG5AZnVuY3Rpb24gaXMtZXZlbigkaW50KSB7XG4gIEByZXR1cm4gJGludCAlIDIgPT0gMDtcbn1cblxuLy8gQ2hlY2tzIGlmIGFuIGVsZW1lbnQgYmVsb25ncyB0byBhIGxpc3Qgb3Igbm90XG5AZnVuY3Rpb24gYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEByZXR1cm4gaXMtbm90KG5vdC1iZWxvbmdzLXRvKCR0ZXN0ZWQtaXRlbSwgJGxpc3QpKTtcbn1cblxuQGZ1bmN0aW9uIG5vdC1iZWxvbmdzLXRvKCR0ZXN0ZWQtaXRlbSwgJGxpc3QpIHtcbiAgQHJldHVybiBpcy1ub3QoaW5kZXgoJGxpc3QsICR0ZXN0ZWQtaXRlbSkpO1xufVxuXG4vLyBDb250YWlucyBkaXNwbGF5IHZhbHVlXG5AZnVuY3Rpb24gY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIHtcbiAgQHJldHVybiBiZWxvbmdzLXRvKHRhYmxlLCAkcXVlcnkpXG4gICAgICAgb3IgYmVsb25ncy10byhibG9jaywgJHF1ZXJ5KVxuICAgICAgIG9yIGJlbG9uZ3MtdG8oaW5saW5lLWJsb2NrLCAkcXVlcnkpXG4gICAgICAgb3IgYmVsb25ncy10byhpbmxpbmUsICRxdWVyeSk7XG59XG5cbi8vIFBhcnNlcyB0aGUgZmlyc3QgYXJndW1lbnQgb2Ygc3Bhbi1jb2x1bW5zKClcbkBmdW5jdGlvbiBjb250YWluZXItc3Bhbigkc3BhbjogJHNwYW4pIHtcbiAgQGlmIGxlbmd0aCgkc3BhbikgPT0gMyB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNwYW4sIDMpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc3BhbikgPT0gMiB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNwYW4sIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQHJldHVybiAkZ3JpZC1jb2x1bW5zO1xufVxuXG5AZnVuY3Rpb24gY29udGFpbmVyLXNoaWZ0KCRzaGlmdDogJHNoaWZ0KSB7XG4gICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZGVmYXVsdCAhZ2xvYmFsO1xuXG4gIEBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDMpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hpZnQpID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMik7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAcmV0dXJuICRwYXJlbnQtY29sdW1ucztcbn1cblxuLy8gR2VuZXJhdGVzIGEgc3RyaXBlZCBiYWNrZ3JvdW5kXG5AZnVuY3Rpb24gZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucywgJGNvbG9yOiAkdmlzdWFsLWdyaWQtY29sb3IpIHtcbiAgJHRyYW5zcGFyZW50OiB0cmFuc3BhcmVudDtcblxuICAkY29sdW1uLXdpZHRoOiBmbGV4LWdyaWQoMSwgJGdyaWQtY29sdW1ucyk7XG4gICRndXR0ZXItd2lkdGg6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMpO1xuICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi13aWR0aDtcblxuICAkdmFsdWVzOiAoJHRyYW5zcGFyZW50IDAsICRjb2xvciAwKTtcblxuICBAZm9yICRpIGZyb20gMSB0byAkZ3JpZC1jb2x1bW5zKjIge1xuICAgIEBpZiBpcy1ldmVuKCRpKSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICRjb2xvciAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR0cmFuc3BhcmVudCAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJGNvbHVtbi1vZmZzZXQ6ICRjb2x1bW4tb2Zmc2V0ICsgJGd1dHRlci13aWR0aDtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIExheW91dCBkaXJlY3Rpb25cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQsICRkZWZhdWx0KSB7XG4gICRkaXJlY3Rpb246IG51bGw7XG5cbiAgQGlmIHRvLXVwcGVyLWNhc2UoJGxheW91dCkgPT0gXCJMVFJcIiBvciB0by11cHBlci1jYXNlKCRsYXlvdXQpID09IFwiUlRMXCIge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KTtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRkZWZhdWx0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KSB7XG4gICRkaXJlY3Rpb246IG51bGw7XG5cbiAgQGlmIHRvLXVwcGVyLWNhc2UoJGxheW91dCkgPT0gXCJMVFJcIiB7XG4gICAgJGRpcmVjdGlvbjogcmlnaHQ7XG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGxlZnQ7XG4gIH1cblxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbkBmdW5jdGlvbiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogbGVmdDtcblxuICBAaWYgJGRpcmVjdGlvbiA9PSBcImxlZnRcIiB7XG4gICAgJG9wcG9zaXRlLWRpcmVjdGlvbjogcmlnaHQ7XG4gIH1cblxuICBAcmV0dXJuICRvcHBvc2l0ZS1kaXJlY3Rpb247XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBSZXR1cm5zIGEgbWVkaWEgY29udGV4dCAobWVkaWEgcXVlcnkgLyBncmlkIGNvbnRleHQpIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIHZhcmlhYmxlIGFuZCBwYXNzZWQgdG8gYG1lZGlhKClgIGFzIGEgc2luZ2xlLWtleXdvcmQgYXJndW1lbnQuIE1lZGlhIGNvbnRleHRzIGRlZmluZWQgdXNpbmcgYG5ldy1icmVha3BvaW50YCBhcmUgdXNlZCBieSB0aGUgdmlzdWFsIGdyaWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgZGVmaW5lZCBiZWZvcmUgaW1wb3J0aW5nIE5lYXQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRxdWVyeVxuLy8vICAgQSBsaXN0IG9mIG1lZGlhIHF1ZXJ5IGZlYXR1cmVzIGFuZCB2YWx1ZXMuIEVhY2ggYCRmZWF0dXJlYCBzaG91bGQgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgYCR2YWx1ZWAuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgYCR2YWx1ZWAgaW4gYCRxdWVyeWAsIGAkZGVmYXVsdC1mZWF0dXJlYCBpcyBnb2luZyB0byBiZSB1c2VkLlxuLy8vXG4vLy8gICBUaGUgbnVtYmVyIG9mIHRvdGFsIGNvbHVtbnMgaW4gdGhlIGdyaWQgY2FuIGJlIHNldCBieSBwYXNzaW5nIGAkY29sdW1uc2AgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAob3ZlcnJpZGVzIGAkdG90YWwtY29sdW1uc2ApLiBGb3IgYSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgYCRmZWF0dXJlYCwgY2xpY2sgW2hlcmVdKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNtZWRpYTEpLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKHVuaXRsZXNzKX0gJHRvdGFsLWNvbHVtbnMgWyRncmlkLWNvbHVtbnNdXG4vLy8gICAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBpbiB0aGUgbmV3IGdyaWQgY29udGV4dC4gQ2FuIGJlIHNldCBhcyBhIHNob3J0aGFuZCBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAkbW9iaWxlOiBuZXctYnJlYWtwb2ludChtYXgtd2lkdGggNDgwcHggNCk7XG4vLy9cbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgbWVkaWEoJG1vYmlsZSkge1xuLy8vICAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbi8vLyAgICAgLmVsZW1lbnQge1xuLy8vICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICAgIG1hcmdpbi1yaWdodDogNy40MjI5NyU7XG4vLy8gICAgICAgd2lkdGg6IDEwMCU7XG4vLy8gICAgIH1cbi8vLyAgICAgLmVsZW1lbnQ6bGFzdC1jaGlsZCB7XG4vLy8gICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgICB9XG4vLy8gICB9XG5cbkBmdW5jdGlvbiBuZXctYnJlYWtwb2ludCgkcXVlcnk6ICRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgICRxdWVyeTogJGRlZmF1bHQtZmVhdHVyZSBudGgoJHF1ZXJ5LCAxKSAkdG90YWwtY29sdW1ucztcbiAgfSBAZWxzZSBpZiBpcy1ldmVuKGxlbmd0aCgkcXVlcnkpKSB7XG4gICAgJHF1ZXJ5OiBhcHBlbmQoJHF1ZXJ5LCAkdG90YWwtY29sdW1ucyk7XG4gIH1cblxuICBAaWYgaXMtbm90KGJlbG9uZ3MtdG8oJHF1ZXJ5LCAkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHMpKSB7XG4gICAgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzOiBhcHBlbmQoJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzLCAkcXVlcnksIGNvbW1hKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSByZWxhdGl2ZSB3aWR0aCBvZiBhIHNpbmdsZSBncmlkIGNvbHVtbi4gVGhlIHVuaXQgdXNlZCBzaG91bGQgYmUgdGhlIHNhbWUgb25lIHVzZWQgdG8gZGVmaW5lIGAkZ3V0dGVyYC4gVG8gbGVhcm4gbW9yZSBhYm91dCBtb2R1bGFyLXNjYWxlKCkgc2VlIFtCb3VyYm9uIGRvY3NdKGh0dHA6Ly9ib3VyYm9uLmlvL2RvY3MvI21vZHVsYXItc2NhbGUpLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuXG4kY29sdW1uOiBtb2R1bGFyLXNjYWxlKDMsIDFlbSwgJGdvbGRlbikgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSByZWxhdGl2ZSB3aWR0aCBvZiBhIHNpbmdsZSBncmlkIGd1dHRlci4gVGhlIHVuaXQgdXNlZCBzaG91bGQgYmUgdGhlIHNhbWUgb25lIHVzZWQgdG8gZGVmaW5lIGAkY29sdW1uYC4gVG8gbGVhcm4gbW9yZSBhYm91dCBtb2R1bGFyLXNjYWxlKCkgc2VlIFtCb3VyYm9uIGRvY3NdKGh0dHA6Ly9ib3VyYm9uLmlvL2RvY3MvI21vZHVsYXItc2NhbGUpLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKFVuaXQpXG5cbiRndXR0ZXI6IG1vZHVsYXItc2NhbGUoMSwgMWVtLCAkZ29sZGVuKSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBncmlkLiBJdHMgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gaW5zaWRlIGEgbWVkaWEgcXVlcnkgdXNpbmcgdGhlIGBtZWRpYSgpYCBtaXhpbi4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0bGVzcylcblxuJGdyaWQtY29sdW1uczogMTIgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBtYXgtd2lkdGggcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgdGhhdCBpbmNsdWRlcyBgb3V0ZXItY29udGFpbmVyKClgLiBUbyBsZWFybiBtb3JlIGFib3V0IGBlbSgpYCBzZWUgW0JvdXJib24gZG9jc10oaHR0cDovL2JvdXJib24uaW8vZG9jcy8jcHgtdG8tZW0pLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKFVuaXQpXG4vLy9cbiRtYXgtd2lkdGg6IGVtKDEwODgpICFkZWZhdWx0O1xuXG4vLy8gV2hlbiBzZXQgdG8gdHJ1ZSwgaXQgc2V0cyB0aGUgYm94LXNpemluZyBwcm9wZXJ0eSBvZiBhbGwgZWxlbWVudHMgdG8gYGJvcmRlci1ib3hgLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgaHRtbCB7XG4vLy8gICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbi8vL1xuLy8vICAgKiwgKjo6YWZ0ZXIsICo6OmJlZm9yZSB7XG4vLy8gICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4vLy8gICB9XG5cbiRib3JkZXItYm94LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIGRlZmF1bHQgW21lZGlhIGZlYXR1cmVdKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNtZWRpYSkgdGhhdCBgbWVkaWEoKWAgYW5kIGBuZXctYnJlYWtwb2ludCgpYCByZXZlcnQgdG8gd2hlbiBvbmx5IGEgYnJlYWtwb2ludCB2YWx1ZSBpcyBwYXNzZWQuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcblxuJGRlZmF1bHQtZmVhdHVyZTogbWluLXdpZHRoOyAvLyBEZWZhdWx0IEBtZWRpYSBmZWF0dXJlIGZvciB0aGUgYnJlYWtwb2ludCgpIG1peGluXG5cbi8vL1NldHMgdGhlIGRlZmF1bHQgbGF5b3V0IGRpcmVjdGlvbiBvZiB0aGUgZ3JpZC4gQ2FuIGJlIGBMVFJgIG9yIGBSVExgLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy9AdHlwZSBTdHJpbmdcblxuJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbjogTFRSICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlzcGxheXMgdGhlIHZpc3VhbCBncmlkIHdoZW4gc2V0IHRvIHRydWUuIFRoZSBvdmVybGFpZCBncmlkIG1heSBiZSBmZXcgcGl4ZWxzIG9mZiBkZXBlbmRpbmcgb24gdGhlIGJyb3dzZXIncyByZW5kZXJpbmcgZW5naW5lIGFuZCBwaXhlbCByb3VuZGluZyBhbGdvcml0aG0uIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJHZpc3VhbC1ncmlkOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHZpc3VhbCBncmlkIGNvbG9yLiBTZXQgd2l0aCBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIENvbG9yXG5cbiR2aXN1YWwtZ3JpZC1jb2xvcjogI2VlZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIGB6LWluZGV4YCBwcm9wZXJ0eSBvZiB0aGUgdmlzdWFsIGdyaWQuIENhbiBiZSBgYmFja2AgKGJlaGluZCBjb250ZW50KSBvciBgZnJvbnRgIChpbiBmcm9udCBvZiBjb250ZW50KS4gU2V0IHdpdGggYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBTdHJpbmdcblxuJHZpc3VhbC1ncmlkLWluZGV4OiBiYWNrICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgb3BhY2l0eSBwcm9wZXJ0eSBvZiB0aGUgdmlzdWFsIGdyaWQuIFNldCB3aXRoIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyICh1bml0bGVzcylcblxuJHZpc3VhbC1ncmlkLW9wYWNpdHk6IDAuNCAhZGVmYXVsdDtcblxuJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERpc2FibGUgYWxsIGRlcHJlY2F0aW9uIHdhcm5pbmdzLiBEZWZhdWx0cyB0byBgZmFsc2VgLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kZGlzYWJsZS13YXJuaW5nczogZmFsc2UgIWRlZmF1bHQ7XG5cbkBtaXhpbiAtbmVhdC13YXJuKCRtZXNzYWdlKSB7XG4gIEBpZiAkZGlzYWJsZS13YXJuaW5ncyA9PSBmYWxzZSB7XG4gICAgQHdhcm4gXCIjeyRtZXNzYWdlfVwiO1xuICB9XG59XG4iLCIkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQ7XG4kZmctY29sdW1uOiAkY29sdW1uO1xuJGZnLWd1dHRlcjogJGd1dHRlcjtcbiRmZy1tYXgtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2UgIWRlZmF1bHQ7XG4kbGF5b3V0LWRpcmVjdGlvbjogTFRSICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlciAvICRjb250YWluZXItd2lkdGgpO1xufVxuXG5AZnVuY3Rpb24gZ3JpZC13aWR0aCgkbikge1xuICBAcmV0dXJuICRuICogJGd3LWNvbHVtbiArICgkbiAtIDEpICogJGd3LWd1dHRlcjtcbn1cblxuQGZ1bmN0aW9uIGdldC1wYXJlbnQtY29sdW1ucygkY29sdW1ucykge1xuICBAaWYgJGNvbHVtbnMgIT0gJGdyaWQtY29sdW1ucyB7XG4gICAgJHBhcmVudC1jb2x1bW5zOiAkY29sdW1ucyAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG5AZnVuY3Rpb24gaXMtZGlzcGxheS10YWJsZSgkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUsICRkaXNwbGF5KSB7XG4gIEByZXR1cm4gJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlID09IHRydWUgb3IgJGRpc3BsYXkgPT0gdGFibGU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBpZiAkYm9yZGVyLWJveC1zaXppbmcgPT0gdHJ1ZSB7XG4gIGh0bWwgeyAvLyBodHRwOi8vYml0Lmx5LzFxazJ0VlJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgKiB7XG4gICAgJixcbiAgICAmOjphZnRlcixcbiAgICAmOjpiZWZvcmUge1xuICAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFJlbW92ZXMgdGhlIGVsZW1lbnQncyBndXR0ZXIgbWFyZ2luLCByZWdhcmRsZXNzIG9mIGl0cyBwb3NpdGlvbiBpbiB0aGUgZ3JpZCBoaWVyYXJjaHkgb3IgZGlzcGxheSBwcm9wZXJ0eS4gSXQgY2FuIHRhcmdldCBhIHNwZWNpZmljIGVsZW1lbnQsIG9yIGV2ZXJ5IGBudGgtY2hpbGRgIG9jY3VycmVuY2UuIFdvcmtzIG9ubHkgd2l0aCBgYmxvY2tgIGxheW91dHMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRxdWVyeSBbYmxvY2tdXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50cy4gU3VwcG9ydGVkIGFyZ3VtZW50cyBhcmUgYG50aC1jaGlsZGAgc2VsZWN0b3JzICh0YXJnZXRzIGEgc3BlY2lmaWMgcHNldWRvIGVsZW1lbnQpIGFuZCBgYXV0b2AgKHRhcmdldHMgYGxhc3QtY2hpbGRgKS5cbi8vL1xuLy8vICAgV2hlbiBwYXNzZWQgYW4gYG50aC1jaGlsZGAgYXJndW1lbnQgb2YgdHlwZSBgKm5gIHdpdGggYGJsb2NrYCBkaXNwbGF5LCB0aGUgb21lZ2EgbWl4aW4gYXV0b21hdGljYWxseSBhZGRzIGEgY2xlYXIgdG8gdGhlIGAqbisxYCB0aCBlbGVtZW50LiBOb3RlIHRoYXQgY29tcG9zaXRlIGFyZ3VtZW50cyBzdWNoIGFzIGAybisxYCBkbyBub3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuXG4vLy9cbi8vLyAgICoqRGVwcmVjYXRpb24gd2FybmluZyoqOiBUaGUgb21lZ2EgbWl4aW4gd2lsbCBubyBsb25nZXIgdGFrZSBhIGAkZGlyZWN0aW9uYCBhcmd1bWVudC4gVG8gY2hhbmdlIHRoZSBsYXlvdXQgZGlyZWN0aW9uLCB1c2UgYHJvdygkZGlyZWN0aW9uKWAgb3Igc2V0IGAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uYCBpbnN0ZWFkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG9tZWdhO1xuLy8vICAgfVxuLy8vXG4vLy8gICAubnRoLWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBvbWVnYSg0bik7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLm50aC1lbGVtZW50Om50aC1jaGlsZCg0bikge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5udGgtZWxlbWVudDpudGgtY2hpbGQoNG4rMSkge1xuLy8vICAgICBjbGVhcjogbGVmdDtcbi8vLyAgIH1cblxuQG1peGluIG9tZWdhKCRxdWVyeTogYmxvY2ssICRkaXJlY3Rpb246IGRlZmF1bHQpIHtcbiAgJHRhYmxlOiBiZWxvbmdzLXRvKHRhYmxlLCAkcXVlcnkpO1xuICAkYXV0bzogYmVsb25ncy10byhhdXRvLCAkcXVlcnkpO1xuXG4gIEBpZiAkZGlyZWN0aW9uICE9IGRlZmF1bHQge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgb21lZ2EgbWl4aW4gd2lsbCBubyBsb25nZXIgdGFrZSBhICRkaXJlY3Rpb24gYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIHRoZSBkaXJlY3Rpb24oKXsuLi59IG1peGluLlwiKTtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gIH1cblxuICBAaWYgJHRhYmxlIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIG9tZWdhIG1peGluIG5vIGxvbmdlciByZW1vdmVzIHBhZGRpbmcgaW4gdGFibGUgbGF5b3V0cy5cIik7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSBhbmQgJHRhYmxlID09IGZhbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgJGF1dG8ge1xuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQobnRoKCRxdWVyeSwgMSksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRvbyBtYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG9tZWdhKCkgbWl4aW4uXCIpO1xuICB9XG59XG5cbkBtaXhpbiBudGgtY2hpbGQoJHF1ZXJ5LCAkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgJjpudGgtY2hpbGQoI3skcXVlcnl9KSB7XG4gICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciBhbmQgdW5pdCgkcXVlcnkpID09IFwiblwiIHtcbiAgICAmOm50aC1jaGlsZCgjeyRxdWVyeX0rMSkge1xuICAgICAgY2xlYXI6ICRvcHBvc2l0ZS1kaXJlY3Rpb247XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNYWtlcyBhbiBlbGVtZW50IGEgb3V0ZXIgY29udGFpbmVyIGJ5IGNlbnRyaW5nIGl0IGluIHRoZSB2aWV3cG9ydCwgY2xlYXJpbmcgaXRzIGZsb2F0cywgYW5kIHNldHRpbmcgaXRzIGBtYXgtd2lkdGhgLlxuLy8vIEFsdGhvdWdoIG9wdGlvbmFsLCB1c2luZyBgb3V0ZXItY29udGFpbmVyYCBpcyByZWNvbW1lbmRlZC4gVGhlIG1peGluIGNhbiBiZSBjYWxsZWQgb24gbW9yZSB0aGFuIG9uZSBlbGVtZW50IHBlciBwYWdlLCBhcyBsb25nIGFzIHRoZXkgYXJlIG5vdCBuZXN0ZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciBbdW5pdF19ICRsb2NhbC1tYXgtd2lkdGggWyRtYXgtd2lkdGhdXG4vLy8gICBNYXggd2lkdGggdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gQ2FuIGJlIGEgcGVyY2VudGFnZSBvciBhIG1lYXN1cmUuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb3V0ZXItY29udGFpbmVyKDEwMCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICAqem9vbTogMTtcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xuLy8vICAgICBtYXJnaW4tbGVmdDogYXV0bztcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudDpiZWZvcmUsIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgICAgY29udGVudDogXCIgXCI7XG4vLy8gICAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudDphZnRlciB7XG4vLy8gICAgIGNsZWFyOiBib3RoO1xuLy8vICAgfVxuXG5AbWl4aW4gb3V0ZXItY29udGFpbmVyKCRsb2NhbC1tYXgtd2lkdGg6ICRtYXgtd2lkdGgpIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1heC13aWR0aDogJGxvY2FsLW1heC13aWR0aDtcbiAgbWFyZ2luOiB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY29sdW1ucyBhbiBlbGVtZW50IHNob3VsZCBzcGFuLiBJZiB0aGUgc2VsZWN0b3IgaXMgbmVzdGVkIHRoZSBudW1iZXIgb2YgY29sdW1ucyBvZiBpdHMgcGFyZW50IGVsZW1lbnQgc2hvdWxkIGJlIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBhcyB3ZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc3BhblxuLy8vICAgQSBsaXN0IGNvbnRhaW5pbmcgYCRjb2x1bW5zYCwgdGhlIHVuaXRsZXNzIG51bWJlciBvZiBjb2x1bW5zIHRoZSBlbGVtZW50IHNwYW5zIChyZXF1aXJlZCksIGFuZCBgJGNvbnRhaW5lci1jb2x1bW5zYCwgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBwYXJlbnQgZWxlbWVudCBzcGFucyAob3B0aW9uYWwpLlxuLy8vXG4vLy8gICBJZiBvbmx5IG9uZSB2YWx1ZSBpcyBwYXNzZWQsIGl0IGlzIGFzc3VtZWQgdGhhdCBpdCdzIGAkY29sdW1uc2AgYW5kIHRoYXQgdGhhdCBgJGNvbnRhaW5lci1jb2x1bW5zYCBpcyBlcXVhbCB0byBgJGdyaWQtY29sdW1uc2AsIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC5cbi8vL1xuLy8vICAgVGhlIHZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIHdpdGggYW55IHN0cmluZyBzdWNoIGFzIGBvZmAsIGAvYCwgZXRjLlxuLy8vXG4vLy8gICBgJGNvbHVtbnNgIGFsc28gYWNjZXB0cyBkZWNpbWFscyBmb3Igd2hlbiBpdCdzIG5lY2Vzc2FyeSB0byBicmVhayBvdXQgb2YgdGhlIHN0YW5kYXJkIGdyaWQuIEUuZy4gUGFzc2luZyBgMi40YCBpbiBhIHN0YW5kYXJkIDEyIGNvbHVtbiBncmlkIHdpbGwgZGl2aWRlIHRoZSByb3cgaW50byA1IGNvbHVtbnMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW2Jsb2NrXVxuLy8vICAgU2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudC4gQnkgZGVmYXVsdCBpdCBzZXRzIHRoZSBkaXNwbGF5IHByb3BlcnQgb2YgdGhlIGVsZW1lbnQgdG8gYGJsb2NrYC5cbi8vL1xuLy8vICAgSWYgcGFzc2VkIGBibG9jay1jb2xsYXBzZWAsIGl0IGFsc28gcmVtb3ZlcyB0aGUgbWFyZ2luIGd1dHRlciBieSBhZGRpbmcgaXQgdG8gdGhlIGVsZW1lbnQgd2lkdGguXG4vLy9cbi8vLyAgIElmIHBhc3NlZCBgdGFibGVgLCBpdCBzZXRzIHRoZSBkaXNwbGF5IHByb3BlcnR5IHRvIGB0YWJsZS1jZWxsYCBhbmQgY2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQgd2l0aG91dCB0YWtpbmcgZ3V0dGVycyBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSByZXN1bHQgZG9lcyBub3QgYWxpZ24gd2l0aCB0aGUgYmxvY2stYmFzZWQgZ3JpZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy9cbi8vLyAgICAubmVzdGVkLWVsZW1lbnQge1xuLy8vICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDIgb2YgNik7XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAyLjM1NzY1JTtcbi8vLyAgICAgd2lkdGg6IDQ4LjgyMTE3JTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6bGFzdC1jaGlsZCB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQgLm5lc3RlZC1lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDQuODI5MTYlO1xuLy8vICAgICB3aWR0aDogMzAuMTEzODklO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudCAubmVzdGVkLWVsZW1lbnQ6bGFzdC1jaGlsZCB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cblxuQG1peGluIHNwYW4tY29sdW1ucygkc3BhbjogJGNvbHVtbnMgb2YgJGNvbnRhaW5lci1jb2x1bW5zLCAkZGlzcGxheTogYmxvY2spIHtcbiAgJGNvbHVtbnM6IG50aCgkc3BhbiwgMSk7XG4gICRjb250YWluZXItY29sdW1uczogY29udGFpbmVyLXNwYW4oJHNwYW4pO1xuXG4gICRwYXJlbnQtY29sdW1uczogZ2V0LXBhcmVudC1jb2x1bW5zKCRjb250YWluZXItY29sdW1ucykgIWdsb2JhbDtcblxuICAkZGlyZWN0aW9uOiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQtZGlyZWN0aW9uLCAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKTtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKTtcblxuICAkZGlzcGxheS10YWJsZTogaXMtZGlzcGxheS10YWJsZSgkY29udGFpbmVyLWRpc3BsYXktdGFibGUsICRkaXNwbGF5KTtcblxuICBAaWYgJGRpc3BsYXktdGFibGUgIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW5zIC8gJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgfSBAZWxzZSB7XG4gICAgZmxvYXQ6ICN7JG9wcG9zaXRlLWRpcmVjdGlvbn07XG5cbiAgICBAaWYgJGRpc3BsYXkgIT0gbm8tZGlzcGxheSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBAaWYgJGRpc3BsYXkgPT0gY29sbGFwc2Uge1xuICAgICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSAnY29sbGFwc2UnIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZC4gVXNlICdibG9jay1jb2xsYXBzZScgaW5zdGVhZC5cIik7XG4gICAgfVxuXG4gICAgQGlmICRkaXNwbGF5ID09IGNvbGxhcHNlIG9yICRkaXNwbGF5ID09IGJsb2NrLWNvbGxhcHNlIHtcbiAgICAgIHdpZHRoOiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1ucykgKyBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuICAgICAgfVxuXG4gICAgfSBAZWxzZSB7XG4gICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIHdpZHRoOiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1ucyk7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGVzaWduYXRlcyB0aGUgZWxlbWVudCBhcyBhIHJvdyBvZiBjb2x1bW5zIGluIHRoZSBncmlkIGxheW91dC4gSXQgY2xlYXJzIHRoZSBmbG9hdHMgb24gdGhlIGVsZW1lbnQgYW5kIHNldHMgaXRzIGRpc3BsYXkgcHJvcGVydHkuIFJvd3MgY2FuJ3QgYmUgbmVzdGVkLCBidXQgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgcm93IGVsZW1lbnTigJR3aXRoIGRpZmZlcmVudCBkaXNwbGF5IHByb3BlcnRpZXPigJRwZXIgbGF5b3V0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtkZWZhdWx0XVxuLy8vICBTZXRzIHRoZSBkaXNwbGF5IHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGFuZCB0aGUgZGlzcGxheSBjb250ZXh0IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IGl0cyBjaGlsZHJlbi4gQ2FuIGJlIGBibG9ja2Agb3IgYHRhYmxlYC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlyZWN0aW9uIFskZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uXVxuLy8vICBTZXRzIHRoZSBsYXlvdXQgZGlyZWN0aW9uLiBDYW4gYmUgYExUUmAgKGxlZnQtdG8tcmlnaHQpIG9yIGBSVExgIChyaWdodC10by1sZWZ0KS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgcm93KCk7XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgICp6b29tOiAxO1xuLy8vICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICB9XG4vLy9cbi8vLyAuZWxlbWVudDpiZWZvcmUsIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgIGNvbnRlbnQ6IFwiIFwiO1xuLy8vICAgZGlzcGxheTogdGFibGU7XG4vLy8gfVxuLy8vXG4vLy8gLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgY2xlYXI6IGJvdGg7XG4vLy8gfVxuXG5AbWl4aW4gcm93KCRkaXNwbGF5OiBkZWZhdWx0LCAkZGlyZWN0aW9uOiAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uICE9ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24ge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgJGRpcmVjdGlvbiBhcmd1bWVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXJlY3Rpb24oKXsuLi59IG1peGluLlwiKTtcbiAgfVxuXG4gICRsYXlvdXQtZGlyZWN0aW9uOiAkZGlyZWN0aW9uICFnbG9iYWw7XG5cbiAgQGlmICRkaXNwbGF5ICE9IGRlZmF1bHQge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgJGRpc3BsYXkgYXJndW1lbnQgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlzcGxheSgpey4uLn0gbWl4aW4uXCIpO1xuICB9XG5cbiAgQGlmICRkaXNwbGF5ID09IHRhYmxlIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBAaW5jbHVkZSBmaWxsLXBhcmVudDtcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogdHJ1ZSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFnbG9iYWw7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFRyYW5zbGF0ZXMgYW4gZWxlbWVudCBob3Jpem9udGFsbHkgYnkgYSBudW1iZXIgb2YgY29sdW1ucy4gUG9zaXRpdmUgYXJndW1lbnRzIHNoaWZ0IHRoZSBlbGVtZW50IHRvIHRoZSBhY3RpdmUgbGF5b3V0IGRpcmVjdGlvbiwgd2hpbGUgbmVnYXRpdmUgb25lcyBzaGlmdCBpdCB0byB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKHVuaXRsZXNzKX0gJG4tY29sdW1ucyBbMV1cbi8vLyAgIE51bWJlciBvZiBjb2x1bW5zIGJ5IHdoaWNoIHRoZSBlbGVtZW50IHNoaWZ0cy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaGlmdCgtMyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1Mgb3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAtMjUuNTg5NDElO1xuLy8vICAgfVxuXG5AbWl4aW4gc2hpZnQoJG4tY29sdW1uczogMSkge1xuICBAaW5jbHVkZSBzaGlmdC1pbi1jb250ZXh0KCRuLWNvbHVtbnMpO1xufVxuXG4vLy8gVHJhbnNsYXRlcyBhbiBlbGVtZW50IGhvcml6b250YWxseSBieSBhIG51bWJlciBvZiBjb2x1bW5zLCBpbiBhIHNwZWNpZmljIG5lc3RpbmcgY29udGV4dC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNoaWZ0XG4vLy8gICBBIGxpc3QgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdG8gc2hpZnQgKGAkY29sdW1uc2ApIGFuZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgdGhlIHBhcmVudCBlbGVtZW50IChgJGNvbnRhaW5lci1jb2x1bW5zYCkuXG4vLy9cbi8vLyAgIFRoZSB0d28gdmFsdWVzIGNhbiBiZSBzZXBhcmF0ZWQgd2l0aCBhbnkgc3RyaW5nIHN1Y2ggYXMgYG9mYCwgYC9gLCBldGMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2hpZnQoLTMgb2YgNik7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1Mgb3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiAtNTIuNDE0NTglO1xuLy8vICAgfVxuXG5AbWl4aW4gc2hpZnQtaW4tY29udGV4dCgkc2hpZnQ6ICRjb2x1bW5zIG9mICRjb250YWluZXItY29sdW1ucykge1xuICAkbi1jb2x1bW5zOiBudGgoJHNoaWZ0LCAxKTtcbiAgJHBhcmVudC1jb2x1bW5zOiBjb250YWluZXItc2hpZnQoJHNoaWZ0KSAhZ2xvYmFsO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gIG1hcmdpbi0jeyRvcHBvc2l0ZS1kaXJlY3Rpb259OiAkbi1jb2x1bW5zICogZmxleC1ncmlkKDEsICRwYXJlbnQtY29sdW1ucykgKyAkbi1jb2x1bW5zICogZmxleC1ndXR0ZXIoJHBhcmVudC1jb2x1bW5zKTtcblxuICAvLyBSZXNldCBuZXN0aW5nIGNvbnRleHRcbiAgJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBZGRzIHBhZGRpbmcgdG8gdGhlIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRwYWRkaW5nIFtmbGV4LWd1dHRlcigpXVxuLy8vICAgQSBsaXN0IG9mIHBhZGRpbmcgdmFsdWUocykgdG8gdXNlLiBQYXNzaW5nIGBkZWZhdWx0YCBpbiB0aGUgbGlzdCB3aWxsIHJlc3VsdCBpbiB1c2luZyB0aGUgZ3V0dGVyIHdpZHRoIGFzIGEgcGFkZGluZyB2YWx1ZS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwYWQoMzBweCAtMjBweCAxMHB4IGRlZmF1bHQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBwYWRkaW5nOiAzMHB4IC0yMHB4IDEwcHggMi4zNTc2NSU7XG4vLy8gICB9XG5cbkBtaXhpbiBwYWQoJHBhZGRpbmc6IGZsZXgtZ3V0dGVyKCkpIHtcbiAgJHBhZGRpbmctbGlzdDogbnVsbDtcbiAgQGVhY2ggJHZhbHVlIGluICRwYWRkaW5nIHtcbiAgICAkdmFsdWU6IGlmKCR2YWx1ZSA9PSAnZGVmYXVsdCcsIGZsZXgtZ3V0dGVyKCksICR2YWx1ZSk7XG4gICAgJHBhZGRpbmctbGlzdDogam9pbigkcGFkZGluZy1saXN0LCAkdmFsdWUpO1xuICB9XG4gIHBhZGRpbmc6ICRwYWRkaW5nLWxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBGb3JjZXMgdGhlIGVsZW1lbnQgdG8gZmlsbCBpdHMgcGFyZW50IGNvbnRhaW5lci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBmaWxsLXBhcmVudDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IDEwMCU7XG4vLy8gICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4vLy8gICB9XG5cbkBtaXhpbiBmaWxsLXBhcmVudCgpIHtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGlmICRib3JkZXItYm94LXNpemluZyA9PSBmYWxzZSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gT3V0cHV0cyBhIG1lZGlhLXF1ZXJ5IGJsb2NrIHdpdGggYW4gb3B0aW9uYWwgZ3JpZCBjb250ZXh0ICh0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgZ3JpZCkuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRxdWVyeVxuLy8vICAgQSBsaXN0IG9mIG1lZGlhIHF1ZXJ5IGZlYXR1cmVzIGFuZCB2YWx1ZXMsIHdoZXJlIGVhY2ggYCRmZWF0dXJlYCBzaG91bGQgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgYCR2YWx1ZWAuXG4vLy8gICBGb3IgYSBsaXN0IG9mIHZhbGlkIHZhbHVlcyBmb3IgYCRmZWF0dXJlYCwgY2xpY2sgW2hlcmVdKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNtZWRpYTEpLlxuLy8vXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGAkdmFsdWVgIGluIGAkcXVlcnlgLCBgJGRlZmF1bHQtZmVhdHVyZWAgaXMgZ29pbmcgdG8gYmUgdXNlZC5cbi8vL1xuLy8vICAgVGhlIG51bWJlciBvZiB0b3RhbCBjb2x1bW5zIGluIHRoZSBncmlkIGNhbiBiZSBzZXQgYnkgcGFzc2luZyBgJGNvbHVtbnNgIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKG92ZXJyaWRlcyBgJHRvdGFsLWNvbHVtbnNgKS5cbi8vL1xuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKHVuaXRsZXNzKX0gJHRvdGFsLWNvbHVtbnMgWyRncmlkLWNvbHVtbnNdXG4vLy8gICAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZSBpbiB0aGUgbmV3IGdyaWQgY29udGV4dC4gQ2FuIGJlIHNldCBhcyBhIHNob3J0aGFuZCBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAucmVzcG9uc2l2ZS1lbGVtZW50IHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKDc2OXB4KSB7XG4vLy8gICAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vICAubmV3LWNvbnRleHQtZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbWVkaWEobWluLXdpZHRoIDMyMHB4IG1heC13aWR0aCA0ODBweCwgNikge1xuLy8vICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuLy8vICAgIC5yZXNwb25zaXZlLWVsZW1lbnQge1xuLy8vICAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogMi4zNTc2NSU7XG4vLy8gICAgICB3aWR0aDogNDguODIxMTclO1xuLy8vICAgIH1cbi8vL1xuLy8vICAgIC5yZXNwb25zaXZlLWVsZW1lbnQ6bGFzdC1jaGlsZCB7XG4vLy8gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzIwcHgpIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuLy8vICAgIC5uZXctY29udGV4dC1lbGVtZW50IHtcbi8vLyAgICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICBtYXJnaW4tcmlnaHQ6IDQuODI5MTYlO1xuLy8vICAgICAgd2lkdGg6IDEwMCU7XG4vLy8gICAgfVxuLy8vXG4vLy8gICAgLm5ldy1jb250ZXh0LWVsZW1lbnQ6bGFzdC1jaGlsZCB7XG4vLy8gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICAgfVxuLy8vICB9XG5cbkBtaXhpbiBtZWRpYSgkcXVlcnk6ICRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnMgIWdsb2JhbDtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbG9vcC10bzogbGVuZ3RoKCRxdWVyeSk7XG4gICAgJG1lZGlhLXF1ZXJ5OiBcInNjcmVlbiBhbmQgXCI7XG4gICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zICFnbG9iYWw7XG5cbiAgICBAaWYgaXMtbm90KGlzLWV2ZW4obGVuZ3RoKCRxdWVyeSkpKSB7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCAkbG9vcC10bykgIWdsb2JhbDtcbiAgICAgICRsb29wLXRvOiAkbG9vcC10byAtIDE7XG4gICAgfVxuXG4gICAgJGk6IDE7XG4gICAgQHdoaWxlICRpIDw9ICRsb29wLXRvIHtcbiAgICAgICRtZWRpYS1xdWVyeTogJG1lZGlhLXF1ZXJ5ICsgXCIoXCIgKyBudGgoJHF1ZXJ5LCAkaSkgKyBcIjogXCIgKyBudGgoJHF1ZXJ5LCAkaSArIDEpICsgXCIpIFwiO1xuXG4gICAgICBAaWYgKCRpICsgMSkgIT0gJGxvb3AtdG8ge1xuICAgICAgICAkbWVkaWEtcXVlcnk6ICRtZWRpYS1xdWVyeSArIFwiYW5kIFwiO1xuICAgICAgfVxuXG4gICAgICAkaTogJGkgKyAyO1xuICAgIH1cblxuICAgIEBtZWRpYSAjeyRtZWRpYS1xdWVyeX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnMgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBicmVha3BvaW50KCkgbWl4aW4gd2FzIHJlbmFtZWQgdG8gbWVkaWEoKSBpbiBOZWF0IDEuMC4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByb2plY3Qgd2l0aCB0aGUgbmV3IHN5bnRheCBiZWZvcmUgdGhlIG5leHQgdmVyc2lvbiBidW1wLlwiKTtcblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKCRkZWZhdWx0LWZlYXR1cmU6IG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAzIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCAzKTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSA0IHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSBhbmQgKG50aCgkcXVlcnksIDMpOiBudGgoJHF1ZXJ5LCA0KSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gNSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkgYW5kIChudGgoJHF1ZXJ5LCAzKTogbnRoKCRxdWVyeSwgNCkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksIDUpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgYnJlYWtwb2ludCgpLiBSZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuXCIpO1xuICB9XG59XG5cbkBtaXhpbiBudGgtb21lZ2EoJG50aCwgJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgbnRoLW9tZWdhKCkgbWl4aW4gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBvbWVnYSgpIGluc3RlYWQuXCIpO1xuICBAaW5jbHVkZSBvbWVnYSgkbnRoICRkaXNwbGF5LCAkZGlyZWN0aW9uKTtcbn1cblxuLy8vIFJlc2V0cyB0aGUgYWN0aXZlIGRpc3BsYXkgcHJvcGVydHkgdG8gYGJsb2NrYC4gUGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIGNoYW5naW5nIHRoZSBkaXNwbGF5IHByb3BlcnR5IGluIGEgc2luZ2xlIHJvdy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSByb3codGFibGUpO1xuLy8vICAgICAvLyBDb250ZXh0IGNoYW5nZWQgdG8gdGFibGUgZGlzcGxheVxuLy8vICAgfVxuLy8vXG4vLy8gICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuLy8vICAgLy8gQ29udGV4dCBpcyByZXNldCB0byBibG9jayBkaXNwbGF5XG5cbkBtaXhpbiByZXNldC1kaXNwbGF5IHtcbiAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiUmVzZXR0aW5nICRkaXNwbGF5IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpc3BsYXkoKXsuLi59IG1peGluLlwiKTtcbn1cblxuLy8vIFJlc2V0cyB0aGUgYWN0aXZlIGxheW91dCBkaXJlY3Rpb24gdG8gdGhlIGRlZmF1bHQgdmFsdWUgc2V0IGluIGAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uYC4gUGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIGNoYW5naW5nIHRoZSBsYXlvdXQgZGlyZWN0aW9uIGluIGEgc2luZ2xlIHJvdy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSByb3coJGRpcmVjdGlvbjogUlRMKTtcbi8vLyAgICAgLy8gQ29udGV4dCBjaGFuZ2VkIHRvIHJpZ2h0LXRvLWxlZnRcbi8vLyAgIH1cbi8vL1xuLy8vICAgQGluY2x1ZGUgcmVzZXQtbGF5b3V0LWRpcmVjdGlvbjtcbi8vLyAgIC8vIENvbnRleHQgaXMgcmVzZXQgdG8gbGVmdC10by1yaWdodFxuXG5AbWl4aW4gcmVzZXQtbGF5b3V0LWRpcmVjdGlvbiB7XG4gICRsYXlvdXQtZGlyZWN0aW9uOiAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uICFnbG9iYWw7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJSZXNldHRpbmcgJGRpcmVjdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXJlY3Rpb24oKXsuLi59IG1peGluLlwiKTtcbn1cblxuLy8vIFJlc2V0cyBib3RoIHRoZSBhY3RpdmUgbGF5b3V0IGRpcmVjdGlvbiBhbmQgdGhlIGFjdGl2ZSBkaXNwbGF5IHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHJvdyh0YWJsZSwgUlRMKTtcbi8vLyAgICAgLy8gQ29udGV4dCBjaGFuZ2VkIHRvIHRhYmxlIHRhYmxlIGFuZCByaWdodC10by1sZWZ0XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJlc2V0LWFsbDtcbi8vLyAgIC8vIENvbnRleHQgaXMgcmVzZXQgdG8gYmxvY2sgZGlzcGxheSBhbmQgbGVmdC10by1yaWdodFxuXG5AbWl4aW4gcmVzZXQtYWxsIHtcbiAgQGluY2x1ZGUgcmVzZXQtZGlzcGxheTtcbiAgQGluY2x1ZGUgcmVzZXQtbGF5b3V0LWRpcmVjdGlvbjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuQG1peGluIGdyaWQtY29sdW1uLWdyYWRpZW50KCR2YWx1ZXMuLi4pIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgI3skdmFsdWVzfSlcIik7XG59XG5cbkBpZiAkdmlzdWFsLWdyaWQgPT0gdHJ1ZSBvciAkdmlzdWFsLWdyaWQgPT0geWVzIHtcbiAgYm9keTpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLWdyYWRpZW50KGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMpKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgb3BhY2l0eTogJHZpc3VhbC1ncmlkLW9wYWNpdHk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgQGlmICR2aXN1YWwtZ3JpZC1pbmRleCA9PSBiYWNrIHtcbiAgICAgIHotaW5kZXg6IC0xO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICR2aXN1YWwtZ3JpZC1pbmRleCA9PSBmcm9udCB7XG4gICAgICB6LWluZGV4OiA5OTk5O1xuICAgIH1cblxuICAgIEBlYWNoICRicmVha3BvaW50IGluICR2aXN1YWwtZ3JpZC1icmVha3BvaW50cyB7XG4gICAgICBAaWYgJGJyZWFrcG9pbnQge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLWdyYWRpZW50KGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hhbmdlcyB0aGUgZGlzcGxheSBwcm9wZXJ0eSB1c2VkIGJ5IG90aGVyIG1peGlucyBjYWxsZWQgaW4gdGhlIGNvZGUgYmxvY2sgYXJndW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW2Jsb2NrXVxuLy8vICAgRGlzcGxheSB2YWx1ZSB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYmxvY2suIENhbiBiZSBgdGFibGVgIG9yIGBibG9ja2AuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gICBAaW5jbHVkZSBkaXNwbGF5LWNvbnRleHQodGFibGUpIHtcbi8vLyAgICAuZGlzcGxheS10YWJsZSB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmRpc3BsYXktdGFibGUge1xuLy8vICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbi8vLyAgICAgIC4uLlxuLy8vICAgfVxuXG5AbWl4aW4gZGlzcGxheS1jb250ZXh0KCRkaXNwbGF5OiBibG9jaykge1xuICAkc2NvcGUtZGlzcGxheTogJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlO1xuICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6ICRkaXNwbGF5ID09IHRhYmxlICFnbG9iYWw7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiAkc2NvcGUtZGlzcGxheSAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hhbmdlcyB0aGUgZGlyZWN0aW9uIHByb3BlcnR5IHVzZWQgYnkgb3RoZXIgbWl4aW5zIGNhbGxlZCBpbiB0aGUgY29kZSBibG9jayBhcmd1bWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlyZWN0aW9uIFtsZWZ0LXRvLXJpZ2h0XVxuLy8vICAgTGF5b3V0IGRpcmVjdGlvbiB0byBiZSB1c2VkIHdpdGhpbiB0aGUgYmxvY2suIENhbiBiZSBgbGVmdC10by1yaWdodGAgb3IgYHJpZ2h0LXRvLWxlZnRgLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBAaW5jbHVkZSBkaXJlY3Rpb24tY29udGV4dChyaWdodC10by1sZWZ0KSB7XG4vLy8gICAgLnJpZ2h0LXRvLWxlZnQtYmxvY2sge1xuLy8vICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAucmlnaHQtdG8tbGVmdC1ibG9jayB7XG4vLy8gICAgIGZsb2F0OiByaWdodDtcbi8vLyAgICAgIC4uLlxuLy8vICAgfVxuXG5AbWl4aW4gZGlyZWN0aW9uLWNvbnRleHQoJGRpcmVjdGlvbjogbGVmdC10by1yaWdodCkge1xuICAkc2NvcGUtZGlyZWN0aW9uOiAkbGF5b3V0LWRpcmVjdGlvbjtcblxuICBAaWYgdG8tbG93ZXItY2FzZSgkZGlyZWN0aW9uKSA9PSBcImxlZnQtdG8tcmlnaHRcIiB7XG4gICAgJGxheW91dC1kaXJlY3Rpb246IExUUiAhZ2xvYmFsO1xuICB9IEBlbHNlIGlmIHRvLWxvd2VyLWNhc2UoJGRpcmVjdGlvbikgPT0gXCJyaWdodC10by1sZWZ0XCIge1xuICAgICRsYXlvdXQtZGlyZWN0aW9uOiBSVEwgIWdsb2JhbDtcbiAgfVxuXG4gIEBjb250ZW50O1xuXG4gICRsYXlvdXQtZGlyZWN0aW9uOiAkc2NvcGUtZGlyZWN0aW9uICFnbG9iYWw7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFzcyBEZWZhdWx0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJvcmRlciBSYWRpdXNcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogNXB4O1xuXG4vLyBUcmFuc2l0aW9uXG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHk6IGFsbDtcbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDIwMG1zO1xuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogbGluZWFyO1xuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogMDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmltYXJ5IEJyZWFrIFBvaW50c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIGJwIChtYXgtd2lkdGgsIHh4KSBtaXhpblxuLy8gd2hlcmUgYSBtaW4td2lkdGggaXMgdXNlZCwgcmVtZW1iZXIgdG8gKzEgdG8gYnJlYWsgY29ycmVjdGx5LlxuLy8gSWYgdGhlc2UgYXJlIGNoYW5nZWQsIHRoZXkgbXVzdCBhbHNvIGJlIHVwZGF0ZWQgaW4gYXBwLmpzXG5cbiRicC14c21hbGw6IDQ3OXB4O1xuJGJwLXNtYWxsOiA1OTlweDtcbiRicC1tZWRpdW06IDc3MHB4O1xuJGJwLWxhcmdlOiA5NzlweDtcbiRicC14bGFyZ2U6IDExOTlweDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYXNlIFZhbHVlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFNwYWNpbmdcblxuJGdhcDogMTBweDtcblxuJHRyaW06IDMwcHg7XG4vLyBUaGlzIHdpbGwgZ2V0IGFwcGxpZWQgb24gdmlld3BvcnRzIHNtYWxsZXIgdGhhbiA0ODBweFxuJHRyaW0tc21hbGw6IDE1cHg7XG5cbi8vIFBhZGRpbmcgdGhhdCB3aWxsIGdldCBhcHBsaWVkIHRvIGNvbnRlbnQgYXJlYXNcbiRib3gtc3BhY2luZy1sYXJnZTogMjBweDtcblxuLy8gU3RhbmRhcmQgcGFkZGluZyBhcm91bmQgYm94IGVsZW1lbnRzIHN1Y2ggYXMgYmFubmVyIG1lc3NhZ2VzLCBldGNcbiRib3gtc3BhY2luZzogMTBweDtcblxuLy8gU3RhbmRhcmQgc3BhY2luZyBiZXR3ZWVuIGVsZW1lbnRzIHdpdGhpbiBhIGJveCwgc3VjaCBhcyBcIkFkZCB0byBjYXJ0XCIsIFwiUHJpY2UgYm94XCIsIGV0Y1xuJGVsZW1lbnQtc3BhY2luZzogN3B4O1xuXG4vLyBEaW1lbnNpb25zXG5cbiRtYXgtY29udGVudC13aWR0aDogMTIwMHB4O1xuJG1heC1jb250YWluZXItd2lkdGg6ICR0cmltICsgJG1heC1jb250ZW50LXdpZHRoICsgJHRyaW07XG4kbWF4LXN0ZC1mb3JtYXR0ZWQtd2lkdGg6IDUwZW07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQnJhbmQgQ29sb3JzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXN1YWxseSBub3QgdXNlZCBkaXJlY3RseSBpbiBTYXNzIHBhcnRpYWxzLlxuLy8gT25seSB1c2VkIHRvIGRlZmluZSBjb250ZXh0LWJhc2VkIGNvbG9yIHZhcnMgaW4gdGhpcyBmaWxlLlxuXG4kYy1ibHVlOiAjZmRiODEzO1xuJGMtZ3JlZW46ICMxMUI0MDA7XG4kYy1waW5rOiAjRDg1Mzc4O1xuJGMtb3JhbmdlOiAjRjM3OTNCO1xuJGMtcmVkOiAjQ0Y1MDUwO1xuJGMteWVsbG93OiAjRkZERDE1O1xuJGMteWVsbG93LWVubmlzOiAjZmRiODEzO1xuJGMteWVsbG93LWVubmlzLWRhcmtlcjogI2Y3YjM0MDtcbiRjLWJsYWNrOiAjMDAwMDAwO1xuJGMtYmxhY2stdGV4dC1jb250YWN0OiAjMDMwMzAzO1xuJGMtYmxhY2stYmctbWVnYS1tZW51OiAjMjAyMDIwO1xuJGMtZ3JheTogIzMzMzMzMztcblxuJHByaW1hcnktY29sb3I6ICRjLWJsdWU7XG5cdFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYXNlIENvbG9yc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRleHRcblxuJGMtdGV4dDogIzYzNjM2MztcbiRjLXRleHQtZ3JheTogI0EwQTBBMDtcbiRjLXRleHQtd2hpdGU6ICNFNkU2RTY7XG4kYy13aGl0ZS10ZXh0LWZvb3RlcjogI2ZjZmNmYztcbiRjLWNvcHlyaWdodC10ZXh0OiAjODY4NTg0O1xuLy8gUHJpbWFyeSBmb250IGNvbG9yIGZvciBoZWFkaW5ncyBhbmQgb3RoZXIgbm9uLWxpbmsgdGV4dFxuJGMtdGV4dC1wcmltYXJ5OiAkYy1ibHVlO1xuJGMtdGV4dC1oZWFkZXItbGlua3M6ICNmY2ZjZmM7XG4kYy10ZXh0LWZvb3Rlci1oZWFkZXJzOiAkYy15ZWxsb3ctZW5uaXM7XG4kYy1yZWQtZW5uaXM6ICM5OTAwMDA7XG5cblxuLy8gSW50ZXJhY3Rpb25cblxuJGMtYWN0aW9uOiAkYy1ibHVlO1xuJGMtc3RpbXVsdXM6IGRhcmtlbigkYy1ibHVlLCAxNSUpO1xuJGMtc3VidGxlOiAjQTBBMEEwO1xuXG4vLyBOb3RpZmljYXRpb25zXG5cbiRjLWRhbmdlcjogI0RGMjgwQTtcbiRjLWRhbmdlci1iYWNrZ3JvdW5kOiAjRkFFQkU3O1xuXG4kYy1zdWNjZXNzOiAkYy1ncmVlbjtcbiRjLXN1Y2Nlc3MtYmFja2dyb3VuZDogI0VGRjVFQTtcblxuJGMtd2FybjogI0UyNjcwMztcbiRjLXdhcm4tYmFja2dyb3VuZDogI0Y5RUJFNjtcblxuJGMtZGFyazogIzY3NjE1NztcblxuLy8gR2xvYmFsIEVsZW1lbnRzXG5cbiRjLWRpdmlkZXItYm9yZGVyOiAjRUNFQ0VDO1xuJGMtc2VwYXJhdG9yLWhlYWRlci1saW5rczogIzM5MzkzOTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbGVtZW50IENvbG9yc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJ1dHRvbnNcblxuJGMtYnV0dG9uOiAkYy1ibHVlO1xuJGMtYnV0dG9uLWhvdmVyOiBkYXJrZW4oJGMtYmx1ZSwgNSUpO1xuJGMtYnV0dG9uLWFjdGl2ZTogZGFya2VuKCRjLWJsdWUsIDEwJSk7XG5cbi8vIFNlY29uZGFyeSBCdXR0b25zXG5cbiRjLWJ1dHRvbi1zZWNvbmRhcnk6ICNEREREREQ7XG4kYy1idXR0b24tc2Vjb25kYXJ5LWhvdmVyOiBkYXJrZW4oI0RERERERCwgNSUpO1xuJGMtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmU6IGRhcmtlbigjRERERERELCAxMCUpO1xuXG4kYy1idXR0b24tc3VidGxlOiAjRUNFQ0VDO1xuJGMtYnV0dG9uLW5ld3NsZXR0ZXI6ICRjLXllbGxvdy1lbm5pcztcbiRjLWJ1dHRvbi1uZXdzbGV0dGVyLWJvcmRlcjogJGMteWVsbG93LWVubmlzO1xuXG4vLyBGb3Jtc1xuXG4kYy1pbnB1dC1ib3JkZXI6ICNDMEMwQzA7XG4kYy1pbnB1dC1ib3JkZXItZm9jdXM6ICRjLWJsdWU7XG5cbiRjLWlucHV0LXBsYWNlaG9sZGVyOiAkYy10ZXh0LWdyYXk7XG4kYy1pbnB1dC10ZXh0OiAkYy10ZXh0O1xuXG4kYy1maWVsZHNldC1ib3JkZXI6ICNDQ0NDQ0M7XG4kYy1maWVsZHNldC1ib3JkZXItbGlnaHQ6ICNFREVERUQ7XG5cblxuLy8gSGVhZGluZ3NcblxuJGMtaDE6ICRjLXllbGxvdy1lbm5pcy1kYXJrZXI7XG4kYy1oMjogJGMteWVsbG93LWVubmlzLWRhcmtlcjtcbiRjLWgzOiAkYy15ZWxsb3ctZW5uaXMtZGFya2VyO1xuJGMtaDQ6ICRjLXllbGxvdy1lbm5pcy1kYXJrZXI7XG4kYy1oNTogJGMteWVsbG93LWVubmlzLWRhcmtlcjtcbiRjLWg2OiAkYy15ZWxsb3ctZW5uaXMtZGFya2VyO1xuXG4vLyBMaW5rXG4kYy1saW5rOiAkYy1hY3Rpb247XG4kYy1saW5rLWhvdmVyOiBkYXJrZW4oJGMtYWN0aW9uLCA1JSk7XG4kYy1saW5rLWZvY3VzOiAkYy1hY3Rpb247XG4kYy1saW5rLWFjdGl2ZTogZGFya2VuKCRjLWFjdGlvbiwgKDUlIC8gMikpO1xuXG4vLyBNb2R1bGUgKGdlbmVyaWMpXG5cbiRjLW1vZHVsZS1iYWNrZ3JvdW5kOiAjRjRGNEY0O1xuJGMtbW9kdWxlLWJhY2tncm91bmQtaG92ZXI6IHNoYWRlKCRjLW1vZHVsZS1iYWNrZ3JvdW5kLCAzJSk7XG4kYy1tb2R1bGUtYmFja2dyb3VuZC1zZWNvbmRhcnk6ICNFQUY4RkY7XG4kYy1tb2R1bGUtYmFja2dyb3VuZC1kYXJrOiAjQUFBQUFBO1xuLy8gVGhpcyBzaG91bGQgYmUgYXBwbGllZCB3aGVuZXZlciB0aGUgYm9yZGVyIGlzIHN1cnJvdW5kaW5nIGEgd2hpdGUgZWxlbWVudCBhbmQvb3IgaXMgZGlyZWN0bHkgc2hvd2luZyBvbiB3aGl0ZS5cbiRjLW1vZHVsZS1ib3JkZXI6ICNDQ0NDQ0M7XG4vLyBUaGlzIHNob3VsZCBiZSBhcHBsaWVkIHdoZW5ldmVyIHRoZSBib3JkZXIgaXMgd3JhcHBpbmcgYW4gZWxlbWVudCB3aXRoICRjLW1vZHVsZS1iYWNrZ3JvdW5kXG4kYy1tb2R1bGUtYm9yZGVyLWxpZ2h0OiAjRURFREVEO1xuJGMtbW9kdWxlLWJvcmRlci1kYXJrOiAjNzc3Nzc3O1xuJGMtbW9kdWxlLWJvcmRlci1oaWdobGlnaHQ6ICRjLWJsdWU7XG5cblxuLy8gVGFibGVcblxuJGMtdGFibGUtYmFja2dyb3VuZDogI0Y0RjRGNDtcbiRjLXRhYmxlLWJvcmRlcjogI0MwQzBDMDtcblxuJGMtdGFibGUtemVicmEtb2RkOiAjRjhGN0Y1O1xuJGMtdGFibGUtemVicmEtZXZlbjogI0VFRURFRDtcblxuLy8gVGFic1xuXG4kYy10YWJzLWJhY2tncm91bmQ6ICNGMEYwRjA7XG5cbi8vIEVtYWlsXG4kYy1lbWFpbC1iYWNrZ3JvdW5kOiAjRUJFQkVCO1xuJGMtZW1haWwtYmFja2dyb3VuZC1zZWNvbmRhcnk6ICNFMUYwRjg7XG4kYy1lbWFpbC1ib3JkZXI6ICNDM0NFRDQ7XG4kYy1lbWFpbC1hY3Rpb246ICRjLXllbGxvdy1lbm5pcztcbiRjLWVtYWlsLWNlbGw6ICNGMUYxRjE7XG4kYy1lbWFpbC1oaWdobGlnaHRlZC1iYWNrZ3JvdW5kOiAjRkZGREQ5O1xuJGMtZW1haWwtaGlnaGxpZ2h0ZWQtYm9yZGVyOiAjRkZGNzRDO1xuXG5cbi8vIFplYnJhIHN0eWxlXG4kYy16ZWJyYS1ncmV5OiAjRjZGNkY2O1xuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVHlwb2dyYXBoeVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdvb2dsZSBXZWIgRm9udCBzdHlsZXNoZWV0IGlzIGluY2x1ZGVkIHZpYSBsYXlvdXQgWE1MXG5cbi8vIEZvbnQgU3RhY2tzXG5cbiRmLXN0YWNrLXNhbnM6ICdMYXRvJywgc2Fucy1zZXJpZjtcbiRmLXN0YWNrLXNlcmlmOiAnTGF0bycsIHNhbnMtc2VyaWY7XG4kZi1zdGFjay1zcGVjaWFsOiAnTGF0bycsIHNhbnMtc2VyaWY7XG5cbiRmLXN0YWNrLWRlZmF1bHQ6ICRmLXN0YWNrLXNhbnM7XG5cbi8vIEZvbnQgU2l6ZXNcblxuJGYtc2l6ZS14eGw6IDE4cHg7XG4kZi1zaXplLXhsOiAxNnB4O1xuJGYtc2l6ZS1sOiAxNXB4O1xuXG4kZi1zaXplOiAxNHB4O1xuXG4kZi1zaXplLXM6IDEzcHg7XG4kZi1zaXplLXhzOiAxMnB4O1xuJGYtc2l6ZS14eHM6IDExcHg7XG5cbi8vIEJhc2UgTWVhc3VyZXNcblxuJGItbGluZS1oZWlnaHQ6IDEuNTtcbiRiLW1hcmdpbi1ib3R0b206IDEuNWVtO1xuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZ1bmN0aW9uIC0gQmxhY2tcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AZnVuY3Rpb24gYmxhY2sgKCRvcGFjaXR5KSB7XG4gICAgQHJldHVybiByZ2JhKDAsIDAsIDAsICRvcGFjaXR5KTtcbn1cblxuQGZ1bmN0aW9uIGJsYWNrLWZhbGxiYWNrICgkb3BhY2l0eSkge1xuICAgIEByZXR1cm4gbGlnaHRlbigjMDAwMDAwLCAoMSAtICRvcGFjaXR5KSk7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRnVuY3Rpb24gLSBXaGl0ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBmdW5jdGlvbiB3aGl0ZSAoJG9wYWNpdHkpIHtcbiAgICBAcmV0dXJuIHJnYmEoMjU1LCAyNTUsIDI1NSwgJG9wYWNpdHkpO1xufVxuXG5AZnVuY3Rpb24gd2hpdGUtZmFsbGJhY2sgKCRvcGFjaXR5KSB7XG4gICAgQHJldHVybiBkYXJrZW4oI0ZGRkZGRiwgKDEgLSAkb3BhY2l0eSkpO1xufVxuIiwiLyogXG5cdFRoaXMgbWl4aW4gaXMgbWVhbnQgZm9yIHVzIHRvIGFuaW1hdGlvbiBpbiBlbGVtZW50cyBcblx0ZnJvbSB0aGUgZGlyZWN0aW9uIG9mIGFuIGVsZW1lbnQgb24gdGhlIHBhZ2UuXG5cdFxuKi9cbkBtaXhpbiBtZW51VG9nZ2xlKCRuYW1lLCAkeS1wb3NpdGlvbiwgJHgtcG9zaXRpb24pIHtcbiAgQGtleWZyYW1lcyAjeyRuYW1lfSB7ICAgICBcbiAgICBmcm9tIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgkeS1wb3NpdGlvbiwgJHgtcG9zaXRpb24pIHNjYWxlKC4yKTtcbiAgICB9XG4gIFxuICAgIHRvIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTtcbiAgICB9XHRcbiAgfVxufSIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIEJyZWFrcG9pbnRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kbXEtc3VwcG9ydDogdHJ1ZSAhZGVmYXVsdDtcbiRtcS1maXhlZC12YWx1ZTogMTAyNHB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gYnAoJGZlYXR1cmUsICR2YWx1ZSkge1xuICAgIC8vIFNldCBnbG9iYWwgZGV2aWNlIHBhcmFtXG4gICAgJG1lZGlhOiBvbmx5IHNjcmVlbjtcblxuICAgIC8vIE1lZGlhIHF1ZXJpZXMgc3VwcG9ydGVkXG4gICAgQGlmICRtcS1zdXBwb3J0ID09IHRydWUge1xuXG4gICAgICAgIEBtZWRpYSAjeyRtZWRpYX0gYW5kICgkZmVhdHVyZTogJHZhbHVlKSB7XG4gICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1lZGlhIHF1ZXJpZXMgbm90IHN1cHBvcnRlZFxuICAgIH0gQGVsc2Uge1xuXG4gICAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLXdpZHRoJyB7XG4gICAgICAgICAgICBAaWYgJHZhbHVlIDw9ICRtcS1maXhlZC12YWx1ZSB7XG4gICAgICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2UgaWYgJGZlYXR1cmUgPT0gJ21heC13aWR0aCcge1xuICAgICAgICAgICAgQGlmICR2YWx1ZSA+PSAkbXEtZml4ZWQtdmFsdWUge1xuICAgICAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG59XG5cbi8qXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVc2FnZSBleGFtcGxlOlxuLy8gRm9yIElFIHNldCAkbXEtc3VwcG9ydCB0byBmYWxzZS5cbi8vIFNldCB0aGUgZml4ZWQgdmFsdWUuXG4vLyBUaGVuIHVzZSBtaXhpbnMgdG8gdGVzdCB3aGV0aGVyIHN0eWxlcyBzaG91bGQgYmUgYXBwbGllZC5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJG1xLXN1cHBvcnQ6IGZhbHNlO1xuJG1xLWZpeGVkLXZhbHVlOiAxMDI0O1xuXG4vLyBSZW5kZXJzIGF0IGZpeGVkIHZhbHVlXG5AaW5jbHVkZSBicCAobWluLXdpZHRoLCAzMDBweCkgeyBcbiAgICBkaXYgeyBjb2xvcjojMDAwOyB9XG59XG5cbi8vIERvZXNuJ3QgcmVuZGVyIHdpdGhvdXQgTVEgc3VwcG9ydFxuQGluY2x1ZGUgYnAgKG1pbi13aWR0aCwgMTIwMHB4KSB7IFxuICAgIGRpdiB7IGNvbG9yOiNGRkY7IH1cbn1cblxuLy8gRG9lc24ndCByZW5kZXIgd2l0aG91dCBNUSBzdXBwb3J0XG5AaW5jbHVkZSBicCAobWF4LXdpZHRoLCAzMDBweCkgeyBcbiAgICBkaXYgeyBjb2xvcjojNDQ0OyB9XG59XG5cbi8vIFJlbmRlcnMgYXQgZml4ZWQgdmFsdWVcbkBpbmNsdWRlIGJwIChtYXgtd2lkdGgsIDEyMDBweCkgeyBcbiAgICBkaXYgeyBjb2xvcjojODg4OyB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiovXG5cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhpcyBtaXhpbiBpcyBpbnRlbmRlZCB0byBiZSBhcHBsaWVkIHRvIGFuIDphZnRlciBwc2V1ZG8tY2xhc3MuIEV4YW1wbGU6XG4vLyAgJjphZnRlciB7XG4vLyAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8gIH1cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWl4aW4gLSBJbWFnZSBSZXBsYWNlbWVudFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIGh0dHA6Ly93d3cuemVsZG1hbi5jb20vMjAxMi8wMy8wMS9yZXBsYWNpbmctdGhlLTk5OTlweC1oYWNrLW5ldy1pbWFnZS1yZXBsYWNlbWVudC9cbi8vIGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9hbm90aGVyLWNzcy1pbWFnZS1yZXBsYWNlbWVudC10ZWNobmlxdWUvXG4vLyBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvMTAwNSNpc3N1ZWNvbW1lbnQtNDk0NzcwMlxuXG5AbWl4aW4gaW1hZ2UtcmVwbGFjZW1lbnQge1xuICAgIC8vIE5vdGU6IHRoaXMgdGVjaG5pcXVlIGhhcyBpc3N1ZXMgb24gQW5kcm9pZCAzLnhcbiAgICAvLyBBbiBhbHRlcm5hdGl2ZSB0aGF0IHJlcXVpcmVzIHRoZSA6YmVmb3JlIGdlbmVyYXRlZCBjb250ZW50IHdhcyBhZGRlZCB0byBINUJQXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9jc3MvbWFpbi5jc3NcblxuICAgIC8vY29sb3I6dHJhbnNwYXJlbnQ7IGZvbnQ6MC8wIGE7IHRleHQtc2hhZG93Om5vbmU7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblxuICAgIC8vIFRoZSBzaW1wbGVzdCBvcHRpb24gcmVtYWlucyB1c2luZyB0ZXh0LWluZGVudDotOTk5OXB4IGRlc3BpdGUgdGhlIHBlcmZvcm1hbmNlIGRyYXdiYWNrXG4gICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7XG59XG5cbi8vIFVuZG8gdGhlIHJlcGxhY2VtZW50IGZvciBjaGlsZCBlbGVtZW50c1xuXG5AbWl4aW4gaW1hZ2UtcmVwbGFjZW1lbnQtb3ZlcnJpZGUge1xuICAgIHRleHQtaW5kZW50OiAwO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1peGluIC0gTWVudVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtaXhpbiBtZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAjRkJGQkZCO1xuICAgIGJvcmRlcjogc29saWQgMXB4ICRjLW1vZHVsZS1ib3JkZXI7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWl4aW4gLSBOb3QgU2VsZWN0YWJsZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtaXhpbiBub3Qtc2VsZWN0YWJsZSB7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtby11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNaXhpbiAtIElmLVJlc29sdXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBGcm9tIGh0dHA6Ly9ibG9nLjE0aXNsYW5kcy5jb20vcG9zdC8zNzI1OTYwMzI0Ni9zYXNzLXJlc29sdXRpb24tbWl4aW5cblxuQG1peGluIGlmLW1pbi1yZXNvbHV0aW9uKCRkcHB4KSB7XG4gICAgQGluY2x1ZGUgaWYtcmVzb2x1dGlvbihtaW4sICRkcHB4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGlmLW1heC1yZXNvbHV0aW9uKCRkcHB4KSB7XG4gICAgQGluY2x1ZGUgaWYtcmVzb2x1dGlvbihtYXgsICRkcHB4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGlmLXJlc29sdXRpb24oJHByZWZpeCwgJGRwcHgpIHtcbiAgICAvLyAxcHggPSA5NmRwaVxuICAgICRkcGk6ICRkcHB4ICogOTY7XG4gICAgQG1lZGlhXG4gICAgKC13ZWJraXQtI3skcHJlZml4fS1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JGRwcHh9KSxcbiAgICAoICAgI3skcHJlZml4fS0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skZHBweH0pLFxuICAgICggICAgIC1vLSN7JHByZWZpeH0tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRkcHB4KjJ9LzIpLFxuICAgICggICAgICAgICN7JHByZWZpeH0tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRkcHB4fSksXG4gICAgKCAgICAgICAgICAgICAgICAjeyRwcmVmaXh9LXJlc29sdXRpb246ICN7JGRwaX1kcGkpLFxuICAgICggICAgICAgICAgICAgICAgI3skcHJlZml4fS1yZXNvbHV0aW9uOiAjeyRkcHB4fWRwcHgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVc2FnZSBleGFtcGxlOlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy8vIFJlbmRlcnMgb24gc2NyZWVucyB3aXRoID49IDIgcmVzb2x1dGlvblxuLy9AaW5jbHVkZSBpZi1taW4tcmVzb2x1dGlvbiAoMikge1xuLy8gICAgZGl2IHsgY29sb3I6IzAwMDsgfVxuLy99XG4vL1xuLy8vLyBSZW5kZXJzIG9uIHNjcmVlbnMgd2l0aCA+PSAxLjUgcmVzb2x1dGlvblxuLy9AaW5jbHVkZSBpZi1taW4tcmVzb2x1dGlvbiAoMS41KSB7XG4vLyAgICBkaXYgeyBjb2xvcjojMDAwOyB9XG4vL31cbi8vXG4vLy8vIFJlbmRlcnMgb24gc2NyZWVucyB3aXRoIDw9IDEuNSByZXNvbHV0aW9uXG4vL0BpbmNsdWRlIGlmLW1heC1yZXNvbHV0aW9uICgxLjUpIHtcbi8vICAgIGRpdiB7IGNvbG9yOiMwMDA7IH1cbi8vfVxuLy9cbi8vLy8gUmVuZGVycyBvbiBzY3JlZW5zIHdpdGggPD0gMiByZXNvbHV0aW9uXG4vL0BpbmNsdWRlIGlmLW1heC1yZXNvbHV0aW9uICgyKSB7XG4vLyAgICBkaXYgeyBjb2xvcjojMDAwOyB9XG4vL31cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbkBtaXhpbiB0YWJzKCkge1xuICAgIC50b2dnbGUtdGFicyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBub3Qtc2VsZWN0YWJsZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAkdHJpbTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBib3R0b206IC0xcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsaS5jdXJyZW50IHtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG5cbiAgICAgICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGkuY3VycmVudCBzcGFuLFxuICAgICAgICBsaTpob3ZlciBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBsaTpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICA+IGRsIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgPiBkdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBkZCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRkLmN1cnJlbnQge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBhY2NvcmRpb25EdEJhc2UoJGFycm93LWRpcmVjdGlvbjogJ2Rvd24nLCAkYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyKSB7XG4gICAgQGluY2x1ZGUgaDQ7XG4gICAgQGluY2x1ZGUgbm90LXNlbGVjdGFibGU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgcGFkZGluZzogN3B4IDEwcHggN3B4IDI0cHg7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItY29sb3I7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKCN7JGFycm93LWRpcmVjdGlvbn0sIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kLWhvdmVyO1xuICAgIH1cbn1cblxuQG1peGluIGFjY29yZGlvbigpIHtcbiAgICAudG9nZ2xlLXRhYnMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgID4gZGwge1xuICAgICAgICA+IGR0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbkR0QmFzZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBkZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgMXB4O1xuICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgfVxuICAgICAgICA+IGRkOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDFweCAxcHggMXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWl4aW4gYWNjb3JkaW9uQ29sbGFwc2UoKSB7XG4gICAgPiBkbCB7XG4gICAgICAgID4gZHQge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA0cHgsICRjLWFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmxhc3Qge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgID4gZGQge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuYWNjb3JkaW9uLW9wZW4ge1xuICAgICAgICA+IGRsIHtcbiAgICAgICAgICAgID4gZHQge1xuICAgICAgICAgICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmN1cnJlbnQ6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShkb3duLCA0cHgsICRjLWFjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDZweDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IGRkLmN1cnJlbnQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1peGluIC0gVHJpYW5nbGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWl4aW4gdHJpYW5nbGUoJGRpcmVjdGlvbjogdXAsICRzaXplOiA1cHgsICRjb2xvcjogIzAwMDAwMCkge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJHNpemUgc29saWQgJGNvbG9yO1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgICBib3JkZXItcmlnaHQ6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItbGVmdDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci10b3A6ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICAgIGJvcmRlci10b3A6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIH1cblxuICAgIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgJGNvbG9yO1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWl4aW4gLSBUeXBvZ3JhcGh5XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1peGluIGgxIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43ZW07XG4gICAgY29sb3I6ICRjLWgxO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG59XG5cbkBtaXhpbiBoMiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgIGNvbG9yOiAkYy1oMjtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xufVxuXG5AbWl4aW4gaDMge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGNvbG9yOiAkYy1oMztcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVTcGVlZDtcbn1cblxuQG1peGluIGg0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBjb2xvcjogJGMtaDQ7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkO1xufVxuXG5AbWl4aW4gaDUge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGNvbG9yOiAkYy1oNTtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplU3BlZWQ7XG59XG5cbkBtaXhpbiBoNiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICBjb2xvcjogJGMtaDY7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZVNwZWVkO1xufVxuXG5AbWl4aW4gcGFnZVRpdGxlKCkge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuQG1peGluIGxvYWRpbmdPdmVybGF5KCRvcGFjaXR5OiAwLjgpIHtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDonJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgbGVmdDogMHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgICB6LWluZGV4OjI7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL29wYy1hamF4LWxvYWRlci5naWYnKTtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICB6LWluZGV4OjM7XG4gICAgfVxuXG4gICAgJi5sb2FkaW5nIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6YmVmb3JlLFxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb3JlIEFwcGxpY2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJyb3dzZXIgUmVzZXRzXG5cbkBpbXBvcnQgXCJ2ZW5kb3Ivbm9ybWFsaXplXCI7XG5AaW1wb3J0IFwiY29yZS9yZXNldFwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb3JlXG5cbkBpbXBvcnQgXCJjb3JlL2NvbW1vblwiO1xuQGltcG9ydCBcImNvcmUvZm9ybVwiO1xuQGltcG9ydCBcImNvcmUvdGFibGVcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmVuZG9yXG5cbi8vIEBpbXBvcnQgXCJ2ZW5kb3IvYWJjXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExheW91dFxuXG5AaW1wb3J0IFwibGF5b3V0L2dsb2JhbFwiO1xuQGltcG9ydCBcImxheW91dC9oZWFkZXJcIjtcbkBpbXBvcnQgXCJsYXlvdXQvaGVhZGVyLW5hdlwiO1xuQGltcG9ydCBcImxheW91dC9oZWFkZXItc2VhcmNoXCI7XG5AaW1wb3J0IFwibGF5b3V0L2hlYWRlci1hY2NvdW50XCI7XG5AaW1wb3J0IFwibGF5b3V0L2hlYWRlci1jYXJ0XCI7XG5AaW1wb3J0IFwibGF5b3V0L2Zvb3RlclwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNb2R1bGVzXG5cbi8vIFRoZSBzb3J0IG9yZGVyIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0d28gcmVhc29uczpcbi8vICAxLiBUaGUgY29tcGlsZWQgQ1NTIG5lZWRzIHRvIGJlIGxvZ2ljYWxseSBvcmRlcmVkL2dyb3VwZWQgKE5PVCBhbHBoYWJldGljYWxseSBvcmRlcmVkKVxuLy8gIDIuIFNlbGVjdG9ycyBvZiBlcXVhbCB3ZWlnaHQgZ2V0IGFwcGxpZWQgYmFzZWQgb24gd2hpY2ggYXBwZWFycyBsYXN0IGluIHRoZSBzdHlsZXNoZWV0LFxuLy8gICAgIHNvIHdlIHNob3VsZCB0cnkgbm90IHRvIGNoYW5nZSB0aGlzIG9yZGVyIG9uY2UgaXQgaXMgaW4gcGxhY2VcblxuQGltcG9ydCBcIm1vZHVsZS9hbmltYXRpb25zXCI7XG5AaW1wb3J0IFwibW9kdWxlL3Byb2R1Y3QtbGlzdFwiO1xuQGltcG9ydCBcIm1vZHVsZS9jYWxlbmRhclwiO1xuQGltcG9ydCBcIm1vZHVsZS9jYXRhbG9nLXByb2R1Y3RcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2F0YWxvZy1tc3JwXCI7XG5AaW1wb3J0IFwibW9kdWxlL2NhdGFsb2ctY29tcGFyZVwiO1xuQGltcG9ydCBcIm1vZHVsZS9jaGVja291dC1jYXJ0XCI7XG5AaW1wb3J0IFwibW9kdWxlL2NoZWNrb3V0LW9uZXBhZ2VcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2hlY2tvdXQtc3VjY2Vzc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9jb25maWd1cmFibGVzd2F0Y2hlc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9jdXN0b21lclwiO1xuQGltcG9ydCBcIm1vZHVsZS9jb250YWN0c1wiO1xuQGltcG9ydCBcIm1vZHVsZS9maW5kLWEtcmVwXCI7XG5AaW1wb3J0IFwibW9kdWxlL3BheXBhbFwiO1xuQGltcG9ydCBcIm1vZHVsZS9yZXZpZXdcIjtcbkBpbXBvcnQgXCJtb2R1bGUvc2xpZGVzaG93XCI7XG5AaW1wb3J0IFwibW9kdWxlL3dpc2hsaXN0XCI7XG5AaW1wb3J0IFwibW9kdWxlL2NoZWNrb3V0LWNhcnQtbWluaWNhcnRcIjtcbkBpbXBvcnQgXCJtb2R1bGUvc2VhcmNoXCI7XG5AaW1wb3J0IFwibW9kdWxlL2FjY291bnQtcmV2aWV3c1wiO1xuQGltcG9ydCBcIm1vZHVsZS9jbXNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvcHJpY2luZ19jb25kaXRpb25zXCI7XG5AaW1wb3J0IFwibW9kdWxlL2Nvb2tpZXNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvdGFnc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9jYXB0Y2hhXCI7XG5AaW1wb3J0IFwibW9kdWxlL2FjY291bnQtb3JkZXJzXCI7XG5AaW1wb3J0IFwibW9kdWxlL3JlY3VycmluZy1wcm9maWxlc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9iaWxsaW5nLWFncmVlbWVudHNcIjtcbkBpbXBvcnQgXCJtb2R1bGUvcG9wdWxhci10ZXJtc1wiO1xuQGltcG9ydCBcIm1vZHVsZS93aWRnZXRcIjtcbkBpbXBvcnQgXCJtb2R1bGUvY2hlY2tvdXQtbXVsdGktYWRkcmVzc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9pY29uc1wiO1xuQGltcG9ydCBcIm1vZHVsZS9yZXNwb25zaXZlYmFubmVyc2xpZGVyXCI7XG5AaW1wb3J0IFwibW9kdWxlL25ld3NcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT3ZlcnJpZGVcbkBpbXBvcnQgXCJvdmVycmlkZS9wbHVnaW5cIjtcblxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjIuMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXQuaW8vbm9ybWFsaXplICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQ29ycmVjdHMgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIENvcnJlY3RzIGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxudmlkZW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLypcbiAqIFByZXZlbnRzIG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKlxuICogQWRkcmVzc2VzIHN0eWxpbmcgZm9yIGBoaWRkZW5gIGF0dHJpYnV0ZSBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxuW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogMS4gU2V0cyBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50cyBpT1MgdGV4dCBzaXplIGFkanVzdCBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2UsIHdpdGhvdXQgZGlzYWJsaW5nXG4gKiAgICB1c2VyIHpvb20uXG4gKi9cblxuaHRtbCB7XG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKlxuICogUmVtb3ZlcyBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZHJlc3NlcyBgb3V0bGluZWAgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIENocm9tZSBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuYTpmb2N1cyB7XG4gICAgb3V0bGluZTogdGhpbiBkb3R0ZWQ7XG59XG5cbi8qXG4gKiBJbXByb3ZlcyByZWFkYWJpbGl0eSB3aGVuIGZvY3VzZWQgYW5kIGFsc28gbW91c2UgaG92ZXJlZCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgICBvdXRsaW5lOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVHlwb2dyYXBoeVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZHJlc3NlcyBgaDFgIGZvbnQgc2l6ZXMgd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgIGluIEZpcmVmb3ggNCssXG4gKiBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuXG5oMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzksIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkO1xufVxuXG4vKlxuICogQWRkcmVzc2VzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLypcbiAqIEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSA1IGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxubWFyayB7XG4gICAgYmFja2dyb3VuZDogI2ZmMDtcbiAgICBjb2xvcjogIzAwMDtcbn1cblxuXG4vKlxuICogQ29ycmVjdHMgZm9udCBmYW1pbHkgc2V0IG9kZGx5IGluIFNhZmFyaSA1IGFuZCBDaHJvbWUuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMWVtO1xufVxuXG4vKlxuICogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgcHJlLWZvcm1hdHRlZCB0ZXh0IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cblxuLypcbiAqIFNldHMgY29uc2lzdGVudCBxdW90ZSB0eXBlcy5cbiAqL1xuXG5xIHtcbiAgICBxdW90ZXM6IFwiXFwyMDFDXCIgXCJcXDIwMURcIiBcIlxcMjAxOFwiIFwiXFwyMDE5XCI7XG59XG5cbi8qXG4gKiBBZGRyZXNzZXMgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbn1cblxuLypcbiAqIFByZXZlbnRzIGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICAgIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICAgIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBSZW1vdmVzIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkuXG4gKi9cblxuaW1nIHtcbiAgICBib3JkZXI6IDA7XG59XG5cbi8qXG4gKiBDb3JyZWN0cyBvdmVyZmxvdyBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgOS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZpZ3VyZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBBZGRyZXNzZXMgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpIDUuXG4gKi9cblxuZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLypcbiAqIDEuIENvcnJlY3RzIGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKlxuICogMS4gQ29ycmVjdHMgZm9udCBmYW1pbHkgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0cyBmb250IHNpemUgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAzLiBBZGRyZXNzZXMgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWVcbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMiAqL1xuICAgIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKlxuICogQWRkcmVzc2VzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCB7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLypcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3RzIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlcyB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gICAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXG59XG5cbi8qXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5pbnB1dFtkaXNhYmxlZF0ge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLypcbiAqIDEuIEFkZHJlc3NlcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS5cbiAqIDIuIFJlbW92ZXMgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LlxuICovXG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLypcbiAqIDEuIEFkZHJlc3NlcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3NlcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lXG4gKiAgICAoaW5jbHVkZSBgLW1vemAgdG8gZnV0dXJlLXByb29mKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4vKlxuICogUmVtb3ZlcyBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lXG4gKiBvbiBPUyBYLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qXG4gKiBSZW1vdmVzIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLypcbiAqIDEuIFJlbW92ZXMgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LlxuICogMi4gSW1wcm92ZXMgcmVhZGFiaWxpdHkgYW5kIGFsaWdubWVudCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxudGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvOyAvKiAxICovXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgLyogMiAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG5cbnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBSZXNldFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuKixcbio6YmVmb3JlLFxuKjphZnRlciB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuaHRtbCB7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiBibGFjaygwKTsgLyogUHJldmVudCB0YXAgaGlnaGxpZ2h0IG9uIGlPUy9BbmRyb2lkICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiBQcmV2ZW50IGF1dG9tYXRpYyBzY2FsaW5nIG9uIGlPUyAqL1xufVxuXG5ib2R5IHtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG5odG1sLFxuYm9keSxcbmltZyxcbmZpZWxkc2V0LFxuYWJicixcbmFjcm9ueW0ge1xuICAgIGJvcmRlcjogMDtcbn1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxudGgsXG5jb2RlLFxuY2l0ZSxcbmNhcHRpb24ge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbmFkZHJlc3Mge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuZmllbGRzZXQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbn1cblxuaW1nIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbm9sLFxudWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbnE6YmVmb3JlLFxucTphZnRlciB7XG4gICAgY29udGVudDogJyc7XG59XG5cbi8vIFN0YW5kYXJkIG91dGxpbmUtb2Zmc2V0IGluIENocm9tZSBhbmQgbWFrZSB0aGUgc2VhcmNoIGlucHV0IHNhbWUgYXMgdGV4dCBpbnB1dFxuaW5wdXQ6Zm9jdXMsXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOmZvY3VzIHtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbn1cblxuLy8gUmVzZXR0aW5nIE5vcm1hbGl6ZSBzbyB0aGF0IHNlYXJjaCBpbnB1dHMgYmVoYXZlIHRoZSBzYW1lIGFzIHRleHQgaW5wdXRzXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8qIDEgKi9cbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAyICovXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBCYXNlIFN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQC1tcy12aWV3cG9ydCB7XG4gICAgd2lkdGg6IGRldmljZS13aWR0aDtcbn1cblxuQC1vLXZpZXdwb3J0IHtcbiAgICB3aWR0aDogZGV2aWNlLXdpZHRoO1xufVxuXG5Admlld3BvcnQge1xuICAgIHdpZHRoOiBkZXZpY2Utd2lkdGg7XG59XG5cbioge1xuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG59XG5cbi8vIFByZXZlbnQgMzAwbXMgZGVsYXkgaW4gSUUgb24gdG91Y2ggZGV2aWNlc1xuYSwgYnV0dG9uIHtcbiAgICAtbXMtdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG59XG5cbmJvZHksXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRhYmxlLFxudGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJGItbGluZS1oZWlnaHQ7XG59XG4uYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuYSB7XG4gICAgY29sb3I6ICM2MzYzNjM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbmE6aG92ZXIge1xuICAgIGNvbG9yOiAkYy1saW5rLWhvdmVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5hOmZvY3VzIHtcbiAgICBvdXRsaW5lLWNvbG9yOiAkYy1saW5rLWFjdGl2ZTtcbiAgICBjb2xvcjogZGFya2VuKCRjLWFjdGlvbiwgMzAlKTtcbn1cbi5idXR0b24ge2NvbG9yOiAjZmZmO31cbm9sLFxudWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFR5cG9ncmFwaHlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmgxLCAuaDEgeyBcbiAgICBAaW5jbHVkZSBoMTsgXG4gICAgLm5ld3MtaXRlbS1jb250ZW50ICYgeyAgICAgICAgXG4gICAgICAgIEBpbmNsdWRlIGgxOyBcbiAgICB9XG59XG5cbmgyLCAuaDIgeyBcbiAgICBAaW5jbHVkZSBoMjsgXG4gICAgLy8gLm5ld3MtaXRlbS1jb250ZW50ICZcbn1cblxuaDMsIC5oMyB7IFxuICAgIEBpbmNsdWRlIGgzO1xuICAgIC5uZXdzLWl0ZW0tY29udGVudCAmIHsgICAgICAgIFxuICAgICAgICBAaW5jbHVkZSBoMzsgXG4gICAgfVxufVxuXG5oNCwgLmg0IHsgXG4gICAgQGluY2x1ZGUgaDQ7XG4gICAgLm5ld3MtaXRlbS1jb250ZW50ICYge1xuICAgICAgICBAaW5jbHVkZSBoNDtcbiAgICB9XG59XG5cbmg1LCAuaDUgeyBAaW5jbHVkZSBoNTsgfVxuXG5oNiwgLmg2IHsgQGluY2x1ZGUgaDY7IH1cblxuZW0ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsgXG59XG5zdHJvbmcsIGIge1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNoYXJlZCBDbGFzc2VzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnRleHQtdXBwZXJ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5hZGRyZXNzLWxpc3QgYWRkcmVzcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4uYXZhaWxhYmlsaXR5IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5hdmFpbGFiaWxpdHkgLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uYXZhaWxhYmlsaXR5LmluLXN0b2NrIHtcbiAgICBjb2xvcjogJGMtc3VjY2Vzcztcbn1cblxuLmF2YWlsYWJpbGl0eS5hdmFpbGFibGUtc29vbixcbi5hdmFpbGFiaWxpdHkub3V0LW9mLXN0b2NrIHtcbiAgICBjb2xvcjogJGMtZGFuZ2VyO1xufVxuXG4uYXZhaWxhYmlsaXR5LW9ubHkge1xuICAgIGNvbG9yOiAkYy1kYW5nZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQYWdlIFRpdGxlc1xuICovXG5cbi5wYWdlLXRpdGxlIGgxLFxuLnBhZ2UtdGl0bGUgaDIsXG4ucHJvZHVjdC1uYW1lIGgxLFxuLnByb2R1Y3QtbmFtZSAuaDEge1xuICAgIEBpbmNsdWRlIHBhZ2VUaXRsZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQmxvY2sgTW9kdWxlXG4gKi9cblxuLmJsb2NrLFxuLmNvbC1sZWZ0LWZpcnN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uY29sLWxlZnQtZmlyc3QgLmJsb2NrOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmJsb2NrLXRpdGxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTBweCAwIDA7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuXG4gICAgaDIsXG4gICAgaDMsXG4gICAgc3Ryb25nIHtcbiAgICAgICAgQGluY2x1ZGUgaDQ7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1mb290ZXItaGVhZGVycztcbiAgICB9XG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IDEwMCU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgfVxufVxuXG4vLyBPbiBhY2NvdW50IHBhZ2VzLCBkb24ndCByZW1vdmUgdGhlIHRvcCBib3JkZXIgaW4gb3JkZXIgdG8gY3JlYXRlIHNlcGFyYXRpb24gYmV0d2VlbiBibG9jayBhbmQgLmJsb2NrLWFjY291bnRcbmJvZHk6bm90KC5jdXN0b21lci1hY2NvdW50KSAuYmxvY2s6Zmlyc3QtY2hpbGQgLmJsb2NrLXRpdGxlIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICAgIHBhZGRpbmctdG9wOiAwO1xufVxuXG4uYmxvY2stc3VidGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG59XG5cbi5ibG9jay1jb250ZW50IHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG59XG5cbi5ibG9jay1jb250ZW50LnVucGFkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4uYmxvY2stY29udGVudCBsaS5pdGVtIHtcbiAgICBtYXJnaW46IDAgMCAkYm94LXNwYWNpbmcgOXB4O1xufVxuXG4uYmxvY2stY29udGVudCBsaS5pdGVtOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5ibG9jayAuYWN0aW9ucyB7XG4gICAgbWFyZ2luOiAkYm94LXNwYWNpbmcgMCAwO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG59XG5cbi5jb2wtbGVmdCxcbi5jb2wtcmlnaHQge1xuICAgIC8vIEFsaWduIHRoZSB2ZXJ0aWNhbCBoZWlnaHQgb2YgdGhlIGFuY2hvciB0byBsaW5lIHVwIHdpdGggdGhlIGJ1dHRvblxuICAgIC5ibG9jayAuYWN0aW9ucyAuYnV0dG9uIH4gYSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzM3B4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLnNpZGViYXIge1xuICAgICAgICAvLyBEb24ndCBhcHBseSB0byBsYXllcmVkIG5hdiwgc2luY2UgaXQgZ2V0cyBzcGVjaWFsIHRyZWF0bWVudFxuICAgICAgICAuYmxvY2s6bm90KC5ibG9jay1sYXllcmVkLW5hdikge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgICAgICAgICAgICA+IHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbkR0QmFzZSgncmlnaHQnLCAkYy1tb2R1bGUtYm9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgICAgICA+IHN0cm9uZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBhY2NvcmRpb25EdEJhc2UoJ2Rvd24nLCAkYy1tb2R1bGUtYm9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMCAxcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBzZWxlY3RvciBpcyBoaWdobHkgZmlja2xlLCBiZWNhdXNlIGlmIGEgZGl2IGdldHMgYWRkZWQgYmVuZWF0aCB0aGUgbGFzdCBub3JtYWwgYmxvY2sgaW4gYSBzaWRlYmFyLFxuICAgICAgICAvLyBpdCB3aWxsIGJyZWFrLiBIb3dldmVyIGl0IGlzIHRoZSBzaW1wbGVzdCBzb2x1dGlvbiB0byBhcHBseWluZyB0aGlzIHRyaXZpYWwgc3R5bGUuXG4gICAgICAgIC5ibG9jazpsYXN0LW9mLXR5cGUge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNlY29uZGFyeSBOYXZpZ2F0aW9uXG4gKi9cblxuLmJsb2NrLWFjY291bnQsXG4uYmxvY2stY21zLW1lbnUge1xuICAgIC5ibG9jay10aXRsZSB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICBcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIG1hcmdpbjogN3B4IDA7XG5cbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgXG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEJ1dHRvbnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFNlY29uZGFyeSBCdXR0b25zICovXG4uY2FydCAuYnV0dG9ucy1zZXQgLmJ1dHRvbixcbi5jYXJ0LXRhYmxlIC5idXR0b24sXG4uc2lkZWJhciAuYWN0aW9ucyAuYnV0dG9uLFxuLmJ1dHRvbi5idXR0b24tc2Vjb25kYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1idXR0b24tc2Vjb25kYXJ5O1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIHBhZGRpbmc6IDdweCAxNXB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJ1dHRvbi1zZWNvbmRhcnktaG92ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlO1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbn1cblxuLnNpZGViYXIgLmFjdGlvbnMgYnV0dG9uLmJ1dHRvbiB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLyogUHJpbWFyeSBCdXR0b25zICovXG5cbi5idXR0b24sXG4uY2FydC10YWJsZSAucHJvZHVjdC1jYXJ0LWFjdGlvbnMgLmJ1dHRvbixcbiNjby1zaGlwcGluZy1tZXRob2QtZm9ybSAuYnV0dG9ucy1zZXQgLmJ1dHRvbixcbi5mb290ZXIgLmJ1dHRvbiwgYS5idXR0b24ge1xuICAgIGJhY2tncm91bmQ6ICRjLWJ1dHRvbjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogN3B4IDE1cHg7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBsaW5lLWhlaWdodDogMTlweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY29sb3I6ICM2MzYzNjM7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjI1cyBlYXNlLWluLW91dDtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jbzogJGMtYnV0dG9uLWhvdmVyO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtYnV0dG9uLWFjdGl2ZTtcbiAgICAgICAgY29sb3I6ICNGRkZGRkY7XG4gICAgfVxuICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1idXR0b24tYWN0aXZlO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICB9XG59XG5cbmEuYnV0dG9uIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICM2MzYzNjM7XG59XG5cbmEuYnV0dG9uOmhvdmVyIHtcbiAgICBjb2xvcjogI0ZGRkZGRjtcbn1cblxuLyogRGlzYWJsZWQgLSBjbGFzcyBmb3IgYW5jaG9yLCBzdGF0ZSBmb3IgZm9ybSBlbGVtZW50cyAqL1xuLmJ1dHRvbi5kaXNhYmxlZCxcbi5idXR0b246ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6ICNDOEM4Qzg7XG4gICAgb3BhY2l0eTogMC42O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8qIEFkamFjZW50IGJ1dHRvbnMgKi9cbi5idXR0b24gKyAuYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuJGhvdmVyLWNvbG9yLXllbGxvdzogZGFya2VuKCRjLXllbGxvdy1lbm5pcywxMCUpO1xuXG4uY29udGFjdC11c3tcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgY29sb3I6ICRjLWJsYWNrLXRleHQtY29udGFjdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBwYWRkaW5nOiA5cHggMjVweDtcbiAgICBib3JkZXI6IDAgbm9uZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXItY29sb3IteWVsbG93O1xuICAgIH1cbn1cblxuLmVubmlzLWJ1dHRvbi1zbSwgLmVubmlzLWJ1dHRvbi1tZCwgLmVubmlzLWJ1dHRvbi1sZ3tcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgY29sb3I6ICRjLWJsYWNrLXRleHQtY29udGFjdDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGJvcmRlcjogMCBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRob3Zlci1jb2xvci15ZWxsb3c7XG4gICAgICAgIFxuICAgIH1cbn1cblxuLmVubmlzLWJ1dHRvbi1zbXtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgcGFkZGluZzogOXB4IDI1cHg7XG59XG5cbi5lbm5pcy1idXR0b24tbWR7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIHBhZGRpbmc6IDEycHggMjhweDtcbn1cblxuLmVubmlzLWJ1dHRvbi1sZ3tcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgcGFkZGluZzogMTVweCAzMXB4O1xufVxuXG4vLyBUaGlzIG1peGluIGdldHMgYXBwbGllZCB0byBlbGVtZW50cyB0aGF0IGFyZSBvbmx5IGJ1dHRvbnMgb24gc21hcnRwaG9uZXMgKG9yIHNvbWV0aW1lcyB0YWJsZXRzKSwgc3VjaCBhcyBsYXllcmVkXG4vLyBuYXYgbGlua3Mgb3IgY2hlY2tib3ggbGFiZWxzLlxuLy8gQnVpbGRpbmcgdGhpcyBhcyBhIG1peGluIChyYXRoZXIgdGhhbiBhbiBleHRlbmRhYmxlIGNsYXNzKSBzaW5jZSBpdCB3aWxsIGJlIGluY2x1ZGVkIHdpdGhpbiBtcSBicmVha3BvaW50cywgYW5kXG4vLyBleHRlbmRpbmcgZG9lc24ndCB3b3JrIHdpdGhpbiBtZWRpYSBxdWVyaWVzOiBodHRwOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2ZpbGUuU0FTU19SRUZFUkVOQ0UuaHRtbCNfaW5fZGlyZWN0aXZlc1xuQG1peGluIHRvdWNoLWJ1dHRvbiB7XG4gICAgY29sb3I6ICRjLXRleHQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG59XG5cbi5idXR0b24yIHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uYnV0dG9uMjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLmJ1dHRvbjIgc3Bhbixcbi5idXR0b24yIHNwYW4gc3BhbiB7XG4gICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgY29sb3I6ICRjLXN0aW11bHVzO1xuICAgIH0gICAgXG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5jb2wyLXNldCAuYnV0dG9ucy1zZXQge1xuICAgICAgICAuYnV0dG9uLFxuICAgICAgICAuYnV0dG9uMiB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmJhY2stbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5yZXF1aXJlZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgLmJhY2stbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5yZXF1aXJlZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQYXlwYWwgQnV0dG9uIGRcbiAqL1xuXG4ucGF5cGFsLWxvZ28ucGF5cGFsLWFmdGVyIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cblxuLnBheXBhbC1hZnRlciAucGF5cGFsLW9yIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cblxuLnBheXBhbC1vciB7XG4gICAgbGluZS1oZWlnaHQ6IDM0cHg7XG4gICAgbWFyZ2luOiAwcHggMTBweCA1cHg7XG59XG5cbi5wYXlwYWwtYWZ0ZXIgLnBheXBhbC1idXR0b24ge1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4ucGF5cGFsLWJ1dHRvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDBweDtcbn1cblxuLnBheXBhbC1idXR0b24gaW1nIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNzQwcHgpIHtcbiAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgfVxuXG4gICAgLnBheXBhbC1sb2dvLFxuICAgIC5wYXlwYWwtb3IsXG4gICAgLnBheXBhbC1idXR0b24ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBCdXR0b24gU2V0c1xuICovXG5cbi5idXR0b25zLXNldCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgbWFyZ2luOiAkYm94LXNwYWNpbmcgMCAwO1xuICAgIHBhZGRpbmctdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICBwLnJlcXVpcmVkIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogJGdhcDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMzcHg7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gICAgLmJhY2stbGluayB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzM3B4O1xuICAgIH1cbiAgICBhOm5vdCguYnV0dG9uKSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDVweDtcbiAgICB9XG4gICAgYnV0dG9uLmJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgbWluLXdpZHRoOiAxNDBweDtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBJY29uc1xuICovXG5cbi5pY29uLXNwcml0ZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9pY29uX3Nwcml0ZS5wbmcpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgQGluY2x1ZGUgaW1hZ2UtcmVwbGFjZW1lbnQ7XG59XG5cbkBpbmNsdWRlIGlmLW1pbi1yZXNvbHV0aW9uKDIpIHtcbiAgICAuaWNvbi1zcHJpdGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL2ljb25fc3ByaXRlQDJ4LnBuZyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwcHggMTAwMHB4O1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQnJlYWRjcnVtYnNcbiAqL1xuXG4uYnJlYWRjcnVtYnMge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luOiAxNXB4IDAgMjVweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggZG90dGVkICRjLXRleHQtZ3JheTtcbn1cblxuLmJyZWFkY3J1bWJzIGxpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG59XG5cbi5icmVhZGNydW1icyBhIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBjb2xvcjogJGMtdGV4dDtcbn1cblxuLmJyZWFkY3J1bWJzIGE6aG92ZXIge1xuICAgIGNvbG9yOiAkYy1hY3Rpb247XG59XG5cbi5icmVhZGNydW1icyBzdHJvbmcge1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5icmVhZGNydW1icyBzcGFuIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nOiAwIDdweDtcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAuYnJlYWRjcnVtYnMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBCdXR0b24gLSBSZW1vdmUgLyBQcmV2aW91c1xuICovXG5cbi5idG4tcmVtb3ZlLFxuLmJ0bi1wcmV2aW91cyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAvKiBIaWRlIHRleHQgKi9cbiAgICBmb250OiAwLzAgYTtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1hY3Rpb247XG4gICAgfVxufVxuXG4uYnRuLXJlbW92ZSB7XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICdYJztcbiAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IEFyaWFsLCAkZi1zdGFjay1zYW5zO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4uYnRuLXJlbW92ZTIge1xuICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICRpY29uLXBhZGRpbmc6IDNweDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0cHggLTY1MHB4KzJweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgLy8gQWRkaW5nIHRoaXMgc28gdGhhdCB0aGUgYnV0dG9uIHdpbGwgc2hvdyBhdCB0aGUgdG9wIG9mIHRoZSBjYXJ0IHJvd3MsIHJhdGhlciB0aGFuIGF0IHRoZSBiYXNlbGluZVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgQGluY2x1ZGUgb3BhY2l0eSgwLjgpO1xuICAgIH1cbn1cblxuLmJ0bi1wcmV2aW91cyB7XG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGxlZnQsIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICB9XG4gICAgJjpob3ZlcjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGxlZnQsIDRweCwgI0ZGRkZGRik7XG4gICAgfVxufVxuXG4uYmxvY2stbGF5ZXJlZC1uYXYgLmN1cnJlbnRseSxcbi5taW5pLXByb2R1Y3RzLWxpc3QsXG4jY29tcGFyZS1pdGVtcyB7XG5cbiAgICAuYnRuLXJlbW92ZSxcbiAgICAuYnRuLXByZXZpb3VzIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQ2hlY2tvdXQgQWdyZWVtZW50c1xuICovXG5cbi5jaGVja291dC1hZ3JlZW1lbnRzIGxpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uY2hlY2tvdXQtYWdyZWVtZW50cyAuYWdyZWVtZW50LWNvbnRlbnQge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LXdpZHRoOiA2NzBweDtcbiAgICBtYXgtaGVpZ2h0OiAxMjVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQ1ZWIFNlY3VyaXR5IENvZGVcbiAqL1xuXG4uY3Z2LXdoYXQtaXMtdGhpcyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIENvbnRhaW5lclxuICovXG4ubWFpbi1jb250YWluZXIge1xuICAgIGJvcmRlci10b3A6IDFweCAjMDAwIHNvbGlkO1xuICAgIC5jd3NTbGlkZXJ7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweCFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4IWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucGFnZXJCZWxvdyAuY3dzLXBhZ2VyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm90dG9tOiAyMHB4O1xuICAgICAgICByaWdodDogMjBweDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICB9XG4gICAgLnBhZ2VyQmVsb3cgLmN3cy1wYWdlci5jaXItYmFyLCAucGFnZXJCZWxvdyAuY3dzLXBhZ2VyLnNxdS1iYXIge1xuICAgICAgICBib3R0b206IDA7XG4gICAgfVxuICAgIC5jd3MtcGFnZXIgbGkgYXtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICB9XG4gICAgI2JuclNsaWRlci0xIHtcbiAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCAjNWU1ZTVlIHNvbGlkO1xuICAgICB9XG4gICAgI2JuclNsaWRlci0xIC5jd3MtYXJ3IGE6YmVmb3Jle1xuICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICB9XG4gICAgI2JuclNsaWRlci0xIC5jd3MtcGFnZXIgYS5jd3MtYWN0aXZle1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgfVxuICAgIC5zbGlkZXIge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggIzAwMCBzb2xpZDtcbiAgICAgICAgXG4gICAgfVxufVxuLm1haW4tY29udGFpbmVyLFxuLmZvb3Rlci1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBpbml0aWFsO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4ubWFya2V0LW1lbnV7XG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9tYXJrZXQtbWVudS1iZy5qcGcpIG5vLXJlcGVhdCAkYy1ibGFjaztcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIHBhZGRpbmc6IDI1cHggMCA1MHB4O1xuICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAxMHB4ICMwMTAxMDEgc29saWQ7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTk4cHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweCFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xNXB4IWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICAgICYgPiBkaXYge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwcHggMDtcbiAgICAgICAgaGVpZ2h0OiA5MHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrIWltcG9ydGFudDtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG5cbiAgICAgICAgJiA+IGEge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAmOmJlZm9yZSB7ICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGhlaWdodDogNGVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9tYXJrZXQtbWVudS5wbmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL21hcmtldC1tZW51LWFsdC5wbmdcIik7XG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyAmOmhvdmVyLFxuICAgICAgICAvLyAmOmFjdGl2ZSB7XG4gICAgICAgIC8vICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvbWFya2V0LW1lbnUtYWx0LnBuZ1wiKTtcbiAgICAgICAgLy8gICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIC8vICAgICAmID4gYSB7XG4gICAgICAgIC8vICAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAmID4gYSB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuICAgICYgPiAuZ2xvYmFsIGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDBweDtcbiAgICB9XG4gICAgJiA+IC5nb3Zlcm5tZW50IGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0xNzBweDtcbiAgICB9XG4gICAgJiA+IC5jb250cmFjdG9ycyBhOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtMzgwcHg7XG4gICAgfVxuICAgICYgPiAuY29tbWVyY2lhbCBhOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtNjA1cHg7XG4gICAgfVxuICAgICYgPiAuZW5naW5lZXJzIGE6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC04NDBweDtcbiAgICB9XG4gICAgJiA+IC5haXJwb3J0cyBhOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtMTA2MHB4O1xuICAgIH1cbiAgICBcbiAgICBoMiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4bDtcbiAgICB9XG4gICAgLmdsb2JhbCB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAxMHB4O1xuICAgIH1cbiAgICAuZ292ZXJubWVudCB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtMTYwcHg7XG4gICAgfVxuICAgIC5jb250cmFjdG9yc3tcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0zNzBweDtcbiAgICB9XG4gICAgLmNvbW1lcmNpYWx7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtNTk1cHg7XG4gICAgfVxuICAgIC5lbmdpbmVlcnN7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAtODMwcHg7XG4gICAgfVxuICAgIC5haXJwb3J0c3tcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIC0xMDUwcHg7XG4gICAgfVxuICAgIC5idG4ge1xuICAgICAgICBhIHsgY29sb3I6ICNmZGI4MTM7fVxuICAgIH1cbiAgICBvbC5tZWdhLWRyb3Bkb3duLW1lbnUge1xuICAgICAgICBsaXtcbiAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAuNWVtO1xuICAgICAgICAgICAgICAgICAgICAubm8tcGFkZGluZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuY29sLXNtLTYsIC5jb2wtbWQtNiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbC1zbS01LCAuY29sLW1kLTUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgXG59XG5cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA0ODBweCkge1xuICAgIC5tYWluLWNvbnRhaW5lcixcbiAgICAuZm9vdGVyLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0gLSAxKSB7XG4gICAgLm1hcmtldC1tZW51IHtcbiAgICAgICAgcGFkZGluZzogMTVweCAwIDIwcHggMDtcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDc2OHB4KSB7XG4gICAgLm1hcmtldC1tZW51ID4gZGl2IHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtdGV4dC1ncmF5O1xuICAgICAgICBmbG9hdDogbm9uZSFpbXBvcnRhbnQ7XG4gICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuICAgIH0gIFxuICAgIFxufVxuXG4uZm9vdGVyLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZy10b3A6IDBweDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQ29sdW1uIExheW91dHNcbiAqL1xuXG4ubWFpbjphZnRlcixcbi5jb2wtd3JhcHBlcjphZnRlciB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG4ubWFpbntcbiAgICAuYmFzU2xpZGVyLmRlZmF1bHRUaGVtZXtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgfVxuXG59XG5cbi5jb2wtbGVmdCxcbi5jb2wtcmlnaHQsXG4uY29sLW1haW4ge1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbn1cblxuLmNvbC1sZWZ0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSgyNDBweC85NjBweCk7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyAvKiBSZW1vdmUgdGhlIDE1cHggcGFkZGluZyAqL1xuICAgIGNsZWFyOiBsZWZ0O1xuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLmNvbC1yaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDI0MHB4Lzk2MHB4KTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwOyAvKiBSZW1vdmUgdGhlIDE1cHggcGFkZGluZyAqL1xuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLmNvbC1tYWluIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSg3MjBweC85NjBweCk7XG4gICAgbWluLWhlaWdodDogNDUwcHg7XG4gICAgXG59XG5cbi5jb2wxLWxheW91dCB7XG4gICAgLmNvbC1tYWluIHsgICAgICAgIFxuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgMTVweDsgXG4gICAgfVxufVxuXG4uY29sMi1sZWZ0LWxheW91dCB7XG4gICAgLmNvbC1tYWluIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwOyAvKiBSZW1vdmUgdGhlIDE1cHggcGFkZGluZyAqL1xuICAgIH1cbn1cblxuLmNvbDItcmlnaHQtbGF5b3V0IHtcbiAgICAuY29sLW1haW4ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7IC8qIFJlbW92ZSB0aGUgMTVweCBwYWRkaW5nICovXG4gICAgfVxufVxuXG4uY29sMy1sYXlvdXQge1xuICAgIC5jb2wtcmlnaHQge1xuICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgyMDBweC85NjBweCk7XG4gICAgfVxuXG4gICAgLmNvbC13cmFwcGVyIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDc2MHB4Lzk2MHB4KTtcblxuICAgICAgICAuY29sLW1haW4ge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoNTYwcHgvNzYwcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbC1sZWZ0IHtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDIwMHB4Lzc2MHB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgMTA5NXB4KSB7XG4gICAgLmNvbC1tYWluIHtcbiAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweDtcbiAgICAgICAgICAgIH1cbn1cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgMTAwMHB4KSB7XG4gICAgLmNvbDMtbGF5b3V0IHtcbiAgICAgICAgLmNvbC1yaWdodCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDI0MHB4Lzk2MHB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2wtd3JhcHBlciB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLmNvbC1tYWluIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoNzIwcHgvOTYwcHgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sLWxlZnQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDI0MHB4Lzk2MHB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmNvbC1sZWZ0LFxuICAgIC5jb2wtcmlnaHQsXG4gICAgLmNvbC1tYWluLFxuICAgIC5jb2wxLWxheW91dCAuY29sLWxlZnQsXG4gICAgLmNvbDEtbGF5b3V0IC5jb2wtcmlnaHQsXG4gICAgLmNvbDEtbGF5b3V0IC5jb2wtbWFpbixcbiAgICAuY29sMi1sZWZ0LWxheW91dCAuY29sLWxlZnQsXG4gICAgLmNvbDItbGVmdC1sYXlvdXQgLmNvbC1yaWdodCxcbiAgICAuY29sMi1sZWZ0LWxheW91dCAuY29sLW1haW4sXG4gICAgLmNvbDItcmlnaHQtbGF5b3V0IC5jb2wtbGVmdCxcbiAgICAuY29sMi1yaWdodC1sYXlvdXQgLmNvbC1yaWdodCxcbiAgICAuY29sMi1yaWdodC1sYXlvdXQgLmNvbC1tYWluLFxuICAgIC5jb2wzLWxheW91dCAuY29sLXdyYXBwZXIgLmNvbC1sZWZ0LFxuICAgIC5jb2wzLWxheW91dCAuY29sLXJpZ2h0LFxuICAgIC5jb2wzLWxheW91dCAuY29sLXdyYXBwZXIgLmNvbC1tYWluIHtcbiAgICAgICAgcGFkZGluZzogMCAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyAvLyBTaW5jZSBjb2x1bW5zIGFyZSBzdGFja2VkLCB3ZSB3YW50IHRoZXJlIHRvIGJlIHZlcnRpY2FsIHNwYWNpbmdcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC5jb2wzLWxheW91dCAuY29sLXdyYXBwZXIge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLmNvbC1tYWluIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgIC5jb2wtbWFpbiAuY29sLWxlZnQge1xuICAgICAgICBwYWRkaW5nOiAwOyAvKiBPbiBwcm9kdWN0IGxpc3RpbmcgcGFnZXMsIHRoZSBsZWZ0IGNvbHVtbiBnZXRzIG1vdmVkIGluc2lkZSBjb2wtbWFpbiBvbiBzbWFsbCB2aWV3cG9ydHMgKi9cbiAgICB9XG59XG5cbi8qIENvbnRlbnQgQ29sdW1ucyAqL1xuXG4uY29sMi1zZXQge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLmNvbC0xLFxuICAgIC5jb2wtMiB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZy1sYXJnZTtcblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2wtMSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLmNvbC0yIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAuY29sLTEsXG4gICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5uYXJyb3cge1xuICAgICAgICB3aWR0aDogMzMlO1xuICAgIH1cblxuICAgIC53aWRlIHtcbiAgICAgICAgd2lkdGg6IDY1JTtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUb3AgQ29udGFpbmVyXG4gKi9cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAudG9wLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogJG1heC1jb250YWluZXItd2lkdGg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwICR0cmltO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogR2xvYmFsIFNpdGUgTm90aWNlXG4gKi9cblxuLmdsb2JhbC1zaXRlLW5vdGljZSB7XG4gICAgYmFja2dyb3VuZDogJGMtZGFyaztcbiAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xuXG4gICAgLm5vdGljZS1pbm5lciB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTIwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6ICRtYXgtY29udGVudC13aWR0aDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmLXNpemUteHhzO1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogKDQwcHggLSAkZi1zaXplLXh4cykgLyAyO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogKDQwcHggLSAkZi1zaXplLXh4cykgLyAyO1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9kZW1vLWxvZ28ucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcm9tb3Rpb25hbCBNZXNzYWdlIEJhbm5lclxuICovXG5cbi5wcm9tby1tc2cge1xuICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbjogJGJveC1zcGFjaW5nO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIEdyaWRcbiAqL1xuXG4uZ3JpZDphZnRlciB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIE1lc3NhZ2VzXG4gKi9cbi5zdWNjZXNzIHtcbiAgICBjb2xvcjogJGMtc3VjY2Vzcztcbn1cblxuLmVycm9yIHtcbiAgICBjb2xvcjogJGMtZGFuZ2VyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubm90aWNlIHtcbiAgICBjb2xvcjogJGMtd2FybjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogTWVzc2FnZXNcbiAqL1xuXG4ubWVzc2FnZXMge1xuICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG59XG5cbi5tZXNzYWdlcyBsaSBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICBwYWRkaW5nOiA3cHggMTBweCA3cHggMjBweDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBmb250LXNpemU6ICRmLXNpemUtbDtcbn1cblxuLm1lc3NhZ2VzIGxpIGxpOmJlZm9yZSB7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogMDtcbiAgICBtYXJnaW4tdG9wOiAtNnB4O1xufVxuXG4ubWVzc2FnZXMgLmVycm9yLW1zZyBsaSB7XG4gICAgY29sb3I6ICRjLWJsYWNrO1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgJGMtZGFuZ2VyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWRhbmdlci1iYWNrZ3JvdW5kO1xufVxuXG4ubWVzc2FnZXMgLmVycm9yLW1zZyBsaTpiZWZvcmUge1xuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA2cHgsICRjLWRhbmdlcik7XG59XG5cbi5tZXNzYWdlcyAubm90aWNlLW1zZyBsaSB7XG4gICAgY29sb3I6ICRjLWJsYWNrO1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgJGMtd2FybjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy13YXJuLWJhY2tncm91bmQ7XG59XG5cbi5tZXNzYWdlcyAubm90aWNlLW1zZyBsaTpiZWZvcmUge1xuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA2cHgsICRjLXdhcm4pO1xufVxuXG4ubWVzc2FnZXMgLnN1Y2Nlc3MtbXNnIGxpIHtcbiAgICBjb2xvcjogJGMtYmxhY2s7XG4gICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAkYy1zdWNjZXNzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXN1Y2Nlc3MtYmFja2dyb3VuZDtcbn1cblxuLm1lc3NhZ2VzIC5zdWNjZXNzLW1zZyBsaTpiZWZvcmUge1xuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHJpZ2h0LCA2cHgsICRjLXN1Y2Nlc3MpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA5MTVweCkge1xuXG4gICAgLm9yZGVyLWxpc3QtZ3JpZCAuY29sLTEge1xuICAgICAgICB3aWR0aDogMzAlO1xuICAgIH1cblxuICAgIC5vcmRlci1saXN0LWdyaWQgLmNvbC0yIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICB9XG5cbiAgICAub3JkZXItbGlzdC1ncmlkIC5jb2wtMyB7XG4gICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgICB3aWR0aDogMjAlO1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUGFnZSBQb3B1cFxuICovXG5cbi5wYWdlLXBvcHVwIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6ICNGRkZGRkY7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4ucGFnZS1wb3B1cCBoMSB7XG4gICAgbWFyZ2luOiAwIDAgMC41ZW07XG4gICAgZm9udC1zaXplOiAzNnB4O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQYXltZW50IE1ldGhvZHNcbiAqL1xuXG4ucGF5bWVudC1tZXRob2RzIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ucGF5bWVudC1tZXRob2RzIGR0IHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyBkZCB7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG59XG5cbi5wYXltZW50LW1ldGhvZHMgLmZvcm0tbGlzdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiA1cHggMTVweCAxNXB4O1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyAuZm9ybS1saXN0OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsIDEwcHgsICRjLW1vZHVsZS1ib3JkZXIpO1xuICAgIHRvcDogLTExcHg7XG4gICAgbGVmdDogMzBweDtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyAuZm9ybS1saXN0OmFmdGVyIHtcbiAgICBAaW5jbHVkZSB0cmlhbmdsZSh1cCwgMTBweCwgJGMtbW9kdWxlLWJhY2tncm91bmQpO1xuICAgIHRvcDogLTEwcHg7XG4gICAgbGVmdDogMzBweDtcbn1cblxuLnBheW1lbnQtbWV0aG9kcyAuZm9ybS1saXN0IGxpOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFBsZWFzZSBXYWl0IChMb2FkaW5nIEluZGljYXRvcilcbiAqL1xuXG4ucGxlYXNlLXdhaXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7IC8qIFByZXZlbnQgdGhlIGxpbmVicmVhayBpbiB0aGUgSFRNTCBmcm9tIGNhdXNpbmcgbGF5b3V0IGlzc3VlcyAqL1xuXG4gICAgaW1nIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICB3aWR0aDogMjRweDsgLy8gQWN0dWFsIGltYWdlIGlzIDQ4cHgsIHRoZXJlYnkgc3VwcG9ydGluZyBoaS1yZXMgc2NyZWVuc1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUHJpY2UgQm94IC0gU3RhbmRhcmRcbiAqL1xuXG4ucHJpY2UtYm94IHtcbiAgICBtYXJnaW46ICRlbGVtZW50LXNwYWNpbmcgMDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2Fucztcbn1cblxuLnByaWNlLWJveCBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ucHJpY2Utbm90aWNlIHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xufVxuXG4ucHJpY2UtYm94IC5wcmljZSB7XG4gICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG59XG5cbi5wcmljZS1ib3ggLnByaWNlLFxuLnByaWNlIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2Fucztcbn1cblxuLnByaWNlLWJveCAucHJpY2UtbGFiZWwge1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbn1cblxuLnByaWNlLWJveCAubWluaW1hbC1wcmljZS1saW5rIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBjb2xvcjogJGMtdGV4dC1wcmltYXJ5O1xuICAgIGRpc3BsYXk6IGJsb2NrOyAvKiBXZSB3YW50IHRoaXMgdG8gc2hvdyBvbiBpdHMgb3duIGxpbmUsIG90aGVyd2lzZSB0aGUgbGF5b3V0IGxvb2tzIGZ1bmt5ICovXG5cbiAgICAubGFiZWwge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUHJpY2UgQm94IC0gU3BlY2lhbFxuICovXG5cbi5wcmljZS1ib3ggLm9sZC1wcmljZSxcbi5wcmljZS1ib3ggLnNwZWNpYWwtcHJpY2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgIC5wcmljZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnByaWNlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbn1cblxuLnByaWNlLWJveCAub2xkLXByaWNlIHtcbiAgICAucHJpY2Uge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICB9XG59XG5cbi5wcmljZS1ib3ggLnNwZWNpYWwtcHJpY2Uge1xuICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgcGFkZGluZy1sZWZ0OiAxZW07XG5cbiAgICAucHJpY2UtbGFiZWwge1xuICAgICAgICBjb2xvcjogI0Q4NEQzQztcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByaWNlIEJveCAtIFRheGVzXG4gKi9cblxuLnByaWNlLWJveCAucHJpY2UtZXhjbHVkaW5nLXRheCxcbi5wcmljZS1ib3ggLnByaWNlLWluY2x1ZGluZy10YXgge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5zcGFuLndlZWUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUaWVyIFByaWNlc1xuICovXG5cbi5wcm9kdWN0LXByaWNpbmcsXG4udGllci1wcmljZXMsXG4udGllci1wcmljZXMtZ3JvdXBlZCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgYmFja2dyb3VuZDogI0ZCRjRERTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTJENEM3O1xuICAgIG1hcmdpbi10b3A6ICRlbGVtZW50LXNwYWNpbmc7XG5cbiAgICBsaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICB9XG4gICAgLmJlbmVmaXQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuICAgIC5wcmljZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogSXRlbSBPcHRpb25zXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaXRlbS1vcHRpb25zIHtcbiAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgZHQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJzogJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRkIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICAgICAgbWFyZ2luOiAwIDAgNnB4O1xuICAgIH1cbn1cblxuLnRydW5jYXRlZCxcbi50cnVuY2F0ZWQgYS5kb3RzIHtcbiAgICBjdXJzb3I6IGhlbHA7XG59XG5cbi50cnVuY2F0ZWQgYS5kZXRhaWxzIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi50cnVuY2F0ZWQgLnRydW5jYXRlZF9mdWxsX3ZhbHVlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMzAwO1xufVxuXG4udHJ1bmNhdGVkIC50cnVuY2F0ZWRfZnVsbF92YWx1ZSAuaXRlbS1vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAzMDA7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1hY3Rpb247XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y2RjZGNjtcbiAgICB0b3A6IDIxcHg7XG4gICAgbGVmdDogLTEwMHB4O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHVwLCA3cHgsICRjLWFjdGlvbik7XG4gICAgICAgIGxlZnQ6ICgxMDBweCArIC0zcHgpO1xuICAgICAgICB0b3A6IC03cHg7XG4gICAgfVxufVxuXG4udHJ1bmNhdGVkIC50cnVuY2F0ZWRfZnVsbF92YWx1ZSAuaXRlbS1vcHRpb25zID4gcCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi50cnVuY2F0ZWQgLnNob3cgLml0ZW0tb3B0aW9ucyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuXG4gICAgLnRydW5jYXRlZCB7XG4gICAgICAgIGN1cnNvcjogaW5oZXJpdDtcblxuICAgICAgICBhLmRldGFpbHMge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50cnVuY2F0ZWRfZnVsbF92YWx1ZSB7XG4gICAgICAgICAgICAuaXRlbS1vcHRpb25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcmludGVyIEZyaWVuZGx5IFBhZ2VcbiAqL1xuXG4ucGFnZS1wcmludCB7XG4gICAgd2lkdGg6IDYuNWluO1xuICAgIG1hcmdpbjogMjBweDtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBBZGQgdG8gbGlua3NcbiAqL1xuXG4uYWRkLXRvLWxpbmtzIHtcbiAgICBtYXJnaW46ICRlbGVtZW50LXNwYWNpbmcgMDtcblxuICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDBweCAzcHggM3B4O1xuICAgIH1cbn1cblxuLmFkZC10by1saW5rcyAuc2VwYXJhdG9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcm9kdWN0IEltYWdlXG4gKi9cblxuLnByb2R1Y3QtaW1hZ2UsXG4ubm8tdG91Y2ggLnByb2R1Y3QtaW1nLWJveCAucHJvZHVjdC1pbWFnZTpub3QoLnpvb20tYXZhaWxhYmxlKTpob3ZlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5AaW5jbHVkZSBicCAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgYm9keSAucHJvZHVjdC1pbWctYm94IC5wcm9kdWN0LWltYWdlOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIH1cbn1cblxuLm5vLXRvdWNoIC5wcm9kdWN0LWltYWdlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXItaGlnaGxpZ2h0O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBSYXRpbmdzXG4gKi9cblxuLnJhdGluZ3Mge1xuICAgIG1hcmdpbjogN3B4IDA7XG5cbiAgICAucmF0aW5nLWJveCxcbiAgICAucmF0aW5nLWxpbmtzIHtcbiAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICB9XG5cbiAgICAucmF0aW5nLWJveCB7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICB3aWR0aDogNjVweDtcbiAgICAgICAgaGVpZ2h0OiAxM3B4O1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTYxNXB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgICAucmF0aW5nLWJveCAucmF0aW5nIHtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjAwcHg7XG4gICAgfVxuICAgIC5hbW91bnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiA1cHggYXV0bztcbiAgICB9XG5cbiAgICAucmF0aW5nLWxpbmtzIHtcbiAgICAgICAgLnNlcGFyYXRvciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQcm9kdWN0IERldGFpbHMgXG5cbiAqL1xuLmRvd25sb2FkLWl0ZW0ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTdGFuZGFyZCBGb3JtYXR0ZWQgVGV4dCBCbG9ja1xuICovXG5cbi5zdGQgcCB7XG4gICAgbWFyZ2luOiAwIDAgJGItbWFyZ2luLWJvdHRvbTtcbn1cblxuLnN0ZCBvbCB7XG4gICAgbGlzdC1zdHlsZTogZGVjaW1hbCBvdXRzaWRlO1xuICAgIG1hcmdpbi1ib3R0b206ICRiLW1hcmdpbi1ib3R0b207XG59XG5cbi5zdGQgb2wgbGkge1xuICAgIG1hcmdpbi1sZWZ0OiAyZW07XG59XG5cbi5zdGQgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYi1tYXJnaW4tYm90dG9tO1xufVxuXG4uc3RkIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogMmVtO1xufVxuXG4uc3RkIC5ub3RlIHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUYWJzXG4gKi9cblxuLnRhYnMge1xuICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG4gICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogVG9vbGJhclxuICovXG5cbi50b29sYmFyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBwYWRkaW5nOiA1cHggMTBweCAwcHggMTBweDtcbiAgICBjbGVhcjogYm90aDtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4ucGFnZXItbm8tdG9vbGJhciB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xufVxuXG4vLyBUaGlzIHdpbGwgYXBwbHkgdG8gdGhlIGJvdHRvbSB0b29sYmFyXG4ucGFnZXItbm8tdG9vbGJhciB+IC5wYWdlci1uby10b29sYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG59XG5cbi50b29sYmFyLFxuLnBhZ2VyIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICBjb2xvcjogJGMtdGV4dDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG59XG4ucGFnZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBsaSBhIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn0gXG4udmlldy1tb2RlIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi50b29sYmFyIGxhYmVsLFxuLnBhZ2VyLW5vLXRvb2xiYXIgbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldDogOHB4O1xuXG4uc29ydGVyIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgbGFiZWwge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnOic7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zb3J0ZXIgPiAuc29ydC1ieSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuXG4gICAgLnNvcnQtYnktc3dpdGNoZXIge1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgIH1cbiAgICAuc29ydC1ieS1zd2l0Y2hlci0tYXNjIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCs0cHggKC01NTBweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTBweCs0cHggKC01NTBweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc29ydC1ieS1zd2l0Y2hlci0tZGVzYyB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDArNHB4ICgtNTc1cHgrJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCk7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHgrNHB4ICgtNTc1cHgrJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zb3J0ZXIgPiAudmlldy1tb2RlIHtcbiAgICBmbG9hdDogcmlnaHQ7XG5cbiAgICAuZ3JpZCxcbiAgICAubGlzdCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICB9XG4gICAgLmdyaWQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCAoLTUwMHB4KyR0b29sYmFyLWljb24tcGFkZGluZy1vZmZzZXQpO1xuICAgIH1cbiAgICBzdHJvbmcuZ3JpZCxcbiAgICBhLmdyaWQ6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTBweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0ICgtNTAwcHgrJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCk7XG4gICAgfVxuICAgIC5saXN0IHtcbiAgICAgICAgLy8gV2Ugd2FudCB0aGUgaWNvbiB0byBsaW5lIHVwIHdpdGggdGhlIGNvbnRhaW5lciB3aWR0aCwgc28gd2UgYXJlIGFkZGluZyAzcHhcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCszcHggKC01MjVweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICB9XG4gICAgc3Ryb25nLmxpc3QsXG4gICAgYS5saXN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTUwcHgrJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldCszcHggKC01MjVweCskdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0KTtcbiAgICB9XG59XG5cbi5wYWdlciB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmID4gLmNvdW50LWNvbnRhaW5lciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5hbW91bnQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG1hcmdpbjogMCAxNXB4IDAgMDtcbiAgICB9XG5cbiAgICAubGltaXRlciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuXG4gICAgICAgICYgPiBsYWJlbCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICc6JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbW91bnQsXG4gICAgLmxpbWl0ZXIsXG4gICAgLnBhZ2VzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIH1cblxufVxuXG4ucGFnZXMge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuXG4gICAgc3Ryb25nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5wYWdlcyBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi5wYWdlcyBhLFxuLnBhZ2VzIC5jdXJyZW50IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyOiAwO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMjVweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xufVxuXG4ucGFnZXMgLmN1cnJlbnQsXG4ucGFnZXMgLmN1cnJlbnQ6aG92ZXIge1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5wYWdlcyAubmV4dCxcbi5wYWdlcyAucHJldmlvdXMge1xuICAgIC8vIE5ldyBIUDVCUCB0ZWNobmlxdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2NvbW1pdC9hYTAzOTZlYWU3NTdjOWUwM2RkYTRlNDYzZmIwZDRkYjVhNWY4MmQ3XG4gICAgZm9udDogMC8wIGE7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1hY3Rpb247XG4gICAgfVxufVxuXG4ucGFnZXMgLm5leHQge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDRweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgfVxuICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDRweCwgJGMtc3RpbXVsdXMpO1xuICAgIH1cbn1cblxuLnBhZ2VzIC5wcmV2aW91cyB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShsZWZ0LCA0cHgsICRjLWFjdGlvbik7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAtM3B4O1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgIH1cbiAgICAmOmhvdmVyOmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGxlZnQsIDRweCwgJGMtc3RpbXVsdXMpO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLy8gT25seSBoaWRlIHRoZSBcImFtb3VudFwiIGVsZW1lbnQgaWYgcGFnZSBoYXMgcGFnaW5hdGlvbiBBTkQgaXMgaW5zaWRlIG9mIHRvb2xiYXIgKHNpbmNlIHdlIG9ubHkgd2FudCBpdCBoaWRpbmcgb24gcHJvZHVjdCBsaXN0aW5nKVxuICAgIC8vIE90aGVyd2lzZSBzaG93IHRoZSBhbW91bnQgc2luY2UgdGhlcmUgaXMgcGxlbnR5IG9mIHNwYWNlXG4gICAgLnBhZ2VyIC5hbW91bnQtLWhhcy1wYWdlcyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnBhZ2VzIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLy8gV2hlbiB0aGVyZSBhcmUgNSsgcGFnZXMsIGl0IGlzIGltcG9ydGFudCB0byBoaWRlIHRoaXMgbGFiZWwgaW4gb3JkZXIgdG8gbm90IGJyZWFrIHRvIHRocmVlIGxpbmVzXG4gICAgLmxpbWl0ZXIgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLy8gT25lIG9uZSBjb2x1bW4gbGF5b3V0cywgdGhlIHRvb2xiYXIgZG9lc24ndCBoYXZlIHRvIGJyZWFrIHVudGlsIGEgc21hbGxlciB2aWV3cG9ydFxuICAgIC5jb2wxLWxheW91dCB7XG4gICAgICAgIC5zb3J0ZXIsXG4gICAgICAgIC5wYWdlciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYWdlciB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuXG4gICAgICAgICAgICAucGFnZXMge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY291bnQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG5cbiAgICAuY29sMi1sZWZ0LWxheW91dCxcbiAgICAuY29sMi1yaWdodC1sYXlvdXQsXG4gICAgLmNvbDMtbGF5b3V0IHtcbiAgICAgICAgLnNvcnRlcixcbiAgICAgICAgLnBhZ2VyIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBhZ2VyIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG5cbiAgICAgICAgICAgIC5wYWdlcyB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb3VudC1jb250YWluZXIge1xuICAgICAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAxMjc5cHgpIHtcblxuICAgIC50b29sYmFyIC52aWV3LW1vZGUgPiBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBUYXggLSBGdWxsIFRheCBTdW1tYXJ5XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4jY2hlY2tvdXQtcmV2aWV3LXRhYmxlLFxuI3Nob3BwaW5nLWNhcnQtdG90YWxzLXRhYmxlLFxuYm9keS5jdXN0b21lci1hY2NvdW50IC5kYXRhLXRhYmxlIHtcbiAgICAuc3VtbWFyeS1jb2xsYXBzZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGRvd24sIDdweCwgJGMtYmx1ZSk7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoZG93biwgN3B4LCAkYy1zdGltdWx1cyk7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2hvdy1kZXRhaWxzIHtcbiAgICAgICAgLnN1bW1hcnktY29sbGFwc2Uge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHVwLCA3cHgsICRjLWJsdWUpO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKHVwLCA3cHgsICRjLXN0aW11bHVzKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQ2VudGVyIHRoZSBhcnJvdywgYXMgdGhlIGZvbnQgaXMgbGFyZ2VyIGluIHRmb290XG4jc2hvcHBpbmctY2FydC10b3RhbHMtdGFibGUgdGZvb3QgdGQgLnN1bW1hcnktY29sbGFwc2Uge1xuICAgICY6YmVmb3JlLFxuICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTWFnZW50byBIZWxwZXJzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYS1jZW50ZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmEtcmlnaHQsXG4uYWxpZ24tcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ubm8tZGlzcGxheSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ubm9icixcbi5ub3dyYXAge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi53aWR0aC1mdWxsIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ3VzdG9tIEhlbHBlcnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFByaW50IFN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnBhZ2UtcHJpbnQgLnByaW50LWhlYWQge1xuICAgIG1hcmdpbjogMCAwIDE1cHg7XG59XG5cbi5wYWdlLXByaW50IC5wcmludC1oZWFkIC5sb2dvIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBtYXgtaGVpZ2h0OiA1MHB4O1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ29tbW9uIHN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmhpZGUtb24tbW9iaWxle1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuc2hvdy1vbi1tb2JpbGV7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAuaGlkZS1vbi1tb2JpbGV7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgLnNob3ctb24tbW9iaWxle1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICBib2R5IC5tb2RhbC1jb250ZW50IC5kcm9wZG93bi1tZW51e1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuYm9keXtcbiAgICAubW9kYWwtY29udGVudHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYmxhY2s7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIC5kcm9wZG93bi1tZW51e1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ibGFjaztcbiAgICAgICAgfVxuICAgICAgICAubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgPiB1bCA+IGxpe1xuICAgICAgICAgICAvKiBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ki9cbiAgICAgICAgfVxuICAgICAgICAubWVnYS1kcm9wZG93bi1tZW51ID4gbGkgPiB1bCA+IGxpID4gYXtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC5tZWdhLWRyb3Bkb3duLW1lbnU6YmVmb3JlLCAubWVnYS1kcm9wZG93bi1tZW51OmFmdGVye1xuICAgICAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLm1lZ2EtbWVudXtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDAgbm9uZTtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24uYnRuLXdhcm5pbmd7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgY29sb3I6ICRjLWJsYWNrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XG4gICAgICAgICAgICBvdXRsaW5lLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBvdXRsaW5lLWNvbG9yOiBub25lO1xuICAgICAgICAgICAgb3V0bGluZS13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgJjpob3ZlcntcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtYmxhY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uLmNsb3Nle1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgICAgICB9XG4gICAgICAgIC5idG4uZm9jdXMsIC5idG46Zm9jdXMsIC5idG46aG92ZXJ7XG4gICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBaZWJyYSBzdHlsZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5wcm9kdWN0LW1vcmV7XG4gICAgYm9yZGVyLXRvcDogMnB4IGRvdHRlZCAkYy16ZWJyYS1ncmV5O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBkb3R0ZWQgJGMtemVicmEtZ3JleTtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgLnJvdy56ZWJyYS1zdHlsZXtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIHBhZGRpbmc6IDE1cHggMTBweDtcbiAgICAgICAgJjpudGgtY2hpbGQob2RkKXtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXplYnJhLWdyZXk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmxpIC5nbHlwaGljb257XG4gICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFJlbGF0ZWQgUHJvZHVjdHMgU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucmVsYXRlZC1wcm9kdWN0cyB7XG4gICAgbWFyZ2luLXRvcDogODBweDtcbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICB9XG4gICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICAgLm5hbWUge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgYSB7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxpIHtcbiAgICAgICAgd2lkdGg6IDMwJSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogR2V0IEluc3BpcmVkIFN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmluc3BpcmUtZ3JpZCB7XG4gICAgLmdyaWQtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgYm9yZGVyOiAxcHggI0M4QzhDOCBzb2xpZDtcbiAgICB9XG4gICAgaDIge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgfVxufVxuXG4vKiBpbmRpdmlkdWFsIHByb2plY3QgcGFnZSAqL1xuXG4ucHJvamVjdC1zdG9yeSB7XG4gICAgaW1nIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgfVxuICAgIC55ZWxsb3cge1xuICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgcC5ib2xkZXItdHlwZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweCFpbXBvcnRhbnQ7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbSFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbn1cbi5wcm9qZWN0LW5hdmlnYXRpb24ge1xuICAgIG1hcmdpbi10b3A6IDQ1cHg7XG4gICAgYm9yZGVyLXRvcDogMnB4IGRvdHRlZCAjYTBhMGEwO1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA0MHB4O1xuICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGgyIHt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxuICAgIH1cbiAgICBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICB9XG4gICAgLmNvbC1zbS0zIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG59XG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5wcm9qZWN0LW5hdmlnYXRpb24ge1xuICAgICAgICAuY29sLXNtLTMge1xuICAgICAgICAgICAgbWluLWhlaWdodDogMjIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59IiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBGT1JNUyAtIENPTU1PTlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogRmllbGRzZXRzXG4gKi9cblxuLmZpZWxkc2V0IHtcblxuICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIH1cblxuICAgIHAucmVxdWlyZWQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgIH1cbn1cblxuLmZpZWxkc2V0ICsgLmZpZWxkc2V0IHtcbiAgICBtYXJnaW4tdG9wOiAoJGdhcCAvIDIpO1xufVxuXG5mb3JtIC5sZWdlbmQge1xuICAgIEBpbmNsdWRlIGgzO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDdweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogSW5wdXQgQm94XG4gKi9cblxuLmlucHV0LWJveCB7XG4gICAgcGFkZGluZy10b3A6IDJweDtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG5cbmxpLmNlbnRpbmVsLWxvZ29zIGRpdi5pbnB1dC1ib3ggIHtcbiAgICBpbWcge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufVxuXG5cbi8qIEZvciBhZGphY2VudCBzZWxlY3QgaW5wdXRzLiAqL1xuLyogRXhhbXBsZTogY3JlZGl0IGNhcmQgZXhwaXJhdGlvbiBtb250aCBhbmQgeWVhci4gKi9cbi5pbnB1dC1ib3ggLnYtZml4IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIExhYmVsc1xuICovXG5cbmxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBAaW5jbHVkZSBub3Qtc2VsZWN0YWJsZTtcbn1cblxubGFiZWwucmVxdWlyZWQ6YWZ0ZXIsXG5zcGFuLnJlcXVpcmVkOmFmdGVyIHtcbiAgICBjb250ZW50OiAnIConO1xuICAgIGNvbG9yOiAkYy1kYW5nZXI7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG59XG5cbmxhYmVsLnJlcXVpcmVkIGVtLFxuc3Bhbi5yZXF1aXJlZCBlbSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogSGludHNcbiAqL1xuXG4uaW5wdXQtaGludCB7XG4gICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNlbGVjdFxuICovXG5cbnNlbGVjdCB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xufVxuXG5zZWxlY3QgKyBzZWxlY3Qge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbnNlbGVjdFttdWx0aXBsZV0ge1xuICAgIHdpZHRoOiAyNzBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1pbnB1dC1ib3JkZXI7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLWw7XG4gICAgcGFkZGluZzogNXB4O1xufVxuXG4uc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IC41ZW0gMS41ZW07XG4gICAgLyptaW4td2lkdGg6IDIwZW07Ki9cbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDUwJTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUE0QUFBQU1DQVlBQUFCU2dJemFBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlKcFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TUMxak1EWXdJRFl4TGpFek5EYzNOeXdnTWpBeE1DOHdNaTh4TWkweE56b3pNam93TUNBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5TQk5ZV05wYm5SdmMyZ2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZORFpGTkRFd05qbEdOekZFTVRGRk1rSkVRMFZEUlRNMU4wUkNNek15TWtJaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNk5EWkZOREV3TmtGR056RkVNVEZGTWtKRVEwVkRSVE0xTjBSQ016TXlNa0lpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRvME5rVTBNVEEyTjBZM01VUXhNVVV5UWtSRFJVTkZNelUzUkVJek16SXlRaUlnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRG8wTmtVME1UQTJPRVkzTVVReE1VVXlRa1JEUlVORk16VTNSRUl6TXpJeVFpSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QdUdzZ3dRQUFBQTVTVVJCVkhqYVl2ei8vejhET1lDSmdVeEFmNDJNUUl6VGswRC9NK0t6a1JHUG9RU2R5a2lLSnJCR3BPaGdKRllUV05FSWlFZUFBQU1Bek5FTkVPSCtkbzhBQUFBQVNVVk9SSzVDWUlJPSk7XG4gICAgcGFkZGluZy1yaWdodDogMS41ZW07XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICdoZXknO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogVGV4dGFyZWFcbiAqL1xuXG50ZXh0YXJlYSB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQ1MHB4O1xuICAgIHBhZGRpbmc6IDVweDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogSW5wdXRzXG4gKi9cblxuLmlucHV0LXRleHQge1xuICAgIEBpbmNsdWRlIGFwcGVhcmFuY2Uobm9uZSk7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygycHgpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWlucHV0LWJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1sO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWlucHV0LWJvcmRlci1mb2N1cztcbiAgICB9XG59XG5cbi5pbnB1dC10ZXh0LnZhbGlkYXRpb24tZmFpbGVkIHtcbiAgICBib3JkZXItY29sb3I6ICRjLWRhbmdlcjtcbn1cblxuLy8gQ29sb3IgdGhlIG91dGxpbmUgZm9yIGZvY3VzZWQgZmllbGRzIGluIENocm9tZSwgb3IgZWxzZSB0aGUgZGVmYXVsdCBibHVlIGRyb3ducyBvdXQgdGhlIDFweCByZWQgYm9yZGVyXG4uaW5wdXQtdGV4dC52YWxpZGF0aW9uLWZhaWxlZDpmb2N1cyB7XG4gICAgb3V0bGluZS1jb2xvcjogdGludCgkYy1kYW5nZXIsIDUwJSk7XG59XG5cbmlucHV0W3R5cGU9ZW1haWxdLFxuaW5wdXRbdHlwZT1zZWFyY2hdLFxuaW5wdXRbdHlwZT1udW1iZXJdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF0sXG5pbnB1dFt0eXBlPXRlbF0sXG5pbnB1dFt0eXBlPXRleHRdIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgcGFkZGluZzogMCA4cHg7XG59XG5cbmlucHV0W3R5cGU9ZW1haWxdLFxuaW5wdXRbdHlwZT1zZWFyY2hdLFxuaW5wdXRbdHlwZT1udW1iZXJdLFxuaW5wdXRbdHlwZT1wYXNzd29yZF0sXG5pbnB1dFt0eXBlPXRlbF0sXG5pbnB1dFt0eXBlPXRleHRdIHtcbiAgICB3aWR0aDogKDIzMHB4ICsgMTM1cHgpO1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLyogT25seSBzaG93IG9uIGlQaG9uZXMgKG5vdCBpUGFkcyBvciBhbnkgb3RoZXIgZGV2aWNlKSAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogNTY4cHgpIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgaW5wdXRbdHlwZT1lbWFpbF0sXG4gICAgaW5wdXRbdHlwZT1zZWFyY2hdLFxuICAgIGlucHV0W3R5cGU9bnVtYmVyXSxcbiAgICBpbnB1dFt0eXBlPXBhc3N3b3JkXSxcbiAgICBpbnB1dFt0eXBlPXRlbF0sXG4gICAgaW5wdXRbdHlwZT10ZXh0XSxcbiAgICBzZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnQgZnJvbSB6b29taW5nIG9uIGZvY3VzICovXG4gICAgfVxufVxuXG4uaWU4IC5pbnB1dC10ZXh0IHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIElucHV0cyAtIFF1YW50aXR5XG4gKi9cblxuaW5wdXRbdHlwZT1udW1iZXJdLnF0eSxcbmlucHV0W3R5cGU9dGV4dF0ucXR5IHtcbiAgICB3aWR0aDogM2VtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBQbGFjZWhvbGRlclxuICovXG5cbjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICRjLWlucHV0LXBsYWNlaG9sZGVyO1xufVxuXG5pbnB1dDotbW96LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogJGMtaW5wdXQtcGxhY2Vob2xkZXI7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIENoZWNrYm94IEFuZCBSYWRpb1xuICovXG5cbi5jaGVja2JveCxcbi5yYWRpbyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogLTFweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5jaGVja2JveCArIGxhYmVsLFxuLnJhZGlvICsgbGFiZWwge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogODUlO1xuICAgIHBhZGRpbmc6IDAgMCAwIDhweDtcbiAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBWYWxpZGF0aW9uXG4gKi9cblxucC5yZXF1aXJlZCxcbi52YWxpZGF0aW9uLWFkdmljZSB7XG4gICAgbWFyZ2luOiA1cHggMCAwO1xuICAgIGNvbG9yOiAkYy1kYW5nZXI7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEZvcm0gTGlzdFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvcm0tbGlzdCB7XG5cbiAgICAmID4gbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG4gICAgfVxuICAgIHNlbGVjdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgd2lkdGg6ICgyMzBweCArIDEzNXB4KTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5pbnB1dC1yYW5nZSAuaW5wdXQtdGV4dCB7XG4gICAgICAgIHdpZHRoOiA3NHB4O1xuICAgIH1cblxuICAgIC5maWVsZCxcbiAgICAud2lkZSxcbiAgICAuY29udHJvbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICB9XG59XG5cbi8qIFR1cm4gdGhlIGxhYmVsIG9mIGNvbnRyb2xzIChyYWRpby9jaGVja2JveCkgaW50byBhIGJ1dHRvbiBzdHlsZSB0aGF0IHdyYXBzIHRoZSBpbnB1dCAqL1xuLmZvcm0tbGlzdCAuY29udHJvbCxcbi5zcC1tZXRob2RzIGR0LFxuI2NoZWNrb3V0LXNoaXBwaW5nLW1ldGhvZC1sb2FkIC5zcC1tZXRob2RzIGRkLFxuI2NvLXNoaXBwaW5nLW1ldGhvZC1mb3JtIC5zcC1tZXRob2RzIGRkLFxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3Qge1xuXG4gICAgZGl2LmlucHV0LWJveCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5wdXQucmFkaW8sXG4gICAgaW5wdXQuY2hlY2tib3gge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtNDBweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSB0b3VjaC1idXR0b247XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgbWluLXdpZHRoOiAyNTBweDtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4IDZweCA0MHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQtaG92ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBXaGVuIGEgbGFiZWwgaXMgbmV4dCB0byBhbiBpbnB1dCB0aGF0IGlzIHNldCB0byBub3QgZGlzcGxheSwgd2Ugc2hvdWxkIHN0eWxlIHRoZSBsYWJlbCBpbiBhIG5vbi1jbGlja2FibGUgc3RhdGUgKi9cbiAgICAubm8tZGlzcGxheSArIGxhYmVsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IGxhYmVsLFxuLmNvbDItc2V0IC5mb3JtLWxpc3QgLmNvbnRyb2wgbGFiZWwge1xuICAgIG1pbi13aWR0aDogaW5oZXJpdDtcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uZm9ybS1saXN0IC5jb250cm9sLnJlbWVtYmVyLW1lLWJveCB7XG4gICAgbGFiZWwge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICBtaW4td2lkdGg6IGluaGVyaXQ7XG4gICAgfVxufVxuXG4uZm9ybS1saXN0IC5jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gICAgbGFiZWwge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICB9XG4gICAgLnJhZGlvLFxuICAgIC5jaGVja2JveCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgIH1cbiAgICAuaW5wdXQtYm94IHtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxufVxuXG5mb3JtIHtcbiAgICAuZm9ybS1pbnN0cnVjdGlvbnMge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG4gICAgfVxufVxuLnJlZ2lzdGVyZWQtdXNlcnMge1xuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQhaW1wb3J0YW50O1xuICAgICAgICBidXR0b24uYnV0dG9uIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFRhYmxlIEhlbHBlcnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oaWRlLXRoIHtcbiAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcbn1cbnRkIHt2ZXJ0aWNhbC1hbGlnbjogdG9wO31cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIERhdGEgVGFibGVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5kYXRhLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmRhdGEtdGFibGUgdGQsXG4uZGF0YS10YWJsZSB0aCB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uZGF0YS10YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZDogJGMtdGFibGUtYmFja2dyb3VuZDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRhdGEtdGFibGUgdGhlYWQgdGgsXG4uZGF0YS10YWJsZSB0Ym9keSB0ZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbn1cblxuLmRhdGEtdGFibGUgdGJvZHkgdGQsXG4uZGF0YS10YWJsZSB0Zm9vdCB0ZCB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xufVxuXG4uZGF0YS10YWJsZSB0Zm9vdCB0ciB7XG4gICAgYmFja2dyb3VuZDogJGMtdGFibGUtYmFja2dyb3VuZDtcbn1cblxuLmRhdGEtdGFibGUgdGJvZHkgdGQgLml0ZW0tb3B0aW9ucyB7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcblxuICAgIGR0OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJzonO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogR2VuZXJpYyBJbmZvIFRhYmxlXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaW5mby1ib3gge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICBwYWRkaW5nOiAxMnB4IDE1cHg7XG4gICAgbWFyZ2luOiAwIDAgMTVweDtcblxuICAgIGgyIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICB9XG59XG5cbi5pbmZvLXRhYmxlIHRoLFxuLmluZm8tdGFibGUgdGQge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi5pbmZvLXRhYmxlIHRoIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBwYWRkaW5nOiA0cHggMjBweCA0cHggMDtcbn1cblxuLmluZm8tdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDRweCAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBaZWJyYS1TdHJpcGUgVGFibGVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi56ZWJyYS10YWJsZSB7XG4gICAgdHI6Zmlyc3QtY2hpbGQsXG4gICAgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtdGFibGUtYm9yZGVyO1xuICAgIH1cblxuICAgIHRkLFxuICAgIHRoIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRhYmxlLWJvcmRlcjtcbiAgICAgICAgcGFkZGluZzogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICB0ciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLXRhYmxlLXplYnJhLWV2ZW47XG4gICAgfVxuXG4gICAgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy10YWJsZS16ZWJyYS1vZGQ7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBMaW5lYXJpemUgVGFibGVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtaXhpbiBsaW5lYXJpemUtdGFibGUge1xuXG4gICAgdHIsXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICB0aGVhZCB0aCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgdGhlYWQgdGgubGluLWhpZGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIHRoZWFkIHRoOm50aC1jaGlsZCgxbisyKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgdGJvZHkgdHIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIH1cblxuICAgIHRib2R5IHRkIHtcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDRweDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIH1cblxuICAgIHRib2R5IHRkLmxpbi1oaWRlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICB0Ym9keSB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgIH1cblxuICAgIHRib2R5IHRkOmZpcnN0LWNoaWxkLFxuICAgIHRib2R5IHRkOmZpcnN0LWNoaWxkIGgzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgdGJvZHkgdGRbZGF0YS1yd2QtbGFiZWxdIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgIH1cblxuICAgIHRib2R5IHRkW2RhdGEtcndkLWxhYmVsXTpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtcndkLWxhYmVsKSBcIjpcIjtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIHRmb290IHRyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIHRmb290IHRyOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcbiAgICB9XG5cbiAgICB0Zm9vdCB0ZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICB0Zm9vdCB0ZC5saW4taGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgdGZvb3QgdGQ6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMy81KTtcbiAgICB9XG5cbiAgICB0Zm9vdCB0ZDpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgyLzUpO1xuICAgIH1cblxuICAgIC8qIEhlbHBlcnMgKi9cblxuICAgIC5saW5lYXJpemUtaGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmxpbmVhcml6ZS11bnBhZCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmxpbmVhcml6ZS1zaG93IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAubGluZWFyaXplLXRhYmxlIHtcbiAgICAgICAgQGluY2x1ZGUgbGluZWFyaXplLXRhYmxlO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAubGluZWFyaXplLXRhYmxlLWxhcmdlIHtcbiAgICAgICAgQGluY2x1ZGUgbGluZWFyaXplLXRhYmxlO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtc21hbGwgKyAxKSB7XG4gICAgLmxpbmVhcml6ZS10YWJsZSAubGluZWFyaXplLWNvbGxhcHNlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEdsb2JhbFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaHRtbCxcbmJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLnJvdyB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4ubWFpbi1jb250YWluZXIgeyAgICBcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xufVxuLmZvb3Rlcixcbi5wYWdlLWhlYWRlcixcbi50b3AtaGVhZGVyLWJhY2tncm91bmQsXG4ubWFpbiB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuLmNtcy1ob21lIC5tYWluIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbi5wYWdlLWhlYWRlciB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5oZWFkZXItd3JhcHBlcixcbi5mb290ZXItY29udGFpbmVyIHsgICAgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcbiAgICBjbGVhcjogYm90aDtcbn1cbi5mb290ZXItY29udGFpbmVyIHtcbiAgICBjbGVhcjogYm90aDsgICAgXG59XG4uc2l0ZW1hcCwgLnByb2R1Y3Qtc2l0ZW1hcCwgLmNtcy1zaXRlbWFwLCAuY21zLXByb2R1Y3RzLXNpdGVtYXAge1xuICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgLnNpdGVtYXAtbGluayB7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gICAgaDEge1xuICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgdWwgbGkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgLnNpdGVtYXAtbGluayB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2hvdy1pbi1tb2JpbGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuc2hvdy1pbi1tb2JpbGUge2Rpc3BsYXk6IG5vbmU7fVxufVxuXG4uY29sLW1haW4ge1xuICAgIGltZyB7bWF4LXdpZHRoOiAxMDAlO31cbn1cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgLnZpZGVvV3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsgLyogMTY6OSAqL1xuICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIGlmcmFtZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1hcC1jb250YWluZXIgeyBcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyBcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsgXG4gICAgICAgIGhlaWdodDogMDsgXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47IFxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7IFxuICAgICAgICBpZnJhbWUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBcbiAgICAgICAgICAgIHRvcDogMDsgXG4gICAgICAgICAgICBsZWZ0OiAwOyBcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlOyBcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH0gXG4gICAgLm1haW4tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICB9XG59XG4uY21zLWhvbWUge1xuICAgIC5jb2wxLWxheW91dCB7XG4gICAgICAgLmNvbC1tYWlue1xuICAgICAgICAgcGFkZGluZzogMHB4IDBweDtcbiAgICAgICAgfVxuICAgICAgICAuaG9tZS1jb250ZW50IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsgcGFkZGluZy1yaWdodDogMTVweDsgXG4gICAgICAgIH0gXG4gICAgfVxuICAgIFxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NTBweCkge1xuICAgIC5idXR0b24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cbn1cblxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBIZWFkZXJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgIC5wYWdlLWhlYWRlciB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwICR0cmltO1xuICAgIH1cblxuICAgIC5wYWdlLWhlYWRlci1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuXG59XG5cbi5oZWFkZXItd3JhcHBlcntcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2JnLXRvcC1hc3BoYWx0LmpwZykgbm8tcmVwZWF0IDE3JSAwIHNjcm9sbCAkYy1ibGFjazsgXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4ICMzNTM1MzUgc29saWQ7XG4gICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgfVxufVxuXG4ucGFnZS1oZWFkZXIge1xuICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbiNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogNDVweDtcbiAgICB0b3A6IDA7IFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBUb3AgaGVhZGVyIGxpbmtzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udG9wLWhlYWRlci1iYWNrZ3JvdW5kIHtcbiAgICBwYWRkaW5nOiAkZ2FwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDQ1cHg7XG4gICAgLmhlYWRlci1saW5rc3tcbiAgICAgICAgY29sb3I6ICRjLXRleHQtaGVhZGVyLWxpbmtzO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpe1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtc2VwYXJhdG9yLWhlYWRlci1saW5rcztcbiAgICAgICAgICAgIGF7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtaGVhZGVyLWxpbmtzO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGR7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwIG5vbmU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgICAgICAgICAgICAgIGF7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIC5mb3JtLWxhbmd1YWdlLFxuICAgIC5jdXJyZW5jeS1zd2l0Y2hlciB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRnYXA7XG4gICAgfVxuXG4gICAgLndlbGNvbWUtbXNnIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbn1cbi5wYWdlLWhlYWRlci1jb250YWluZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuc3RvcmUtbGFuZ3VhZ2UtY29udGFpbmVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWF4LXdpZHRoOiAzNSU7XG4gICAgcGFkZGluZzogMTNweCAxNXB4IDEwcHggMTBweDtcblxuICAgIGxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgc2VsZWN0IHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgLmhlYWRlci1saW5rcyB7XG4gICAgICAgIGZsb2F0OiByaWdodDsgICAgXG4gICAgICAgIGEge1xuICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xuICAgICAgICB9ICAgIFxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLnBhZ2UtaGVhZGVyLWNvbnRhaW5lciAuc3RvcmUtbGFuZ3VhZ2UtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcblxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgLy8gU2V0dGluZyB0aGlzIGZvbnQtc2l6ZSB3aWxsIGNhdXNpbmcgem9vbWluZyBvbiBpT3MgZGV2aWNlcywgYnV0IGl0IGtlZXBzIGhlYWRlciBtb3JlIHRpZHlcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmhlYWRlci1sYW5ndWFnZS1iYWNrZ3JvdW5kLFxuLmhlYWRlci1sYW5ndWFnZS1iYWNrZ3JvdW5kIGEge1xuICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC5oZWFkZXItbGFuZ3VhZ2UtYmFja2dyb3VuZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIExvZ29cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5sb2dvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMXMgZWFzZS1pbjtcbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMzVweDtcbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5zbWFsbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTQwcHg7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgIH1cbiAgICAubGFyZ2Uge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB3aWR0aDogMjc1cHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICB9XG59XG5cbi5sb2dvOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjg7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAubG9nbyB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyNXB4O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICAgICAgbWluLWhlaWdodDogOTBweDtcblxuICAgICAgICAuc21hbGwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAubGFyZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2tpcCBMaW5rc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNraXAtbGlua3Mge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0VERURFRDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0VERURFRDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgIC5za2lwLWxpbmtzIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTa2lwIC0gTGlua1xuICovXG5cbi5za2lwLWxpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogMjAlO1xuICAgIGhlaWdodDogNDRweDtcbiAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICBsaW5lLWhlaWdodDogNDJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbmEuc2tpcC1saW5rIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5za2lwLWxpbms6bm90KC5za2lwLWFjdGl2ZSk6aG92ZXIge1xuICAgIG9wYWNpdHk6IDAuODtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLnNraXAtbGluayB7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNFREVERUQ7XG4gICAgfVxuXG4gICAgLnNraXAtbGluazpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIH1cblxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCA1MDBweCkge1xuXG4gICAgLnNraXAtbGluayB7XG4gICAgICAgIHdpZHRoOiAyNSU7XG4gICAgfVxuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNraXAgTGluayAtIEFjdGl2ZVxuICovXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC8qXG4gICAgLnNraXAtbGluay5za2lwLWFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNFREVERUQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgIC5za2lwLWxpbmsuc2tpcC1hY3RpdmUgc3BhbiB7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cbiAgICAqL1xuXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNraXAgTGluayAtIEljb25cbiAqL1xuXG4uc2tpcC1saW5rIC5pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5za2lwLWxpbmsuc2tpcC1uYXYgLmljb24sXG4uc2tpcC1saW5rLnNraXAtY2FydDpub3QoLm5vLWNvdW50KSAuaWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgNTAwcHgpIHtcblxuICAgIC5za2lwLWxpbmsgLmljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2tpcCBMaW5rIC0gTGFiZWxcbiAqL1xuXG4uc2tpcC1saW5rIC5sYWJlbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgNTAwcHgpIHtcblxuICAgIC5za2lwLWxpbmsgLmxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBHbG9iYWwgSGVhZGVyIE5hdmlnYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oZWFkZXItbWFpbi1saW5rc3tcbiAgICBjb2xvcjogJGMtdGV4dC1oZWFkZXItbGlua3M7XG4gICAgbGl7XG4gICAgICAgIC8qZGlzcGxheTogaW5saW5lLWJsb2NrIWltcG9ydGFudDsqL1xuICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgICAgICAgYXtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LWhlYWRlci1saW5rcztcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIH1cbiAgICAgICAgJjpsYXN0LWNoaWxke1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwIG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50b3AtaGVhZGVyLWNvbnRhaW5lci5sb2ctaW4gLmxvZ2luLW9wdHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnRvcC1oZWFkZXItY29udGFpbmVyLmxvZy1vdXQgLmxvZ291dC1vcHR7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNraXAgQ29udGVudFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNraXAtY29udGVudCB7XG4gICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNraXAtY29udGVudC5za2lwLWFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgLypiYWNrZ3JvdW5kOiAjRURFREVEOyovXG4gICAgLmhlYWRlci1tYWluLWxpbmtzIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IC41ZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IC41ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBNZWdhIG1lbnVcbiAqL1xuLmhlYWRlci13cmFwcGVye1xuICAgIC5uYXYgLm9wZW4+YSwgLm5hdiAub3Blbj5hOmZvY3VzLCAubmF2IC5vcGVuPmE6aG92ZXJ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgIH1cbiAgICAubmF2PmxpPmE6Zm9jdXMsIC5uYXY+bGk+YTpob3ZlcntcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuLnN0ZCBvbCwgLnN0ZCB1bHtcbiAgICBsaXN0LXN0eWxlOiBub25lIWltcG9ydGFudDtcbiAgICB1bCB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuc2hvdy1pbi1tb2JpbGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjaGVhZGVyLW5hdntcbiAgICAgICAgLmJ5LWJyYW5ke1xuICAgICAgICAgICAgbGl7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ5JTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtdGFibGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmJ5LWNhdGVnb3J5e1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1lZ2EtbWVudSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJsYWNrLWJnLW1lZ2EtbWVudTtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAlO1xuICAgICAgICBhLnRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIH1cbiAgICAgICAgbGksIGxpID4gYSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgICAgICAuYnktdXNlLCAuYnktYnJhbmQge1xuICAgICAgICAgICBcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgICAuYnktY2F0ZWdvcnl7XG4gICAgICAgICAgIFxuICAgICAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5tZWdhLWRyb3Bkb3duLW1lbnU6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTVweDtcbiAgICAgICAgbGVmdDogMzUwcHg7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgIH1cbiAgICAubWVnYS1kcm9wZG93bi1tZW51OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMTdweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAtMTdweDtcbiAgICAgICAgbGVmdDogMzUwcHg7XG4gICAgICAgIHotaW5kZXg6IDg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0gLSAxKSB7XG4gICAgLyp1dGlsaXR5IG5hdiBpbiBtb2JpbGUqL1xuICAgIC50b3AtaGVhZGVyLWJhY2tncm91bmQge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIC5oZWFkZXItbGlua3Mge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjgpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCAjMzUzNTM1IHNvbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJpZ2h0LW5hdiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBsaS5oaWRlLWluLW1vYmlsZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgLnRvcC1oZWFkZXItY29udGFpbmVyIHtcbiAgICAgICAgLnNob3ctaW4tbW9iaWxlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDUlO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgICAgICNzZWFyY2hfbWluaV9mb3JtIHtcbiAgICAgICAgICAgICAgICAgICAgLnNlYXJjaC1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNnB4IC0xMTVweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogODBweCA4MDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3NlYXJjaCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCAjMzUzNTM1IHNvbGlkO1xuICAgICAgICAgICAgfVxuICAgfVxuICAgIH1cbiAgICBcbiAgICAvKiBoZWFkZXIgbmF2IGluIG1vYmlsZSAqL1xuICAgIC5uYXYtcGlsbHM+bGkrbGkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gICAgLmhlYWRlci1tYWluLWxpbmtzPmxpe1xuICAgICAgICBib3JkZXI6IDFweCAjMDAwIHNvbGlkO1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzEzMDMwO1xuICAgICAgICBcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5oZWFkZXItbWFpbi1saW5rcyB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCAjNjc2NjY2IHNvbGlkO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggIzY3NjY2NiBzb2xpZDtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCAjMDAwIHNvbGlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAwcHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1lZ2EtbWVudSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYS50aXRsZSB7XG4gICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICB9XG4gICAgICAgIGxpLCBsaSA+IGEge1xuICAgICAgICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm1lZ2EtZHJvcGRvd24tbWVudTpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNXB4O1xuICAgICAgICBsZWZ0OiA1MHB4O1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICB9XG4gICAgLm1lZ2EtZHJvcGRvd24tbWVudTphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBib3JkZXItcmlnaHQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE3cHg7XG4gICAgICAgIGxlZnQ6IDUwcHg7XG4gICAgICAgIHotaW5kZXg6IDg7XG4gICAgfVxufVxuXG4uZHJvcGRvd24tbWVudXtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgLmRyb3Bkb3duLW1lbnV7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBvdmVyZmxvdzogc2Nyb2xsO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXJnaW46IDBweDtcbiAgICB9XG59XG5cbi5kcm9wdXAgLmRyb3Bkb3duLW1lbnV7XG4gICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgJjpob3ZlcntcbiAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgfVxuICAgIC5idG4tZ3JvdXB7XG4gICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG5cbiAgICAgICAgJjpob3ZlcntcbiAgICAgICAgICAgIGNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmJ0bjpob3ZlcntcbiAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICB9XG4gICAgYnV0dG9uLmJ0bi13YXJuaW5ne1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIGNvbG9yOiAkYy1ibGFjaztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICBvdXRsaW5lLWNvbG9yOiBub25lO1xuICAgICAgICBvdXRsaW5lLXdpZHRoOiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgJjpob3ZlcntcbiAgICAgICAgICAgIGNvbG9yOiAkYy1ibGFjaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2Nyb2xsLWFyZWF7XG4gICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBcbiAgICB9XG59XG4uc3RkIHtcbiAgICAuc2Nyb2xsLWFyZWEge1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCFpbXBvcnRhbnQ7XG4gICAgICAgICB9XG4gICAgfVxufVxuLmRyb3Bkb3duLW1lbnUtZW5naW5lZXJzIC5kcm9wZG93bi1tZW51LCAuZHJvcGRvd24tbWVudS1haXJwb3J0cyAuZHJvcGRvd24tbWVudSwgLmRyb3Bkb3duLW1lbnUtY29tbWVyY2lhbCAuZHJvcGRvd24tbWVudSwgLmRyb3Bkb3duLW1lbnUtY29udHJhY3RvcnMgLmRyb3Bkb3duLW1lbnUsIC5kcm9wZG93bi1tZW51LWdvdmVybm1lbnQgLmRyb3Bkb3duLW1lbnUsIC5kcm9wZG93bi1tZW51LWdsb2JhbCAuZHJvcGRvd24tbWVudSwgLmRyb3Bkb3duLW1lbnUtZW5naW5lZXJzIC5kcm9wZG93bi1tZW51e1xuICAgIGJvcmRlci10b3A6IDAgbm9uZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZzogMDtcbiAgICAucm93e1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuICAgIFxuICAgIC5ieS11c2U+YSwgLmJ5LWNhdGVnb3J5PmEsIC5ieS1icmFuZD5he1xuICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiUHJvZHVjdHMgXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmJ5LXVzZSwgLmJ5LWJyYW5kIHtcbiAgICAgICAgd2lkdGg6IDQwJTtcbiAgICAgICAgJj5hK3VsIGxpe1xuICAgICAgICAgICAgd2lkdGg6IDQ5JTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuYnktY2F0ZWdvcnl7XG4gICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGMtdGV4dC1ncmF5O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgfVxuICAgIGF7XG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zIC0gMTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5kcm9wZG93bi1tZW51e1xuICAgICAgICBwYWRkaW5nOiAyZW0gLjI1ZW0gNGVtO1xuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWVuZ2luZWVyc3tcbiAgICAgICAgd2lkdGg6IDUwMCU7XG4gICAgICAgIGxlZnQ6IC0zMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogMjglO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiAyOCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtYWlycG9ydHN7XG4gICAgICAgIHdpZHRoOiA1MDAlO1xuICAgICAgICBsZWZ0OiAtNDEwJTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDglO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiA4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1jb21tZXJjaWFse1xuICAgICAgICB3aWR0aDogNTAwJTtcbiAgICAgICAgbGVmdDogLTIwMCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiA0OCU7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE3cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xN3B4O1xuICAgICAgICAgICAgcmlnaHQ6IDQ4JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRyb3Bkb3duLW1lbnUuZHJvcGRvd24tbWVudS1jb250cmFjdG9yc3tcbiAgICAgICAgd2lkdGg6IDUwMCU7XG4gICAgICAgIGxlZnQ6IC0xMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogNjglO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiA2OCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZ292ZXJubWVudHtcbiAgICAgICAgd2lkdGg6IDUwMCU7XG4gICAgICAgIGxlZnQ6IDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogODglO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiA4OCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZ2xvYmFse1xuICAgICAgICB3aWR0aDogNTAwJTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxufVxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtIC0gMSkge1xuICAgIC5kcm9wZG93bi1tZW51e1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZW5naW5lZXJze1xuICAgICAgICB3aWR0aDogMjUwJTtcbiAgICAgICAgbGVmdDogLTc1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDE1cHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IC0xNXB4O1xuICAgICAgICAgICAgcmlnaHQ6IDQ0JTtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXJ7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTdweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE5cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE3cHg7XG4gICAgICAgICAgICByaWdodDogNDQlO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWFpcnBvcnRze1xuICAgICAgICB3aWR0aDogMjUwJTtcbiAgICAgICAgbGVmdDogLTE3NSU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWNvbW1lcmNpYWx7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAyNSU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIGxlZnQ6IDAlO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIGxlZnQ6IDAlO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWNvbnRyYWN0b3Jze1xuICAgICAgICB3aWR0aDogMjUwJTtcbiAgICAgICAgbGVmdDogLTE3NSU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxNXB4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxN3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTVweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogODtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcGRvd24tbWVudS5kcm9wZG93bi1tZW51LWdvdmVybm1lbnR7XG4gICAgICAgIHdpZHRoOiAyNTAlO1xuICAgICAgICBsZWZ0OiAtNzUlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICByaWdodDogNDQlO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIHJpZ2h0OiA0NCU7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kcm9wZG93bi1tZW51LmRyb3Bkb3duLW1lbnUtZ2xvYmFse1xuICAgICAgICB3aWR0aDogMjUwJTtcbiAgICAgICAgbGVmdDogMjUlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMteWVsbG93LWVubmlzO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMTVweCBzb2xpZCAkYy15ZWxsb3ctZW5uaXM7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDE3cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxN3B4IHNvbGlkICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTlweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiAtMTdweDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiA4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZHJvcGRvd24tbWVudXtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1ibGFjay1iZy1tZWdhLW1lbnU7XG59XG4ubmF2YmFyLW5hdiA+IGxpID4gLmRyb3Bkb3duLW1lbnUge1xuICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubmF2YmFyLWRlZmF1bHQgLm5hdmJhci1uYXYgPiBsaSA+IGEge1xuICAgIHdpZHRoOiAyMDBweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5tZWdhLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubWVnYS1kcm9wZG93bi1tZW51IHtcbiAgICBwYWRkaW5nOiAyMHB4IDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLm1lZ2EtZHJvcGRvd24tbWVudSA+IGxpID4gdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xufVxuLm1lZ2EtZHJvcGRvd24tbWVudSA+IGxpID4gdWwgPiBsaSB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5tZWdhLWRyb3Bkb3duLW1lbnUgPiBsaSA+IHVsID4gbGkgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQyOTtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuLm1lZ2EtZHJvcGRvd24tbWVudSA+IGxpIHVsID4gbGkgPiBhOmhvdmVyLFxuLm1lZ2EtZHJvcGRvd24tbWVudSA+IGxpIHVsID4gbGkgPiBhOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbn1cbi5tZWdhLWRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWhlYWRlciB7XG4gICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4ubWVnYS1kcm9wZG93bi1tZW51IGZvcm0ge1xuICAgIG1hcmdpbjogM3B4IDIwcHg7XG59XG4ubWVnYS1kcm9wZG93bi1tZW51IC5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG59XG5cblxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBMaW5rXG5cblxuICAgICNoZWFkZXItYWNjb3VudCBsaSBhLFxuICAgIC5uYXYtcHJpbWFyeSBhLmxldmVsMCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMTVweCAwIDI1cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgfVxuXG4gICAgI2hlYWRlci1hY2NvdW50IGxpOmxhc3QtY2hpbGQgYSxcbiAgICAubmF2LXByaW1hcnkgbGkubGV2ZWwwOmxhc3QtY2hpbGQgYS5sZXZlbDAge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC5uby10b3VjaCAjaGVhZGVyLWFjY291bnQgYTpob3ZlcixcbiAgICAubm8tdG91Y2ggLm5hdi1wcmltYXJ5IGE6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxufVxuXG4uYWNjb3VudC1jYXJ0LXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6MHB4O1xuICAgIHJpZ2h0OjBweDtcblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTmF2IC0gU2tpcCBMaW5rXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2tpcC1uYXYge1xuICAgIHdpZHRoOiA0MCU7XG5cbiAgICAmOm5vdCguc2tpcC1hY3RpdmUpOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4KzRweCAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNraXAtbmF2IC5sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lO1xufVxuXG4uc2tpcC1uYXYgLmljb24ge1xuICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDArNHB4ICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpO1xufVxuXG4uaGVhZGVyLW1haW4tbGlua3Mge1xuICAgIGEge3RleHQtZGVjb3JhdGlvbjpub25lO31cbiAgICAubWVnYS1tZW51IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZvbnQtc2l6ZTogLjllbTtcbiAgICAgICAgbGkgeyAgICAgICAgICAgIFxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IGluaXRpYWw7XG4gICAgICAgIH0gICAgICAgIFxuICAgIH1cbiAgICBcbn1cbi5kcm9wZG93bltzdHlsZV0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayFpbXBvcnRhbnQ7XG59XG4vLyBEb2Vzbid0IHJlbmRlciB3aXRob3V0IE1RIHN1cHBvcnRcbkBpbmNsdWRlIGJwIChtYXgtd2lkdGgsIDM4MHB4KSB7IFxuICAgIC5oZWFkZXItbWFpbi1saW5rcyB7XG4gICAgLm1lZ2EtbWVudSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmb250LXNpemU6IC45ZW07XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgIH1cbiAgICBcbn1cbn1cblxuXG4uZHJvcGRvd24tbWVudSB7XG4gICAgLm9wZW4gPiAmIHsgICAgICAgIFxuICAgICAgICBhbmltYXRpb246IG1lZ2FUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5nbG9iYWwub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogZ2xvYmFsVG9nZ2xlIC4ycyBlYXNlLWluO1xuICAgIH1cbiAgICAuZ292ZXJubWVudC5vcGVuID4gJiB7ICAgICAgICBcbiAgICAgICAgYW5pbWF0aW9uOiBnb3Zlcm5tZW50VG9nZ2xlIC4ycyBlYXNlLWluO1xuICAgIH1cbiAgICAuY29udHJhY3RvcnMub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogY29udHJhY3RvcnNUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5jb21tZXJjaWFsLm9wZW4gPiAmIHsgICAgICAgIFxuICAgICAgICBhbmltYXRpb246IGNvbW1lcmNpYWxUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxuICAgIC5lbmdpbmVlcnMub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogZW5naW5lZXJzVG9nZ2xlIC4ycyBlYXNlLWluO1xuICAgIH1cbiAgICAuYWlycG9ydHMub3BlbiA+ICYgeyAgICAgICAgXG4gICAgICAgIGFuaW1hdGlvbjogYWlycG9ydHNUb2dnbGUgLjJzIGVhc2UtaW47XG4gICAgfVxufVxuLm1vZGFsLW9wZW4gLm1vZGFsIHtcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xufVxuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDUwMHB4KSB7XG5cbiAgICAuc2tpcC1uYXYge1xuICAgICAgICB3aWR0aDogMjUlO1xuICAgIH1cblxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnNraXAtbmF2IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTmF2IC0gU2tpcCBDb250ZW50XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgICNoZWFkZXItbmF2IHtcbiAgICAgICAgcGFkZGluZzogNXB4IDA7XG4gICAgfVxuXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAjaGVhZGVyLW5hdiB7XG4gICAgICAgIC8qYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7Ki9cbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0b3A6IDcwcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMzAwcHg7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgIC8qIG1heC13aWR0aDogNzY4cHg7Ki9cbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTmF2IFByaW1hcnlcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAubmF2LXByaW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogR2VuZXJhbCBOYXZpZ2F0aW9uIFN0eWxlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuJG5hdi1wcmltYXJ5LWhlaWdodDogMzBweDtcblxuLm5hdi1wcmltYXJ5IHtcbiAgICBhIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRuYXYtcHJpbWFyeS1oZWlnaHQ7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIGxpLmxldmVsMSBhIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgfVxufVxuXG4vLyBTaG93IHN1Yi1tZW51cyB3aGVuIEpTIGFkZHMgdGhlIGFwcHJvcHJpYXRlIGNsYXNzZXNcbi5uYXYtcHJpbWFyeSAubWVudS1hY3RpdmUgPiB1bC5sZXZlbDAsXG4ubmF2LXByaW1hcnkgbGkubGV2ZWwwIGxpLnN1Yi1tZW51LWFjdGl2ZSA+IHVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLm5hdi1wcmltYXJ5IGxpLmxldmVsMCA+IGEge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFNtYWxsIFZpZXdwb3J0cyAtIEFjY29yZGlvbiBTdHlsZSBNZW51XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAuaGVhZGVyLW1haW4tbGlua3Mge1xuICAgICAgICAubWVnYS1tZW51IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLm5hdi1wcmltYXJ5IHtcblxuICAgICAgICAvLyBJbmNyZWFzZSBjbGlja2FibGUgYXJlYSBvZiBhbmNob3JzIGZvciBzbWFsbCB2aWV3cG9ydHNcbiAgICAgICAgYS5sZXZlbDAsXG4gICAgICAgIGEge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRuYXYtcHJpbWFyeS1oZWlnaHQgKyA1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIaWRlIGFsbCBzdWItbWVudXNcbiAgICAgICAgbGkubGV2ZWwwIHVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbmRlbnQgc3ViLW1lbnVzXG4gICAgICAgIGxpLmxldmVsMCBsaSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMCAyNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkubGV2ZWwxIGEge1xuICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4IDAgMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpLnBhcmVudCA+IGE6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUocmlnaHQsIDVweCwgI2NjYyk7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC01cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNZW51IGFjdGl2ZSBzdGF0ZXNcbiAgICAgICAgbGkucGFyZW50LnN1Yi1tZW51LWFjdGl2ZSA+IGE6YWZ0ZXIsXG4gICAgICAgIGxpLnBhcmVudC5tZW51LWFjdGl2ZSA+IGE6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoZG93biwgNXB4LCAjY2NjKTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpLm1lbnUtYWN0aXZlID4gYSxcbiAgICAgICAgbGkuc3ViLW1lbnUtYWN0aXZlID4gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBMYXJnZSBWaWV3cG9ydHMgLSBEcm9wZG93biBNZW51XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG5cbiAgICAubmF2LXByaW1hcnkge1xuXG4gICAgICAgIGEubGV2ZWwwIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpLmxldmVsMCxcbiAgICAgICAgYS5sZXZlbDAge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgbGk6bGFzdC1jaGlsZCA+IGEge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6aG92ZXIsXG4gICAgICAgIGxpOmhvdmVyID4gYSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lbnUtYWN0aXZlIHtcbiAgICAgICAgICAgIHotaW5kZXg6IDIwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIERlZmF1bHQgc3R5bGVzIGZvciAxKyBkcm9wLWRvd24gbWVudXMgKi9cbiAgICAgICAgbGkubGV2ZWwwIHVsIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1lbnU7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdG9wOiAkbmF2LXByaW1hcnktaGVpZ2h0OyAvKiBIZWlnaHQgb2YgXCIubmF2LXByaW1hcnkgYS5sZXZlbDBcIiAqL1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICB3aWR0aDogMjUwcHg7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8qIEhpZGUgdW50aWwgZGlzcGxheWVkLiAqL1xuICAgICAgICB9XG5cbiAgICAgICAgLyogTGV2ZWwgMisgKi9cbiAgICAgICAgbGkubGV2ZWwxIHVsIHtcbiAgICAgICAgICAgIGxlZnQ6IDYwcHg7XG4gICAgICAgICAgICB0b3A6IDE1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBDbGFzcyBmb3IganMgdG8gYWRkIGJyaWVmbHkgdG8gZXZhbHVhdGUgZWxlbWVudCBwb3NpdGlvbmluZy4gKi9cbiAgICAgICAgbGkubGV2ZWwwIHVsLmxldmVsMC5wb3NpdGlvbi10ZXN0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogQ29ycmVjdCBtZW51cyB0aGF0IHdpbGwgaGFuZyBvZmYgdGhlIHBhZ2UgKGNsYXNzIGFkZGVkIGJ5IGpzKSAqL1xuICAgICAgICBsaS5sZXZlbDAgdWwubGV2ZWwwLnNwaWxsIHtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgbGVmdDogYXV0bztcblxuICAgICAgICAgICAgLy8gU3ViLW1lbnUgZHJvcCBkb3duIHRvIHRoZSBsZWZ0XG4gICAgICAgICAgICBsaS5sZXZlbDEgdWwge1xuICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcmlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgdG9wOiAyMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyogTGV2ZWwgMSsgKi9cbiAgICAgICAgbGkubGV2ZWwwIGxpLnBhcmVudCA+IGEge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgNHB4LCAjY2NjKTtcbiAgICAgICAgICAgICAgICByaWdodDogNXB4O1xuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5uYXYtcHJpbWFyeSBsaS5tZW51LWFjdGl2ZSB7XG4gICAgPiB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnJpZ2h0LW5hdiB7XG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjM1cyBlYXNlLWluLW91dDtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweCA1cHggMTBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDhweCAxMHB4IDhweDtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIgdWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICByaWdodDogLTEwcHg7XG4gICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjZHJvcC1uYXY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG5cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2VhcmNoIC0gU2tpcCBMaW5rXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2tpcC1zZWFyY2gge1xuXG4gICAgJjpub3QoLnNraXAtYWN0aXZlKTpob3ZlciB7XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MCs0cHggKC0xNTBweCArICgkdG9vbGJhci1pY29uLXBhZGRpbmctb2Zmc2V0LzIpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pY29uIHtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDArNHB4ICgtMTUwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSk7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnNraXAtc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2VhcmNoIC0gU2tpcCBDb250ZW50XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4jaGVhZGVyLXNlYXJjaCB7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcblxuICAgICNoZWFkZXItc2VhcmNoIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIEZvcmNlIHZpc2liaWxpdHlcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDY1cHg7XG4gICAgICAgIHJpZ2h0OiA0MHB4O1xuICAgICAgICB3aWR0aDogMTUlO1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgei1pbmRleDogMjA7XG4gICAgfVxuXG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSAtIDEpIHtcbiAgICAjaGVhZGVyLXNlYXJjaCB7ZGlzcGxheTogbm9uZTt9IFxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTZWFyY2ggSW5wdXRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNzZWFyY2hfbWluaV9mb3JtIC5pbnB1dC1ib3gsIFxuI3NlYXJjaF9taW5pX2Zvcm1fbW9iaWxlIC5pbnB1dC1ib3gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLXRvcDogMDtcbn1cblxuI3NlYXJjaF9taW5pX2Zvcm0gbGFiZWwsIFxuI3NlYXJjaF9taW5pX2Zvcm1fbW9iaWxlIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4jc2VhcmNoLCAjc2VhcmNoMiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYmxhY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIG91dGxpbmUtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICB9XG5cbiAgICAmOi1tb3otcGxhY2Vob2xkZXIgeyAvKiBGaXJlZm94IDE4LSAqL1xuICAgICAgICBjb2xvcjogJGMtdGV4dC13aGl0ZTtcbiAgICB9XG5cbiAgICAmOjotbW96LXBsYWNlaG9sZGVyIHsgIC8qIEZpcmVmb3ggMTkrICovXG4gICAgICAgIGNvbG9yOiAkYy10ZXh0LXdoaXRlO1xuICAgIH1cblxuICAgICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtd2hpdGU7XG4gICAgfVxufVxuXG5cbiNzZWFyY2hfbWluaV9mb3JtIC5zZWFyY2gtYnV0dG9uLCAjc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgLnNlYXJjaC1idXR0b24ge1xuICAgIEBpbmNsdWRlIGltYWdlLXJlcGxhY2VtZW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDdweDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMzkzOTM5O1xufVxuXG4jc2VhcmNoX21pbmlfZm9ybSAuc2VhcmNoLWJ1dHRvbjpiZWZvcmUsIFxuI3NlYXJjaF9taW5pX2Zvcm1fbW9iaWxlIC5zZWFyY2gtYnV0dG9uOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgbWFyZ2luLXRvcDogLTE1cHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xuICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDArNHB4ICgtMTUwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSk7XG59XG5cbiNzZWFyY2hfbWluaV9mb3JtIC5zZWFyY2gtYnV0dG9uOmhvdmVyOmJlZm9yZSwgXG4jc2VhcmNoX21pbmlfZm9ybV9tb2JpbGUgLnNlYXJjaC1idXR0b246aG92ZXI6YmVmb3JlIHtcbiAgICBvcGFjaXR5OiAwLjg7XG59XG5cbiNzZWFyY2hfbWluaV9mb3JtIC5zZWFyY2gtYnV0dG9uOmFjdGl2ZTpiZWZvcmUsIFxuI3NlYXJjaF9taW5pX2Zvcm1fbW9iaWxlIC5zZWFyY2gtYnV0dG9uOmFjdGl2ZTpiZWZvcmUge1xuICAgIG1hcmdpbi10b3A6IC0xNXB4ICsgMnB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMTVweCArIDJweDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogSGVhZGVyIC0gQWNjb3VudFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogU2tpcCBMaW5rIC0gQWNjb3VudFxuICovXG5cbi5za2lwLWFjY291bnQge1xuXG4gICAgJjpub3QoLnNraXAtYWN0aXZlKTpob3ZlciB7XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4KzRweCAoLTUwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSArIDJweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMHB4KzRweCAoLTUwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSArIDJweCk7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnNraXAtYWNjb3VudCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgLnNraXAtYWNjb3VudDpob3ZlciB7XG4gICAgfVxuXG4gICAgI2hlYWRlci1hY2NvdW50LnNraXAtYWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMjAwO1xuICAgICAgICB0b3A6IDQwcHg7XG4gICAgICAgIHJpZ2h0OiAxMTVweDtcbiAgICAgICAgd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgICNoZWFkZXItYWNjb3VudCBhIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDI7XG4gICAgfVxuXG4gICAgI2hlYWRlci1hY2NvdW50IGE6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBBY2NvdW50IExpbmtzXG4gKi9cblxuI2hlYWRlci1hY2NvdW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBhZGRpbmc6IDVweCAwO1xufVxuXG4jaGVhZGVyLWFjY291bnQgYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OjIzcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4jaGVhZGVyLWFjY291bnQgYTpob3ZlciB7XG4gICAgY29sb3I6ICRjLWFjdGlvbjtcbn1cblxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBIZWFkZXIgLSBDYXJ0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTa2lwIExpbmsgLSBDYXJ0XG4gKi9cblxuLnNraXAtY2FydCB7XG4gICAgJjpub3QoLnNraXAtYWN0aXZlKTpob3ZlciB7XG4gICAgICAgIC5pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC01MHB4ICgtMTAwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSArIDFweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIEBleHRlbmQgLmljb24tc3ByaXRlO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMHB4ICgtMTAwcHggKyAoJHRvb2xiYXItaWNvbi1wYWRkaW5nLW9mZnNldC8yKSArIDFweCk7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnNraXAtY2FydCB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgfVxuXG4gICAgLnNraXAtY2FydDpob3ZlciB7XG4gICAgfVxuXG4gICAgI2hlYWRlci1jYXJ0LnNraXAtYWN0aXZlIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogMjAwO1xuICAgICAgICB0b3A6IDQwcHg7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMzIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIH1cblxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBTa2lwIENhcnQgTm90aWZpZXJcbiAqL1xuXG4uc2tpcC1jYXJ0IC5jb3VudCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxMnB4KTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdG9wOiAtNnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiA1O1xuICAgIHdpZHRoOiAyMnB4O1xuICAgIGhlaWdodDogMjJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRjLWFjdGlvbiwgMC45KTtcbiAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2Fucztcbn1cbi5za2lwLWxpbmsuc2tpcC1hY3RpdmUgLmNvdW50IHtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi8vIFVzaW5nIGV4dHJhIC5za2lwLWxpbmsgc2VsZWN0b3IgdG8gaW5jcmVhc2Ugc3BlY2lmaWNpdHlcbi5za2lwLWxpbmsuc2tpcC1jYXJ0IC5jb3VudCB7XG59XG5cbi5za2lwLWNhcnQubm8tY291bnQgLmNvdW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDQ5OXB4KSB7XG4gICAgLnNraXAtY2FydCAuY291bnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogLTEycHg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG4gICAgLnNraXAtY2FydCB7XG4gICAgICAgIGNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuY291bnQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygwcHgpO1xuICAgICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG5cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNraXAtY2FydCAuY291bnQsXG4gICAgLnNraXAtbGluay5za2lwLWFjdGl2ZSAuY291bnQge1xuICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgIH1cbn1cblxuLnNraXAtY2FydCAuY291bnQuZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIE1pbmkgQ2FydCAtIEVtcHR5XG4gKi9cblxuLmNhcnQtbWVudSAuZW1wdHkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBNaW5pIENhcnQgLSBGdWxsXG4gKi9cblxuLyogQWN0aW9ucyAqL1xuXG4uY2FydC1tZW51IC5hY3Rpb25zIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG5cbi5jYXJ0LW1lbnUgLmFjdGlvbnMgLmJ1dHRvbiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IDQ4JTtcbn1cblxuLmNhcnQtbWVudSAuYWN0aW9ucyAuYnV0dG9uICsgLmJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDQlO1xufVxuXG4vKiBTdWJ0b3RhbCAqL1xuXG4uY2FydC1tZW51IC5zdWJ0b3RhbCB7XG4gICAgcGFkZGluZzogMCAxNXB4IDE1cHg7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8qIExpc3QgKi9cblxuLm1pbmktY2FydC1saXN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi5taW5pLWNhcnQtbGlzdCBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6ICgxNXB4ICsgNjBweCArIDE1cHgpO1xuICAgIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4ICgxNXB4ICsgNjBweCArIDE1cHgpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xufVxuXG4ubWluaS1jYXJ0LWxpc3QgLnByb2R1Y3QtbmFtZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubWluaS1jYXJ0LWxpc3QgLnByb2R1Y3QtaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxNXB4O1xuICAgIHRvcDogMTVweDtcbn1cblxuLm1pbmktY2FydC1saXN0IC5wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xufVxuXG4vLy5taW5pLWNhcnQtbGlzdCAuZGV0YWlscyB7IH1cblxuLm1pbmktY2FydC1saXN0IC5oYXMtb3B0aW9ucyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbn1cblxuLyogVG9vIGZ1bGwgLSBhZGRpdGlvbmFsIGl0ZW1zIHdpbGwgYmUgc2hvd24gaW4gY2FydCAqL1xuLmNhcnQtbWVudSAubGFzdC1hZGRlZCB7XG4gICAgcGFkZGluZzogMTBweCAxNXB4IDE1cHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEZvb3RlclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogRm9vdGVyXG4gKi9cblxuLmZvb3Rlcixcbi5mb290ZXIgYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbn1cblxuLmZvb3RlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGNsZWFyOiBib3RoO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDZlbSAxZW0gMmVtO1xuICAgIG1hcmdpbi10b3A6IDNlbTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltYWdlcy9iZy1mb290ZXItYXNwaGFsdC5qcGcpIG5vLXJlcGVhdCAxMDAlIDAgc2Nyb2xsICRjLWJsYWNrO1xuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICBwYWRkaW5nLXRvcDogJHRyaW0tc21hbGw7XG4gICAgfVxuXG4gICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLXRvcDogMCBub25lO1xuICAgICAgICBwYWRkaW5nOiAzcHggMDtcbiAgICB9XG5cbiAgICAuYmxvY2stdGl0bGUgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cblxuICAgIC5ibG9jay10aXRsZSxcbiAgICBhZGRyZXNzIHtcbiAgICAgICAgY29sb3I6ICRjLWNvcHlyaWdodC10ZXh0O1xuICAgIH1cbiAgICAuZm9vdGVyIHtcbiAgICAgICAgLmxpbmtzIHtcbiAgICAgICAgICAgIC5ibG9jay10aXRsZSB7XG4gICAgICAgICAgICAgICAgYSB7Y29sb3I6ICRjLWNvcHlyaWdodC10ZXh0O31cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGlua3Mtc29jaWFsLW1lZGlhe1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBzdHJvbmd7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgICAgICAgICBcbiAgICAgICAgdWwgbGl7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICAuaWNvbi10ZXh0IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lOyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgIFxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgLmljb24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IC4yNWVtO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLjI1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgLmxpbmtzLXNvY2lhbC1tZWRpYS5saW5rcy5zb2NpYWwtbWVkaWF7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbiAgICAucGhvbmUge1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgfVxuICAgIC5jb3B5cmlnaHQtbGlua3N7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBsaXtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGF7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWNvcHlyaWdodC10ZXh0O1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGMtY29weXJpZ2h0LXRleHQ7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4cztcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGlua3Mge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgcGFkZGluZzogMCAxMHB4IDAgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogODBweDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRjLXdoaXRlLXRleHQtZm9vdGVyO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLXllbGxvdy1lbm5pcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5saW5rcy5uZXdzbGV0dGVye1xuICAgICAgICBkaXNwbGF5OiBub25lOy8vY2FuIGRlbGV0ZSB0aGlzIGxpbmUgd2hlbiB3YW50IHRvIGVuYWJsZS5cbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgLmlucHV0LWJveCwgLmFjdGlvbnN7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgICAgcHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG4gICAgICAgICAgICBtYXJnaW46IDEwcHggMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJsYWNrO1xuICAgICAgICAgICAgd2lkdGg6IDE2MHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgICAgICAgfVxuICAgICAgICBidXR0b257XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1idXR0b24tbmV3c2xldHRlcjtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWJ1dHRvbi1uZXdzbGV0dGVyLWJvcmRlcjtcbiAgICAgICAgICAgIGNvbG9yOiAkYy13aGl0ZS10ZXh0LWZvb3RlcjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDRweCAxNXB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgJGhvdmVyLWNvbG9yOiBkYXJrZW4oJGMtYnV0dG9uLW5ld3NsZXR0ZXIsIDEwJSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGhvdmVyLWNvbG9yO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRob3Zlci1jb2xvcjtcbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJsb2NrLXN1YnNjcmliZSB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgd2lkdGg6IDMyMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbTtcbiAgICB9XG5cbiAgICAubGlua3MsXG4gICAgLmJsb2NrLXN1YnNjcmliZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgY29sb3I6ICRjLXdoaXRlLXRleHQtZm9vdGVyO1xuICAgIH1cblxuICAgIC5mb3JtLXN1YnNjcmliZS1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAgICAgKiBTb2NpYWwgaWNvbnNcbiAgICAgKi9cbiAgICAubGlua3Muc29jaWFsLW1lZGlhIGF7XG4gICAgICAgIGZvbnQtc2l6ZTogMDtcbiAgICB9XG4gICAgLmxpbmtzLnNvY2lhbC1tZWRpYSBlbSB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvc29jaWFsX3RoZW1lLmpwZykgbm8tcmVwZWF0IDAgMCBzY3JvbGwgJGMtYmxhY2s7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgJi5nb29nbGVwbHVze1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjhweDtcbiAgICAgICAgfVxuICAgICAgICAmLnR3aXR0ZXJ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC01NnB4O1xuICAgICAgICB9XG4gICAgICAgICYuZmFjZWJvb2t7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC04NHB4O1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC5ibG9jay1zdWJzY3JpYmUgLmlucHV0LWJveCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgyMTBweC8zMjBweCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgIC5ibG9jay1zdWJzY3JpYmUgLmlucHV0LXRleHQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDApO1xuICAgIH1cblxuICAgIC5ibG9jay1zdWJzY3JpYmUgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nLXRvcDogN3B4O1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmxvY2stc3Vic2NyaWJlIC5hY3Rpb25zIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDExMHB4LzMyMHB4KTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5ibG9jay1zdWJzY3JpYmUgLmFjdGlvbnMgLmJ1dHRvbiB7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE3cHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5idWdzLFxuICAgIGFkZHJlc3Mge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG5cbiAgICAuYnVncyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFuZ3VhZ2UsXG4gICAgLmN1cnJlbmN5LXN3aXRjaGVyLFxuICAgIC5zdG9yZS1zd2l0Y2hlciB7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgIH1cblxuICAgIC5mb3JtLWxhbmd1YWdlLFxuICAgIC5jdXJyZW5jeS1zd2l0Y2hlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgYWRkcmVzcyB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwIDAgMCAxNXB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5jb3B5cmlnaHQtd3JhcHBlcntcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14bGFyZ2UpIHtcbiAgICAgICAgJGxpbmtzLXRyaW06IHBlcmNlbnRhZ2UoMzBweCAvIDk2MHB4KTtcbiAgICAgICAgJGxpbmtzLXdpZHRoOiAoMTAwIC0gKCRsaW5rcy10cmltICogMykpIC8gNDtcblxuICAgICAgICAubGlua3Mge1xuICAgICAgICAgICAgd2lkdGg6ICRsaW5rcy13aWR0aDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRsaW5rcy10cmltO1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpbmtzOm50aC1jaGlsZCg0KSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuYmxvY2stc3Vic2NyaWJlIHtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW46IDAgYXV0byAkdHJpbSBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgICAgIC5mb3JtLWxhbmd1YWdlLFxuICAgICAgICAuY3VycmVuY3ktc3dpdGNoZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgICAgICAkbGlua3MtdHJpbTogcGVyY2VudGFnZSgxNXB4IC8gNDgwcHgpO1xuICAgICAgICAkbGlua3Mtd2lkdGg6ICgxMDAgLSAkbGlua3MtdHJpbSkgLyAyO1xuICAgICAgICAuY29udGFjdC11c3tcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIH1cbiAgICAgICAgLmZvb3RlciB7XG4gICAgICAgICAgICAubGlua3Mge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5saW5rcyBwe1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsgXG4gICAgICAgIH1cbiAgICAgICAgLmxpbmtzIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubGlua3MubmV3c2xldHRlcntcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmxpbmtzOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGxpbmtzLXRyaW07XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jay1zdWJzY3JpYmUge1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIC5uZXdzbGV0dGVyIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4iLCIvKiBUaGlzIGZpbGUgcmVuZGVyZWQgTWlja2V5ICovXG5AaW5jbHVkZSBtZW51VG9nZ2xlKGdsb2JhbFRvZ2dsZSwgLTQwJSwgNTAlKTtcbkBpbmNsdWRlIG1lbnVUb2dnbGUoZ292ZXJubWVudFRvZ2dsZSwgLTMwJSwgNTAlKTtcbkBpbmNsdWRlIG1lbnVUb2dnbGUoY29udHJhY3RvcnNUb2dnbGUsIC0xNSUsIDUwJSk7XG5AaW5jbHVkZSBtZW51VG9nZ2xlKGNvbW1lcmNpYWxUb2dnbGUsIDUlLCA1MCUpO1xuQGluY2x1ZGUgbWVudVRvZ2dsZShlbmdpbmVlcnNUb2dnbGUsIDI1JSwgNTAlKTtcbkBpbmNsdWRlIG1lbnVUb2dnbGUoYWlycG9ydHNUb2dnbGUsIDQwJSwgNTAlKTtcbkBpbmNsdWRlIG1lbnVUb2dnbGUobWVnYVRvZ2dsZSwgLTE1JSwgLTQwJSk7IiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIEdlbmVyYWwgUHJvZHVjdCBMaXN0IFN0eWxlcyAobm90IG1vZHVsZS1zcGVjaWZpYylcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUHJvZHVjdCBMaXN0IEdlbmVyYWxcbiAqL1xuXG5cbi8vIFByZXZlbnQgYnV0dG9uIG92ZXJsYXBwaW5nIHdoZW4gYnV0dG9ucyBoYXZlIGxvbmcgdGV4dCwgc3VjaCBhcyBub24tRW5nbGlzaCB0cmFuc2xhdGlvbnNcbi5wcm9kdWN0cy1saXN0IC5hY3Rpb24gLmJ1dHRvbixcbi5wcm9kdWN0cy1ncmlkIC5hY3Rpb25zIC5idXR0b24ge1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFByb2R1Y3QgTmFtZVxuICovXG5cbmgyLnByb2R1Y3QtbmFtZSxcbmgzLnByb2R1Y3QtbmFtZSxcbmg0LnByb2R1Y3QtbmFtZSxcbmg1LnByb2R1Y3QtbmFtZSxcbnAucHJvZHVjdC1uYW1lIHtcbiAgICBAaW5jbHVkZSBoMjtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2FucztcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtbmFtZSxcbi5wcm9kdWN0cy1saXN0IC5wcm9kdWN0LW5hbWUge1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG5cbiAgICBhIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUHJvZHVjdCBHcmlkXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4kcHJvZHVjdC1jb2x1bW4tc3BhY2luZzogMjBweDtcblxuLnByb2R1Y3RzLWdyaWQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnByb2R1Y3RzLWdyaWQ6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4ucHJvZHVjdHMtZ3JpZCA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogJHByb2R1Y3QtY29sdW1uLXNwYWNpbmc7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cblxuLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtaW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG5cbi5wcm9kdWN0cy1ncmlkIC5wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgJjpoaWRkZW4ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLndpZGdldC1uZXctcHJvZHVjdHMge1xuICAgIC5wcm9kdWN0cy1ncmlkIC5wcm9kdWN0LWltYWdlIHtcbiAgICAgICAgd2lkdGg6IDc1JTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgICB9XG59XG5cbi8vIElmIHRoZSBoZWlnaHQgb2YgdGhlIC5wcm9kdWN0LWluZm8gZWxlbWVudCBjaGFuZ2VzLCB0aGlzIHZhbHVlIHNob3VsZCBiZSBhZGp1c3RlZFxuJHByb2R1Y3RzR3JpZEFjdGlvbkhlaWdodDogODVweDtcblxuLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtaW5mbyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcHJvZHVjdHNHcmlkQWN0aW9uSGVpZ2h0ICsgMTBweDtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLmFjdGlvbnMge1xuICAgIHBhZGRpbmctdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMHB4O1xuICAgIG1pbi1oZWlnaHQ6ICRwcm9kdWN0c0dyaWRBY3Rpb25IZWlnaHQ7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5wcm9kdWN0cy1ncmlkIC5yYXRpbmdzIC5yYXRpbmctYm94IHtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLnByb2R1Y3RzLWdyaWQgLnJhdGluZ3MgLmFtb3VudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLnByaWNlLWJveCB7XG4gICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICBtYXJnaW46IDAgMCA1cHg7XG59XG5cbi5wcm9kdWN0cy1ncmlkIC5hZGQtdG8tbGlua3Mge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiBDb25maWc6IFR3byBjb2x1bW5zICsgZmxleGlibGUgZ3V0dGVyICovXG5cbi8vIENvbnRhaW5lcjogNDgwIC0gKDIgKiAyMCB0cmltKSA9IDQ0MFxuLy8gTWF0aDogKDQ0MCAtICgyMCBndXR0ZXIpKSAvIDIgaXRlbXMgPSAyMTBcblxuLnByb2R1Y3RzLWdyaWQgPiBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMjEwIC8gNDQwKTtcbiAgICBtYXJnaW4tcmlnaHQ6IHBlcmNlbnRhZ2UoMjAgLyA0NDApO1xufVxuXG4ucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZChvZGQpIHtcbiAgICBjbGVhcjogbGVmdDtcbn1cblxuLnByb2R1Y3RzLWdyaWQgPiBsaTpudGgtY2hpbGQoZXZlbikge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbn1cblxuLnByb2R1Y3RzLWdyaWQgLnByb2R1Y3QtaW1hZ2Uge1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcblxuICAgIEBpbmNsdWRlIGxvYWRpbmdPdmVybGF5KCk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC14c21hbGwgKyAxKSB7XG4gICAgLyogQ29uZmlnOiBUaHJlZSBjb2x1bW5zICsgZmxleGlibGUgZ3V0dGVyICovXG4gICAgLy8gQ29udGFpbmVyOiA2MDAgLSAoMiAqIDMwIHRyaW0gd2lkZSkgPSA1NDBcbiAgICAkY29sdW1uLWNvdW50OiAzO1xuICAgICRjb2x1bW4tZ3V0dGVyczogMjtcbiAgICAkY29udGFpbmVyOiA2MDAgLSAoMiAqICR0cmltKTtcblxuICAgIC8vIE1hdGg6ICg1NDAgLSAoMiAqIDMwIGd1dHRlcikpIC8gMyBpdGVtcyA9IDE2MFxuICAgICRjb2x1bW4td2lkdGg6ICgkY29udGFpbmVyIC0gKCRjb2x1bW4tZ3V0dGVycyAqICRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nKSkgLyAkY29sdW1uLWNvdW50O1xuXG4gICAgLnByb2R1Y3RzLWdyaWQge1xuICAgICAgICAvKiBVbmRvIHR3by1jb2x1bW4gY29uZmlnICovXG4gICAgICAgID4gbGk6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgPiBsaTpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBwZXJjZW50YWdlKCRwcm9kdWN0LWNvbHVtbi1zcGFjaW5nIC8gJGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICAvKiBTZXQgdGhyZWUtY29sdW1uIGNvbmZpZyAqL1xuICAgICAgICA+IGxpIHtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKCRjb2x1bW4td2lkdGggLyAkY29udGFpbmVyKTtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgkcHJvZHVjdC1jb2x1bW4tc3BhY2luZyAvICRjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgICAgID4gbGk6bnRoLWNoaWxkKCN7JGNvbHVtbi1jb3VudH1uKzEpIHtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgID4gbGk6bnRoLWNoaWxkKCN7JGNvbHVtbi1jb3VudH1uKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoaXMgbWl4aW4gb3V0cHV0cyB0aGUgc3R5bGVzIHRvIGFsbG93IGZvciBncmlkcyB3aXRoIG1vcmUgdGhhbiAzIGNvbHVtbnNcbkBtaXhpbiBwcm9kdWN0LWdyaWQoJGNvbHVtbi1jb3VudCwgJGNvbnRhaW5lci13aWR0aCwgJGNsYXNzLWFwcGVuZDpcIlwiKSB7XG5cbiAgICAvLyBBbGxvdyB0aGlzIG1peGluIHRvIGJlIHVzZWQgZm9yIG1vcmUgc3BlY2lmaWMgcHVycG9zZXMsIHN1Y2ggYXMgZ3JpZHMgY29udGFpbmVkIHdpdGhpbiB3aWRnZXRzXG4gICAgQGlmICRjbGFzcy1hcHBlbmQgIT0gXCJcIiB7XG4gICAgICAgICRjbGFzcy1hcHBlbmQ6IC0jeyRjbGFzcy1hcHBlbmR9O1xuICAgIH1cblxuICAgIC8qIENvbmZpZzogQ29sdW1ucyArIGZsZXhpYmxlIGd1dHRlciAqL1xuICAgICRjb2x1bW4tZ3V0dGVyczogKCRjb2x1bW4tY291bnQpIC0gMTtcbiAgICAkY29udGFpbmVyOiAkY29udGFpbmVyLXdpZHRoIC0gKDIgKiAkdHJpbSk7XG4gICAgJGNvbHVtbi13aWR0aDogKCRjb250YWluZXIgLSAoJGNvbHVtbi1ndXR0ZXJzICogJHByb2R1Y3QtY29sdW1uLXNwYWNpbmcpKSAvICRjb2x1bW4tY291bnQ7XG5cbiAgICAvKiBVbmRvIHRocmVlLWNvbHVtbiBjb25maWcgKi9cbiAgICAucHJvZHVjdHMtZ3JpZC0tbWF4LSN7JGNvbHVtbi1jb3VudH0tY29sI3skY2xhc3MtYXBwZW5kfSA+IGxpOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxuICAgIC5wcm9kdWN0cy1ncmlkLS1tYXgtI3skY29sdW1uLWNvdW50fS1jb2wjeyRjbGFzcy1hcHBlbmR9ID4gbGk6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgfVxuICAgIC5wcm9kdWN0cy1ncmlkLS1tYXgtI3skY29sdW1uLWNvdW50fS1jb2wjeyRjbGFzcy1hcHBlbmR9ID4gbGk6bnRoLWNoaWxkKGV2ZW4pLFxuICAgIC5wcm9kdWN0cy1ncmlkLS1tYXgtI3skY29sdW1uLWNvdW50fS1jb2wjeyRjbGFzcy1hcHBlbmR9ID4gbGk6bnRoLWNoaWxkKDNuKSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgkcHJvZHVjdC1jb2x1bW4tc3BhY2luZyAvICRjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qIFNldCBjb2x1bW4gY29uZmlnICovXG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcGVyY2VudGFnZSgkcHJvZHVjdC1jb2x1bW4tc3BhY2luZyAvICRjb250YWluZXIpO1xuICAgIH1cbiAgICAucHJvZHVjdHMtZ3JpZC0tbWF4LSN7JGNvbHVtbi1jb3VudH0tY29sI3skY2xhc3MtYXBwZW5kfSA+IGxpIHtcbiAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbi13aWR0aCAvICRjb250YWluZXIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHBlcmNlbnRhZ2UoJHByb2R1Y3QtY29sdW1uLXNwYWNpbmcgLyAkY29udGFpbmVyKTtcbiAgICB9XG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaTpudGgtY2hpbGQoI3skY29sdW1uLWNvdW50fW4rMSkge1xuICAgICAgICBjbGVhcjogbGVmdDtcbiAgICB9XG4gICAgLnByb2R1Y3RzLWdyaWQtLW1heC0jeyRjb2x1bW4tY291bnR9LWNvbCN7JGNsYXNzLWFwcGVuZH0gPiBsaTpudGgtY2hpbGQoI3skY29sdW1uLWNvdW50fW4pIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgOTYwcHgpIHtcbiAgICBAaW5jbHVkZSBwcm9kdWN0LWdyaWQoNCwgOTYwKTtcbiAgICBAaW5jbHVkZSBwcm9kdWN0LWdyaWQoNSwgOTYwKTtcbiAgICBAaW5jbHVkZSBwcm9kdWN0LWdyaWQoNiwgOTYwKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUHJvZHVjdCBMaXN0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucHJvZHVjdHMtbGlzdCB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG4gICAgJiA+IGxpIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICAgICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogcGVyY2VudGFnZSgxLzMpO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAmID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIH1cbn1cblxuLnByb2R1Y3RzLWxpc3QgLnByb2R1Y3Qtc2hvcCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKDIvMyk7XG4gICAgcGFkZGluZy1sZWZ0OiAoJGJveC1zcGFjaW5nICogMik7XG5cbiAgICAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gICAgLnJhdGluZ3Mge1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgLnJhdGluZy1ib3gsXG4gICAgICAgIC5yYXRpbmctbGlua3Mge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgICAgIH1cbiAgICAgICAgLnJhdGluZy1saW5rcyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnByaWNlLWJveCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICAgIC5wcmljZS1ib3ggLnByaWNlIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4bDtcbiAgICB9XG4gICAgLmFjdGlvbiB7XG4gICAgICAgIG1hcmdpbjogJGVsZW1lbnQtc3BhY2luZyAwO1xuICAgIH1cbiAgICAuZGVzYyB7XG4gICAgICAgIG1hcmdpbi10b3A6ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtcHJpbWFyeSxcbiAgICAuZGVzYyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogNjUlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgICAucHJvZHVjdC1zZWNvbmRhcnkge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHdpZHRoOiAzNSU7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjbGVhcjogcmlnaHQ7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC14c21hbGwgKyAxKSB7XG4gICAgLnByb2R1Y3RzLWxpc3QgLnByb2R1Y3QtbmFtZSBhIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4bDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgMTI3OXB4KSB7XG4gICAgLnByb2R1Y3RzLWxpc3QgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgIC5wcm9kdWN0LXByaW1hcnksXG4gICAgICAgIC5kZXNjIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLnByb2R1Y3Qtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiA0MCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNjAwcHgpIHtcbiAgICAucHJvZHVjdHMtbGlzdCAucHJvZHVjdC1zaG9wIC5wcmljZS1ib3ggLnNwZWNpYWwtcHJpY2Uge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuICAgIC5wcm9kdWN0cy1saXN0IC5wcm9kdWN0LXNob3Age1xuICAgICAgICAucHJvZHVjdC1wcmltYXJ5LFxuICAgICAgICAucHJvZHVjdC1zZWNvbmRhcnksXG4gICAgICAgIC5kZXNjIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTWluaSBQcm9kdWN0IExpc3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5taW5pLXByb2R1Y3RzLWxpc3Qge1xuXG4gICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWluLXdpZHRoOiA1MHB4O1xuICAgIH1cbiAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDYwcHg7XG4gICAgfVxuXG4gICAgLy8gVmVydGljYWxseSBjZW50ZXIgcHJvZHVjdCBuYW1lXG4gICAgLnByb2R1Y3QtZGV0YWlscyAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICBjbGVhcjogYm90aDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5taW5pLXByb2R1Y3RzLWltYWdlcy1saXN0IHtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICBsaS5pdGVtIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMCA1cHggMTBweCAwO1xuXG4gICAgICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWltYWdlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2F0YWxvZyAtIExpc3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXRlZ29yeS1pbWFnZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBwYWRkaW5nOiAxMHB4O1xuXG4gICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAmOmhpZGRlbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBMYXllcmVkIE5hdmlnYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ibG9jay1sYXllcmVkLW5hdiAuYmxvY2stc3VidGl0bGUtLWZpbHRlciB7XG4gICAgLy8gV2lsbCBiZSBzaG93biBhdCBzbWFsbGVyIHZpZXdwb3J0c1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uRHRCYXNlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmJsb2NrLWxheWVyZWQtbmF2IC5ibG9jay1jb250ZW50IHtcbiAgICAvLyBBY2NvcmRpb25zIGFyZSBmdWxseSBleHBhbmRlZCB1bnRpbCBhIHNtYWxsZXIgcmVzb2x1dGlvbi5cbiAgICBAaW5jbHVkZSBhY2NvcmRpb247XG59XG5cbi5ibG9jay1sYXllcmVkLW5hdiBkbCBkZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZztcblxuICAgIG9sID4gbGkgPiBzcGFuLCBvbCA+IGxpID4gYSB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgb2wgPiBsaSA+IGEgLmNvdW50IHtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSsxKSB7XG4gICAgLmJsb2NrLWxheWVyZWQtbmF2IC5ibG9jay1jb250ZW50ID4gZGwgPiBkdCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5zaWRlYmFyIC5ibG9jay5ibG9jay1sYXllcmVkLW5hdiB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBcIlNob3AgQnlcIiB0byBzaG93IHdoZW4gdGhlcmUgYXJlIG5vIGZpbHRlcnMgYXBwbGllZCwgYXMgdGhlIFwiRmlsdGVyXCIgbGluayB3aWxsIHN1ZmZpY2VcbiAgICAuYmxvY2stbGF5ZXJlZC1uYXYtLW5vLWZpbHRlcnMgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgdGhlIHRvcCBwYWRkaW5nIGFuZCByZS1hZGQgaXQgYXMgbWFyZ2luLXRvcCBzbyB0aGF0IHRoZSBtYXJnaW4gd2lsbCBjb2xsYXBzZSB3aXRoIGVsZW1lbnRzIGFib3ZlIGl0XG4gICAgLmJsb2NrLWxheWVyZWQtbmF2IC5ibG9jay1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbkNvbGxhcHNlO1xuICAgIH1cblxuICAgIC5ibG9jay1sYXllcmVkLW5hdiAuYmxvY2stc3VidGl0bGUtLWZpbHRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6ICNGRkZGRkY7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShyaWdodCwgNHB4LCAjRkZGRkZGKTtcbiAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1idXR0b24taG92ZXI7XG4gICAgICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyaWFuZ2xlKGRvd24sIDRweCwgI0ZGRkZGRik7XG4gICAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTNweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNuYXJyb3ctYnktbGlzdCxcbiAgICAjbmFycm93LWJ5LWxpc3QyIHtcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgIH1cblxuICAgIC5ibG9jay1sYXllcmVkLW5hdiBkbCBvbCA+IGxpID4gYSxcbiAgICAuYmxvY2stbGF5ZXJlZC1uYXYgZGwgb2wgPiBsaSA+IHNwYW4ge1xuICAgICAgICBwYWRkaW5nOiA3cHg7XG4gICAgICAgIG1hcmdpbjogNXB4O1xuICAgIH1cblxuICAgIC5ibG9jay1sYXllcmVkLW5hdiBkbCBvbCA+IGxpID4gYSB7XG4gICAgICAgIEBpbmNsdWRlIHRvdWNoLWJ1dHRvbjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmxvY2stbGF5ZXJlZC1uYXYgLmN1cnJlbnRseSB7XG4gICAgLmJsb2NrLXN1YnRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIEBpbmNsdWRlIGg0O1xuICAgIH1cblxuICAgIG9sIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICB9XG4gICAgb2wgbGkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJsb2NrLWxheWVyZWQtbmF2IC5hY3Rpb25zIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xufVxuXG4uY29sb3ItYm94LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWltYWdlLXNvdXJjZTogaW5pdGlhbDtcbiAgICBib3JkZXItaW1hZ2Utc2xpY2U6IGluaXRpYWw7XG4gICAgYm9yZGVyLWltYWdlLXdpZHRoOiBpbml0aWFsO1xuICAgIGJvcmRlci1pbWFnZS1vdXRzZXQ6IGluaXRpYWw7XG4gICAgYm9yZGVyLWltYWdlLXJlcGVhdDogaW5pdGlhbDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC5jb2xvci1ib3gge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy10ZXh0LWdyYXk7XG4gICAgICAgIGJvcmRlci1pbWFnZS1zb3VyY2U6IGluaXRpYWw7XG4gICAgICAgIGJvcmRlci1pbWFnZS1zbGljZTogaW5pdGlhbDtcbiAgICAgICAgYm9yZGVyLWltYWdlLXdpZHRoOiBpbml0aWFsO1xuICAgICAgICBib3JkZXItaW1hZ2Utb3V0c2V0OiBpbml0aWFsO1xuICAgICAgICBib3JkZXItaW1hZ2UtcmVwZWF0OiBpbml0aWFsO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogNTBweDtcbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiRjLXllbGxvdy1lbm5pcztcbiAgICB9XG59IiwiLypcblRvIGNoYW5nZSB0aGlzIGxpY2Vuc2UgaGVhZGVyLCBjaG9vc2UgTGljZW5zZSBIZWFkZXJzIGluIFByb2plY3QgUHJvcGVydGllcy5cblRvIGNoYW5nZSB0aGlzIHRlbXBsYXRlIGZpbGUsIGNob29zZSBUb29scyB8IFRlbXBsYXRlc1xuYW5kIG9wZW4gdGhlIHRlbXBsYXRlIGluIHRoZSBlZGl0b3IuXG4qL1xuLyogXG4gICAgQ3JlYXRlZCBvbiA6IEZlYiA1LCAyMDE2LCA1OjA3OjI3IFBNXG4gICAgQXV0aG9yICAgICA6IFNreSBUb25uZXNzZW5cbiovXG4uZXZlbnRzLWNvbnRhaW5lciB7XG4gICAgaDIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgfVxuICAgIC5ldmVudHMtaGVybyB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxLjVlbTtcbiAgICB9XG59XG4uZXZlbnQtbGlzdCB7XG4gICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgbGkge1xuICAgICAgICBwYWRkaW5nOiAxZW0gMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgICAgICBwIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRhdGUtbnVtYmVycyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gICBcbn1cblxuLmNhbGVuZGFye1xuXHRtYXJnaW46LjI1ZW0gMTBweCAxMHB4IDA7XG5cdHBhZGRpbmctdG9wOjVweDtcblx0ZmxvYXQ6bGVmdDtcblx0d2lkdGg6NjBweDtcblx0YmFja2dyb3VuZDojZmZmZmZmO1xuXHRcblx0Zm9udC1zaXplOiAyMHB4O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGNvbG9yOiMzNzM2MzY7XHRcblx0LW1vei1ib3JkZXItcmFkaXVzOjNweDtcblx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDtcblx0Ym9yZGVyLXJhZGl1czozcHg7XHRcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdC1tb3otYm94LXNoYWRvdzowIDJweCAycHggI2Q4ZDhkYTtcblx0LXdlYmtpdC1ib3gtc2hhZG93OjAgMnB4IDJweCAjZDhkOGRhO1xuXHRib3gtc2hhZG93OjAgMnB4IDJweCAjZDhkOGRhO1xuICAgICAgICBlbSB7XG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICAgICAgY29sb3I6I2ZmZjtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIHRleHQtc2hhZG93OiNkNzhhMWMgMCAtMXB4IDA7XHRcbiAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZkOWQxMztcbiAgICAgICAgICAgIGJhY2tncm91bmQ6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjZmQ5ZDEzKSwgdG8oI2Q3OGExYykpOyBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6LW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2ZkOWQxMzMsICAjZDc4YTFjKTsgXG4gICAgICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6M3B4O1xuICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czozcHg7XHRcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDtcbiAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjNweDtcbiAgICAgICAgICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHg7XHRcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6M3B4O1x0XG4gICAgICAgICAgICBib3JkZXItdG9wOjFweCBzb2xpZCAjZmRiZTI4O1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgICAgICAgICAgZmxvYXQ6bGVmdDtcbiAgICAgICAgICAgICAgICBsZWZ0OjEzcHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOi01cHg7XHRcbiAgICAgICAgICAgICAgICB3aWR0aDo0cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OjE0cHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDojYWFhO1xuICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgei1pbmRleDoyO1xuICAgICAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czoycHg7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjJweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOjJweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OicnO1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6MTNweDtcbiAgICAgICAgICAgICAgICAgICAgdG9wOi01cHg7XHRcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6NHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6MTRweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDojYWFhO1xuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OjI7XG4gICAgICAgICAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czoycHg7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czoycHg7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6MnB4OyAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIFxuXG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENhdGFsb2cgLSBQcm9kdWN0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucHJvZHVjdC12aWV3IHtcbiAgICAucHJvZHVjdC1lc3NlbnRpYWwge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5leHRyYS1pbmZvIHtcbiAgICAgICAgICAgIC5yYXRpbmdzIHtcbiAgICAgICAgICAgICAgICAucmF0aW5nLWJveCxcbiAgICAgICAgICAgICAgICAuYW1vdW50IHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnJhdGluZy1ib3gge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGdhcDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZG93bmxvYWRzLWl0ZW0ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjVlbTtcbiAgICB9XG4gICAgLnByb2R1Y3Qtc2hvcCAucHJvZHVjdC1uYW1lIC5oMSxcbiAgICAucHJvZHVjdC1pbWctYm94IC5wcm9kdWN0LW5hbWUgaDEge1xuICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgfVxuXG4gICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGZsb2F0OiByaWdodDtcblxuICAgICAgICAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgICAgICAucHJvZHVjdC1uYW1lIC5oMSB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5leHRyYS1pbmZvIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJHRyaW0vMjtcbiAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcmljZS1pbmZvIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHRyaW0vMjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmV4dHJhLWluZm8sXG4gICAgICAgIC5wcmljZS1pbmZvIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNzAlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNob3J0LWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgLnN0ZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5yYXRpbmdzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hdmFpbGFiaWxpdHkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLWJveCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuXG4gICAgICAgICAgICAub2xkLXByaWNlLFxuICAgICAgICAgICAgLnNwZWNpYWwtcHJpY2UsXG4gICAgICAgICAgICAucmVndWxhci1wcmljZSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucmVndWxhci1wcmljZSAucHJpY2UsXG4gICAgICAgICAgICAuc3BlY2lhbC1wcmljZSAucHJpY2UsXG4gICAgICAgICAgICAuZnVsbC1wcm9kdWN0LXByaWNlIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zcGVjaWFsLXByaWNlIHtcblxuICAgICAgICAgICAgICAgIC5wcmljZS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzcGFuLndlZWUge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcblxuICAgICAgICAgICAgICAgICAgICBzcGFuLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByaWNlLWV4Y2x1ZGluZy10YXgsXG4gICAgICAgICAgICAucHJpY2UtaW5jbHVkaW5nLXRheCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcblxuICAgICAgICAgICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJpY2UtYm94Lm1hcC1pbmZvIGEge1xuICAgICAgICBkaXNwbGF5OiBpbmhlcml0O1xuICAgIH1cblxuICAgIC5vbGQtcHJpY2Uge1xuICAgICAgICAucHJpY2UtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydC13cmFwcGVyLFxuICAgIC5ibG9jay1yZWxhdGVkIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBjbGVhcjogcmlnaHQ7XG4gICAgfVxuXG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgODUwcHgpIHtcbiAgICAucHJvZHVjdC12aWV3IHtcbiAgICAgICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgICAgICAucHJpY2UtYm94IHtcbiAgICAgICAgICAgICAgICAucHJpY2UtZXhjbHVkaW5nLXRheCxcbiAgICAgICAgICAgICAgICAucHJpY2UtaW5jbHVkaW5nLXRheCB7XG4gICAgICAgICAgICAgICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAucHJvZHVjdC12aWV3IHtcbiAgICAgICAgLmFkZC10by1jYXJ0LXdyYXBwZXIge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgICAgICAucHJpY2UtYm94IHtcbiAgICAgICAgICAgICAgICAucHJpY2UtZXhjbHVkaW5nLXRheCxcbiAgICAgICAgICAgICAgICAucHJpY2UtaW5jbHVkaW5nLXRheCB7XG4gICAgICAgICAgICAgICAgICAgIC5sYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAucHJpY2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDQyMHB4KSB7XG4gICAgLnByb2R1Y3QtdmlldyB7XG4gICAgICAgIC5wcm9kdWN0LXNob3Age1xuICAgICAgICAgICAgLnByaWNlLWJveCB7XG4gICAgICAgICAgICAgICAgLnByaWNlLWV4Y2x1ZGluZy10YXgsXG4gICAgICAgICAgICAgICAgLnByaWNlLWluY2x1ZGluZy10YXgge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cbiAgICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgICAgIC5wcm9kdWN0LWltYWdlIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAxZW0gMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucHJvZHVjdC1pbWFnZS10aHVtYnMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgIHRvcDogYXV0bzsgXG4gICAgICAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBmbG9hdDogbGVmdDtcblxuICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1JTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1pbWFnZSBpbWcge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLy8gU2luY2UgcHJvZHVjdCBkZXRhaWwgcGFnZSBpbWFnZXMgYXJlIG5vdCBjcm9wcGVkIHRvIGEgc3BlY2lmaWMgYXNwZWN0IHJhdGlvLCBpbiBvcmRlciB0byBtYWtlIHRoZSBpbWFnZSBub3RcbiAgICAgICAgLy8gY3V0IG9mZiBvbiB0YWxsIHNraW5ueSBzY3JlZW5zLCB3ZSBhcmUgc2V0dGluZyBhIG1heC1oZWlnaHQgb24gdGhlIGltYWdlXG4gICAgICAgIG1heC1oZWlnaHQ6IDc1MHB4O1xuXG4gICAgICAgIC8vIENlbnRlcmluZyB0aGUgaW1hZ2UgZm9yIGluc3RhbmNlcyB3aGVyZSBtYXgtaGVpZ2h0IGtpY2tzIGluXG4gICAgICAgIG1hcmdpbjogMHB4IGF1dG87XG4gICAgfVxufVxuXG4vLyBPbiBzbWFsbGVyIGRldmljZXMsIHdlIHdhbnQgdG8gZnVydGhlciBsaW1pdCB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZSwgdG8gcHJldmVudCBjcm9wcGluZ1xuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLnByb2R1Y3QtaW1nLWJveCAucHJvZHVjdC1pbWFnZSBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OiA0NTBweDtcbiAgICB9XG59XG5cbi5wcm9kdWN0LWltYWdlLWdhbGxlcnkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAuZ2FsbGVyeS1pbWFnZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgJi52aXNpYmxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAgICAgICAmLmhpZGRlbiB7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTpoaWRkZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsb2FkaW5nT3ZlcmxheSgpO1xufVxuXG4ucHJvZHVjdC1pbWFnZS10aHVtYnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogNy41JTtcbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgfVxuICAgIGxpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICBsaTpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgIH1cbiAgICBhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbi5uby10b3VjaCAucHJvZHVjdC1pbWFnZS10aHVtYnMge1xuICAgIGE6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IGRhcmtlbigkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0LCAxNSUpO1xuICAgIH1cbn1cblxuLnByb2R1Y3QtdmlldyAucHJvZHVjdC1zaG9wLFxuLnByb2R1Y3QtdmlldyAuYWRkLXRvLWNhcnQtd3JhcHBlcixcbi5wcm9kdWN0LXZpZXcgLmJsb2NrLXJlbGF0ZWQge1xuICAgIHBhZGRpbmctbGVmdDogJHRyaW0vMjtcbn1cblxuLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgcGFkZGluZy1yaWdodDogJHRyaW0vMjtcbn1cblxuLnByb2R1Y3QtdmlldyAucHJvZHVjdC1zaG9wLFxuLnByb2R1Y3QtaW1nLWJveCxcbi5wcm9kdWN0LWNvbGxhdGVyYWwsXG4ucHJvZHVjdC12aWV3IC5ibG9jay1yZWxhdGVkLFxuLmJveC1jb2xsYXRlcmFsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG59XG5cbi5wcm9kdWN0LXZpZXcge1xuXG4gICAgLmFkZC10by1ib3g6YWZ0ZXIsXG4gICAgLmFkZC10by1jYXJ0OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLmFkZC10by1jYXJ0IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDNweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgfVxuXG4gICAgLyogU2V0IGEgbWluLWhlaWdodCBzbyB0aGF0IHRoZSBmbG9hdGVkIGVsZW1lbnRzIGJyZWFrIGFwcHJvcHJpYXRlbHkgKi9cbiAgICAuYWRkLXRvLWNhcnQgLnF0eS13cmFwcGVyLFxuICAgIC5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC5wcmljZS1ib3gsXG4gICAgLmFkZC10by1jYXJ0LWJ1dHRvbnMge1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC5wcmljZS1ib3gsXG4gICAgLmFkZC10by1jYXJ0IC5xdHktd3JhcHBlcixcbiAgICAuYWRkLXRvLWNhcnQtYnV0dG9ucyAuYnV0dG9uLFxuICAgIC5hZGQtdG8tY2FydC1idXR0b25zIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuXG4gICAgLmFkZC10by1jYXJ0IC5xdHktd3JhcHBlcixcbiAgICAuYWRkLXRvLWNhcnQgLnF0eS13cmFwcGVyIGxhYmVsIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3cHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydCAucXR5LXdyYXBwZXIgbGFiZWwge1xuICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICB9XG5cbiAgICAuYWRkLXRvLWNhcnQgLnF0eS13cmFwcGVyIC5xdHkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIC5hZGQtdG8tY2FydC1idXR0b25zIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOyAvLyBDb25zdHJhaW4gd2lkdGggaW4gRmlyZWZveFxuXG4gICAgICAgIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgLnBheXBhbC1idXR0b24ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNzBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJtbF9idXR0b24ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxNzRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bztcblxuICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLXRvLWNhcnQtYnV0dG9ucyAuYnV0dG9uIHtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgcGFkZGluZzogMHB4IDMwcHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICAuYWxlcnQtcHJpY2UsXG4gICAgLmFsZXJ0LXN0b2NrIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAucHJvZHVjdC12aWV3IC5hZGQtdG8tY2FydC1idXR0b25zIHtcbiAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYXlwYWwtbG9nbyxcbiAgICAgICAgLnBheXBhbC1vcixcbiAgICAgICAgLnBheXBhbC1idXR0b24sXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFRoaXMgaXMgdGhlIFwib3JcIiB0aGF0IHNlcGFyYXRlcyB0aGUgXCJBZGQgdG8gQ2FydFwiIGFuZCBcIkFkZCB0byBYXCIgbGlua3MgKi9cbi5hZGQtdG8tYm94IC5vciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnByb2R1Y3QtdmlldyAuYWRkLXRvLWxpbmtzIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIHBhZGRpbmc6IDJweCA3cHggMnB4IDBweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICB9XG5cbiAgICBsaTpmaXJzdC1jaGlsZCBhIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICB9XG5cbiAgICBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDBweDtcbiAgICB9XG59XG5cbi5wcm9kdWN0LXZpZXcgLnNoYXJpbmctbGlua3Mge1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmc6IDBweCA3cHggN3B4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICBAaW5jbHVkZSBpbWFnZS1yZXBsYWNlbWVudDtcbiAgICAgICAgQGV4dGVuZCAuaWNvbi1zcHJpdGU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMjZweDtcbiAgICAgICAgaGVpZ2h0OiAyNnB4O1xuICAgIH1cbiAgICBhOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cbiAgICBhLmxpbmstd2lzaGxpc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggLTIyNXB4O1xuICAgIH1cbiAgICBhLmxpbmstY29tcGFyZSB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtMjUwcHg7XG4gICAgfVxuICAgIGEubGluay1lbWFpbC1mcmllbmQge1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggKC0zMjVweCArIDNweCk7XG4gICAgfVxuICAgIGEubGluay1mYWNlYm9vayB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtNDI1cHg7XG4gICAgfVxuICAgIGEubGluay10d2l0dGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4ICgtMzc1cHggKyAzcHgpO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA1OTlweCkge1xuICAgIC5hZGQtdG8tYm94IC5hZGQtdG8tbGlua3Mge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBAaW5jbHVkZSBpbWFnZS1yZXBsYWNlbWVudC1vdmVycmlkZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnByb2R1Y3QtY29sbGF0ZXJhbCB7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi5jb2xsYXRlcmFsLXRhYnMge1xuICAgIGRkIHtcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJveC1jb2xsYXRlcmFsIHtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnByb2R1Y3QtY29sbGF0ZXJhbCB7XG4gICAgICAgIEBpbmNsdWRlIHRhYnM7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgIC5wcm9kdWN0LWNvbGxhdGVyYWwge1xuICAgICAgICBAaW5jbHVkZSBhY2NvcmRpb247XG4gICAgICAgIEBpbmNsdWRlIGFjY29yZGlvbkNvbGxhcHNlO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAucHJvZHVjdC12aWV3IC5wcm9kdWN0LXNob3AsXG4gICAgLnByb2R1Y3QtdmlldyAuYWRkLXRvLWNhcnQtd3JhcHBlcixcbiAgICAucHJvZHVjdC12aWV3IC5ibG9jay1yZWxhdGVkLFxuICAgIC5wcm9kdWN0LWltZy1ib3gsXG4gICAgLnByb2R1Y3QtY29sbGF0ZXJhbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuXG4gICAgLnByb2R1Y3QtdmlldyAucHJvZHVjdC1zaG9wIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgLnByb2R1Y3QtaW1nLWJveCAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuXG4gICAgLnByb2R1Y3QtdmlldyAucHJvZHVjdC1zaG9wLFxuICAgIC5wcm9kdWN0LWltZy1ib3gsXG4gICAgLnByb2R1Y3QtY29sbGF0ZXJhbCxcbiAgICAucHJvZHVjdC12aWV3IC5ibG9jay1yZWxhdGVkLFxuICAgIC5ib3gtY29sbGF0ZXJhbCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgIH1cbn1cblxuLnByb2R1Y3QtdmlldyAucmF0aW5ncyB7XG4gICAgLnJhdGluZy1saW5rcyB7XG4gICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG59XG5cbiNwcm9kdWN0LWF0dHJpYnV0ZS1zcGVjcy10YWJsZSB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXN0ZC1mb3JtYXR0ZWQtd2lkdGg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtdGFibGUtYm9yZGVyO1xuXG4gICAgdGgge1xuICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBDYXRhbG9nIC0gR3JvdXBlZCBQcm9kdWN0IExpc3RcbiAqL1xuXG4uZ3JvdXBlZC1pdGVtcy10YWJsZS13cmFwcGVyIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkYy10YWJsZS1ib3JkZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG5cbiAgICB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgIH1cbn1cblxuLmdyb3VwZWQtaXRlbXMtdGFibGUge1xuICAgIC5uYW1lLXdyYXBwZXIge1xuICAgICAgICBjb2xvcjogJGMtdGV4dC1wcmltYXJ5O1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICB9XG5cbiAgICAucXR5LXdyYXBwZXIge1xuICAgICAgICBwYWRkaW5nLXRvcDogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG5cbiAgICAucXR5LWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgfVxuXG5cbiAgICB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnByaWNlLWJveHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBDYXRhbG9nIC0gUHJvZHVjdCBPcHRpb25zXG4gKi9cblxuLnByb2R1Y3Qtb3B0aW9ucyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAxMHB4IDAgMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHggMTVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1maWVsZHNldC1ib3JkZXI7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHAucmVxdWlyZWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDZweDtcbiAgICByaWdodDogMTVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcbiAgICAucHJvZHVjdC12aWV3IC5wcm9kdWN0LW9wdGlvbnMgLnJlcXVpcmVkIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZHQge1xuICAgIG1hcmdpbjogJGdhcCAwIDNweDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGR0OmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIC5xdHktaG9sZGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkZ2FwIDAgMCAwO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIC5xdHktaG9sZGVyIC5xdHkge1xuICAgIHdpZHRoOiAzZW07XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgLnF0eS1ob2xkZXIgbGFiZWwge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQgLnF0eS1kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMCAycHg7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGQge1xuICAgIHBhZGRpbmc6IDAgMCAxMHB4IDA7XG4gICAgbWFyZ2luOiAwIDAgNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1maWVsZHNldC1ib3JkZXItbGlnaHQ7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgZGwubGFzdCBkZC5sYXN0IHtcbiAgICBib3JkZXItYm90dG9tOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCAuaW5wdXQtdGV4dCB7XG4gICAgd2lkdGg6IDk4JTtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCAuaW5wdXQtYm94IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCBpbnB1dC5kYXRldGltZS1waWNrZXIge1xuICAgIHdpZHRoOiAxNTBweDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBkZCAudGltZS1waWNrZXIge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAycHggMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIHRleHRhcmVhIHtcbiAgICB3aWR0aDogOTglO1xuICAgIGhlaWdodDogOGVtO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIGRkIHNlbGVjdCB7XG4gICAgd2lkdGg6IDMzMHB4O1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyB1bC5vcHRpb25zLWxpc3Qge1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHVsLm9wdGlvbnMtbGlzdCBsaSB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW4tYm90dG9tOiA3cHg7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IGxpOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IC5yYWRpbyxcbi5wcm9kdWN0LW9wdGlvbnMgdWwub3B0aW9ucy1saXN0IC5jaGVja2JveCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHVsLm9wdGlvbnMtbGlzdCAubGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zIHVsLm9wdGlvbnMtbGlzdCBsYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucyBwLm5vdGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xufVxuXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLWZpZWxkc2V0LWJvcmRlcjtcbiAgICBib3JkZXItdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b206YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAucHJvZHVjdC1wcmljaW5nLFxuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnRpZXItcHJpY2VzIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDAgMCAkZ2FwO1xuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiAwO1xuICAgIGNvbG9yOiAkYy10ZXh0O1xuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteGxhcmdlKSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2FwIC8gMjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWZpZWxkc2V0LWJvcmRlcjtcbiAgICB9XG59XG5cbi5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC50aWVyLXByaWNlcyBsaSB7XG4gICAgYmFja2dyb3VuZDogMDtcbiAgICBwYWRkaW5nOiAycHggMDtcbn1cblxuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnRpZXItcHJpY2VzIC5wcmljZSxcbi5wcm9kdWN0LW9wdGlvbnMtYm90dG9tIC50aWVyLXByaWNlcyAuYmVuZWZpdCB7XG4gICAgY29sb3I6ICRjLXRleHQ7XG59XG5cbi8qIFwiZGlzcGxheTogbm9uZVwiIHNob3VsZCBiZSByZW1vdmVkIGlmIHByb2R1Y3RzIG9uIHNpdGUgaGF2ZSBhIGxvbmcgbGlzdCBvZiBwcm9kdWN0IG9wdGlvbnMgYW5kIHRob3NlIHByb2R1Y3Qgb3B0aW9ucyAqL1xuLyogIGFmZmVjdCB0aGUgcHJpY2Ugc28gdGhhdCB0aGUgY3VzdG9tZXIgY2FuIHNlZSB0aGUgdXBkYXRlZCBwcmljZSBjbG9zZSB0byB0aGUgXCJBZGQgdG8gQ2FydFwiIGJ1dHRvbiAqL1xuLnByb2R1Y3Qtb3B0aW9ucy1ib3R0b20gLnByaWNlLWJveCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAwIDAgJGdhcDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAucHJpY2UtYm94IC5wcmljZS1hcy1jb25maWd1cmVkIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgLnByaWNlLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucHJvZHVjdC1vcHRpb25zLWJvdHRvbSAucHJpY2UtdGF4IHtcbiAgICBmbG9hdDogbGVmdDtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogUmVsYXRlZCBQcm9kdWN0c1xuICovXG5cbi8qIEJsb2NrOiBSZWxhdGVkICovXG5cbi5ibG9jay1yZWxhdGVkIHtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG5cbiAgICAuYmxvY2stdGl0bGUge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGgyKCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJsb2NrLXN1YnRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG5cbiAgICAucHJvZHVjdCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICAgIC5jaGVja2JveCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tdG9wOiAzNnB4O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWRldGFpbHMge1xuICAgICAgICBtYXJnaW4tbGVmdDogOTBweDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWRldGFpbHMgLnByaWNlLWJveCB7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgM3B4O1xuXG4gICAgICAgIGEsXG4gICAgICAgIHAsXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogM3B4O1xuXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxpbmstd2lzaGxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogVXBzZWxsIFByb2R1Y3RzXG4gKi9cblxuLmJveC11cC1zZWxsIHtcbiAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmctbGFyZ2U7XG5cbiAgICAucmF0aW5ncyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDYXRhbG9nIC0gTVNSUCBNQVAgUG9wdXBcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXJ0LW1zcnAtdG90YWxzIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbjogMTBweCAxMHB4IDA7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ubWFwLWNhcnQtc2lkZWJhci10b3RhbCB7XG4gICAgY29sb3I6IHJlZDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xufVxuXG4ubWFwLXBvcHVwIHtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGO1xuICAgIGJvcmRlcjogNXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgbWFyZ2luOiAxMnB4IDAgMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aWR0aDogNDUwcHg7XG4gICAgei1pbmRleDogMTAwO1xuXG4gICAgQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgICAgICAmLm1hcC1wb3B1cC1yaWdodCB7XG4gICAgICAgICAgICBsZWZ0OiAkZ2FwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLm1hcC1wb3B1cC1sZWZ0IHtcbiAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgICAgIHJpZ2h0OiAkZ2FwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGxlZnQ6IDBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtaGVhZGluZyB7XG4gICAgICAgIHBhZGRpbmc6IDhweCAxMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWFwLXBvcHVwLWNsb3NlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAubWFwLXBvcHVwLWNvbnRlbnQge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgICAgbWFyZ2luOiAwIDEwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWFwLXBvcHVwLWNoZWNrb3V0IHtcbiAgICAgICAgcGFkZGluZzogJGdhcCAwO1xuXG4gICAgICAgIGZvcm06YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGRpdGlvbmFsLWFkZHRvY2FydC1ib3gge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDIxMHB4OyAvLyBmaXggZm9yIGEgd2ViLWtpdCBib3gtbW9kZWwgZGlzcGxheSBidWdcblxuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcblxuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYm1sX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICAuYnV0dG9uLFxuICAgICAgICAgICAgLmFkZGl0aW9uYWwtYWRkdG9jYXJ0LWJveCxcbiAgICAgICAgICAgIC5wYXlwYWwtbG9nbyBhLFxuICAgICAgICAgICAgLnBheXBhbC1sb2dvIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYWRkaXRpb25hbC1hZGR0b2NhcnQtYm94IHtcbiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnBheXBhbC1sb2dvIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm1hcC1wb3B1cC1wcmljZSB7XG4gICAgICAgIHBhZGRpbmc6ICRnYXAgMDtcbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLWJveCxcbiAgICAgICAgLnByaWNlLWJveCAuc3BlY2lhbC1wcmljZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByaWNlLWJveCAubWluaW1hbC1wcmljZS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYXAtcG9wdXAtdGV4dCB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgbWFyZ2luOiAwIDEwcHg7XG4gICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB9XG5cbiAgICAubWFwLXBvcHVwLXRleHQsXG4gICAgLm1hcC1wb3B1cC1vbmx5LXRleHQge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENhdGFsb2cgLSBNU1JQIFByb2R1Y3QgTGlzdGluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnByaWNlLWJveCAubWFwLWxpbmsge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2F0YWxvZyAtIENvbXBhcmVcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ibG9jay1jb21wYXJlIC5wcm9kdWN0LW5hbWU6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4uY29tcGFyZS10YWJsZSAucHJvZHVjdC1pbWFnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY29tcGFyZS10YWJsZSB7XG4gICAgLnByb2R1Y3Qtc2hvcC1yb3cge1xuICAgICAgICAmLnRvcCB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJvdHRvbSB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBMYXlvdXRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXJ0LXRhYmxlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogNjAlO1xufVxuXG4uY2FydCAuYnV0dG9uIHtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4uY2FydC1mb3Jtcyxcbi5jYXJ0LXRvdGFscy13cmFwcGVyLFxuLmNyb3Nzc2VsbCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIGNsZWFyOiByaWdodDtcbiAgICB3aWR0aDogNDAlO1xuICAgIHBhZGRpbmctbGVmdDogJGJveC1zcGFjaW5nLWxhcmdlO1xufVxuXG4uY2FydC10b3RhbHMsXG4uY2FydC1mb3JtcyAuZGlzY291bnQsXG4uY2FydC1mb3JtcyAuZ2lmdGNhcmQsXG4uY2FydC1mb3JtcyAuc2hpcHBpbmcge1xuICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xufVxuXG4uY2FydC10YWJsZSxcbi5jYXJ0LXRvdGFscyxcbi5jYXJ0LWZvcm1zIC5kaXNjb3VudCxcbi5jYXJ0LWZvcm1zIC5naWZ0Y2FyZCxcbi5jYXJ0LWZvcm1zIC5zaGlwcGluZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJveC1zcGFjaW5nLWxhcmdlO1xufVxuXG4uY2hlY2tvdXQtY2FydC1pbmRleCB7XG4gICAgI3Bvc3Rjb2RlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG5AbWl4aW4gb25lQ29sdW1uQ2FydEl0ZW1zIHtcbiAgICAuY2FydC10YWJsZSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2FydC1mb3JtcyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICAuY2FydC10b3RhbHMtd3JhcHBlcixcbiAgICAuY3Jvc3NzZWxsIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm94LXNwYWNpbmc7XG4gICAgfVxuXG4gICAgLmNhcnQtZm9ybXMsXG4gICAgLmNhcnQtdG90YWxzLXdyYXBwZXIsXG4gICAgLmNyb3Nzc2VsbCB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuXG4gICAgLmNyb3Nzc2VsbCB7XG4gICAgICAgIGNsZWFyOiByaWdodDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbn1cblxuLmRpc3BsYXktYm90aC1wcmljZXMge1xuICAgIEBpbmNsdWRlIG9uZUNvbHVtbkNhcnRJdGVtcztcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcbiAgICAuZGlzcGxheS1zaW5nbGUtcHJpY2Uge1xuICAgICAgICBAaW5jbHVkZSBvbmVDb2x1bW5DYXJ0SXRlbXM7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDU5OXB4KSB7XG4gICAgLnByb2R1Y3QtY2FydC1za3Uge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5kaXNwbGF5LWJvdGgtcHJpY2VzLFxuICAgIC5kaXNwbGF5LXNpbmdsZS1wcmljZSB7XG4gICAgICAgIC5jYXJ0LWZvcm1zLFxuICAgICAgICAuY2FydC10b3RhbHMtd3JhcHBlcixcbiAgICAgICAgLmNyb3Nzc2VsbCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGlzcGxheS1zaW5nbGUtcHJpY2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDaGVja291dCAtIENhcnRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXJ0IC5wYWdlLXRpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbiAgICBoMSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG59XG5cbi5jaGVja291dC10eXBlcyB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgIGxpIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICBtYXJnaW46IDAgMCA1cHggNXB4O1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICAgIC8qIFdlIGFsd2F5cyB3YW50IHRoaXMgc2hpcHBpbmcgbWV0aG9kIHRvIGRpc3BsYXkgb24gaXRzIG93biBsaW5lICovXG4gICAgLm1ldGhvZC1jaGVja291dC1jYXJ0LW1ldGhvZHMtbXVsdGlzaGlwcGluZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYudG9wIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJtbF9idXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wYXlwYWwtbG9nbyAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuYm90dG9tLFxuICAgICYubWluaWNhcnQge1xuICAgICAgICAucGF5cGFsLWxvZ28ge1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICBtYXJnaW46IDBweDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDc0MXB4KSB7XG4gICAgLmNoZWNrb3V0LXR5cGVzLmJvdHRvbSB7XG4gICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA3MHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2FydC10b3RhbHMgLmNoZWNrb3V0LXR5cGVzIC5idG4tY2hlY2tvdXQge1xuICAgIG1hcmdpbi1ib3R0b206IDdweDtcbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA3NDBweCkge1xuICAgIC5jaGVja291dC10eXBlcyB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAgICAgJi5ib3R0b20sXG4gICAgICAgICYubWluaWNhcnQge1xuICAgICAgICAgICAgLnBheXBhbC1vciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2hlY2tvdXQtdHlwZXMgbGkge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAuYnRuLWNoZWNrb3V0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uY2FydC10YWJsZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG5cbiAgICB0aCxcbiAgICB0ZCxcbiAgICB0Ym9keSB0ZCB7XG4gICAgICAgIC8vIEFkZGluZyB0Ym9keSBmb3IgZXh0cmEgc2VsZWN0b3Igd2VpZ2h0XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuXG4gICAgaDIge1xuICAgICAgICBjb2xvcjogJGMtaDI7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICB0aGVhZCB0aCxcbiAgICB0Ym9keSB0ZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDVweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtY2FydC1pbmZvLFxuICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICB9XG5cbiAgICB0ciB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG4gICAgfVxuXG4gICAgdGZvb3Qge1xuICAgICAgICB0ciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdHIgPiB0ZDphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwYW4ub3Ige1xuICAgICAgICBmb250LXNpemU6IDlweDtcbiAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgIH1cblxuICAgIC5wcm9kdWN0LWNhcnQtaW1hZ2UgLmNhcnQtbGlua3MsXG4gICAgLnByb2R1Y3QtY2FydC1pbmZvIC5idG4tcmVtb3ZlLFxuICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyAuYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1jYXJ0LWltYWdlIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAgIC5wcm9kdWN0LWltYWdlIGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGEuY2FydC1lZGl0IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1jYXJ0LXNrdSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIG1hcmdpbjogNXB4IDAgMTJweDtcblxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4tZW1wdHkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1jYXJ0LXRvdGFsLFxuICAgIC5wcm9kdWN0LWNhcnQtcHJpY2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNhcnQtdGF4LXRvdGFsIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmlhbmdsZShsZWZ0LCA2cHgsICRjLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDNweDtcbiAgICAgICAgICAgIHJpZ2h0OiAtMTFweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY2FydC10YXgtdG90YWwtZXhwYW5kZWQge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUoZG93biwgNnB4LCAkYy10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMTVweDtcbiAgICAgICAgICAgICAgICB0b3A6IDZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJ0LWxpbmtzID4gbGkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgIG1pbi13aWR0aDogNjVweDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG5cbiAgICAgICAgPiBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucHJvZHVjdC1jYXJ0LWFjdGlvbnMge1xuICAgICAgICBtaW4td2lkdGg6IDYwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAucXR5IHtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtaW5wdXQtYm9yZGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMy4yZW07XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLW9wdGlvbnMge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAuY2FydC10YWJsZSB7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGgsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDdweCA2cHg7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LWFjdGlvbnMgPiBsaSB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA2OTlweCkge1xuICAgIC5kaXNwbGF5LWJvdGgtcHJpY2VzIHtcbiAgICAgICAgLmNhcnQtdGFibGUge1xuICAgICAgICAgICAgdGhlYWQgdGguY2FydC10b3RhbC1oZWFkLFxuICAgICAgICAgICAgdGQucHJvZHVjdC1jYXJ0LXRvdGFsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDU5OXB4KSB7XG5cbiAgICAuY2FydC10YWJsZSB7XG4gICAgICAgIGNvbGdyb3VwLCB0aGVhZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRmb290IHRyIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgICAgICAgICZbZGF0YS1yd2QtbGFiZWxdIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNnB4O1xuXG4gICAgICAgICAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1yd2QtbGFiZWwpIFwiOlwiO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnByb2R1Y3QtY2FydC1wcmljZSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXJ0LWxpbmtzIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG5cbiAgICAgICAgICAgID4gbGkge1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgICAgICAgICAgPiBhIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMnB4IDBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY2FydC10YXgtaW5mbyB7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG5cbiAgICAgICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1jYXJ0LWltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDEvNCk7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG4gICAgICAgICAgICBhLmNhcnQtZWRpdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1pbmZvLFxuICAgICAgICB0ZFtkYXRhLXJ3ZC1sYWJlbF0ge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMy80KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyxcbiAgICAgICAgLnByb2R1Y3QtY2FydC1wcmljZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1yZW1vdmUsXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtdG90YWwsXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtYWN0aW9ucyAuY2FydC1saW5rcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1pbWFnZSAuY2FydC1saW5rcyxcbiAgICAgICAgLnByb2R1Y3QtY2FydC1pbmZvIC5idG4tcmVtb3ZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBlbGVtZW50IHdpbGwgYmUgZGlzcGxheWVkIHZpYSBKUyBvbmNlIHRoZSByZWxhdGVkIGlucHV0IGlzIGZvY3VzZWRcbiAgICAgICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zIC5idXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LWNhcnQtaW5mbyB7XG5cbiAgICAgICAgICAgIC5idG4tcmVtb3ZlIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAtNHB4IDBweCAycHggN3B4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1jYXJ0LXNrdSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtY2FydC1hY3Rpb25zIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgIC5xdHkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcmljZSxcbiAgICAgICAgLnByb2R1Y3QtY2FydC1wcmljZTpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1sO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FydC1mb290ZXItYWN0aW9ucyB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgI2VtcHR5X2NhcnRfYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4tY29udGludWUge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLXVwZGF0ZSxcbiAgICAgICAgICAgIHNwYW4ub3Ige1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kaXNwbGF5LWJvdGgtcHJpY2VzIHtcbiAgICAgICAgLmNhcnQtdGFibGUge1xuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICZbZGF0YS1yd2QtdGF4LWxhYmVsXSB7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1yd2QtdGF4LWxhYmVsKSBcIjpcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBFc3RpbWF0ZSBTaGlwcGluZyBhbmQgVGF4XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2hpcHBpbmcge1xuXG4gICAgaDIge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgfVxuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1pbnB1dC1ib3JkZXI7XG4gICAgfVxuXG4gICAgc2VsZWN0LnZhbGlkYXRpb24tZmFpbGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1kYW5nZXI7XG4gICAgfVxuXG4gICAgLnNoaXBwaW5nLWRlc2Mge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWxpc3Qge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luOiA1cHggMiUgMTBweCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLnNoaXBwaW5nLWNvdW50cnkge1xuICAgICAgICAgICAgd2lkdGg6IDM3JTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaGlwcGluZy1yZWdpb24ge1xuICAgICAgICAgICAgd2lkdGg6IDQxJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zaGlwcGluZy1wb3N0Y29kZSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTglO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmlucHV0LWJveCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3AtbWV0aG9kcyB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMCAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjY28tc2hpcHBpbmctbWV0aG9kLWZvcm0gLmJ1dHRvbnMtc2V0IC5idXR0b24ge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICAgICNjby1zaGlwcGluZy1tZXRob2QtZm9ybSAuc3AtbWV0aG9kcyBkZCBsYWJlbCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kLWhvdmVyO1xuICAgICAgICBtaW4td2lkdGg6IDIyMHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUoJGMtbW9kdWxlLWJhY2tncm91bmQsIDEwJSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cbiAgICAuc2hpcHBpbmcgLnNoaXBwaW5nLWZvcm0gLmZvcm0tbGlzdCA+IGxpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsb2F0OiBub25lO1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb3RhbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2FydCAuY2FydC10b3RhbHMge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cblxuICAgIHRhYmxlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMnB4IDBweDtcbiAgICAgICAgfVxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQsXG4gICAgICAgIHRib2R5IHRyOmxhc3QtY2hpbGQgdGgge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICB0Zm9vdCB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0U2RTZFNjtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRTZFNkU2O1xuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0cm9uZyBzcGFuLFxuICAgICAgICAgICAgc3Bhbi5wcmljZSB7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNhbnM7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDYwMHB4KSB7XG5cbiAgICAuY2FydC10b3RhbHMge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLmNhcnQgLmNhcnQtdG90YWxzIHRhYmxlIHRmb290IHRkIHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4bDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGlzY291bnQgY29kZXMgYW5kIGdpZnQgY2FyZHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGlzY291bnQtZm9ybTphZnRlcixcbiNnaWZ0Y2FyZC1mb3JtOmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuI2Rpc2NvdW50LWNvdXBvbi1mb3JtLFxuLmNhcnQgLmdpZnRjYXJkIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIGgyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIG1pbi13aWR0aDogMTA1cHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cblxuICAgIC5maWVsZC13cmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cblxuICAgIC52YWxpZGF0aW9uLWFkdmljZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICB9XG5cbiAgICAuYnV0dG9uLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG5cbiAgICAgICAgPiBidXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW5wdXQtdGV4dCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgbWFyZ2luOiA0cHggMTBweCAwIDA7XG4gICAgICAgIHdpZHRoOiAxOTBweDtcbiAgICB9XG59XG5cbi5jYXJ0IC5naWZ0Y2FyZCBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xufVxuXG4uY2FydCAuZ2lmdGNhcmQgLmNoZWNrLWdjLXN0YXR1cyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZzogMHB4O1xuXG4gICAgPiBzcGFuID4gc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDaGVja291dCAtIENhcnQgQ3Jvc3Mgc2VsbFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNyb3Nzc2VsbCB7XG4gICAgaDIge1xuICAgICAgICBjb2xvcjogJGMtYmx1ZTtcbiAgICB9XG5cbiAgICAuaXRlbSBhLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxufVxuXG4vKiBDaGFuZ2UgdGhlIGxheW91dCB0byAyIGNvbHVtbnMgYXQgYSBicmVha3BvaW50IHRoYXQgaXMgaGlnaGVyIHRoYW4gYSAzIGNvbHVtbnMgbGF5b3V0IHdvdWxkIG5vcm1hbGx5IGJyZWFrICovXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIC5jcm9zc3NlbGwge1xuICAgICAgICAucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZChldmVuKSxcbiAgICAgICAgLnByb2R1Y3RzLWdyaWQgPiBsaTpudGgtY2hpbGQoM24pLFxuICAgICAgICAucHJvZHVjdHMtZ3JpZCA+IGxpIHtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDIxMCAvIDQ0MCk7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHBlcmNlbnRhZ2UoMjAgLyA0NDApO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3RzLWdyaWQgPiBsaTpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0cy1ncmlkID4gbGk6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIFVuZG8gdGhyZWUtY29sdW1uIGNvbmZpZyAqL1xuICAgICAgICAucHJvZHVjdHMtZ3JpZCA+IGxpOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICAgICAgICBjbGVhcjogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAuY2FydC10YWJsZSB7XG4gICAgICAgIC5jYXJ0LXRheC10b3RhbCB7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICByaWdodDogLTlweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY2FydC10YXgtdG90YWwtZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogLTEzcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDMyMHB4KSB7XG4gICAgLmNyb3Nzc2VsbCB7XG4gICAgICAgIHVsIHtcbiAgICAgICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDBweCA0MHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1kZXRhaWxzIC5jcm9zc3NlbGwtYWN0aW9ucyB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IC0gT25lIFBhZ2VcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jaGVja291dC1vbmVwYWdlLWluZGV4IC5jb2wtcmlnaHQsXG4uY2hlY2tvdXQtb25lcGFnZS1pbmRleCAuY29sLWxlZnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5jaGVja291dC1vbmVwYWdlLWluZGV4IC5jb2wtbWFpbiB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgZmxvYXQ6IG5vbmU7XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLWxhcmdlKzEpIHtcbiAgICAuY2hlY2tvdXQtb25lcGFnZS1pbmRleCB7XG4gICAgICAgIC5jb2wtbWFpbiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiBwZXJjZW50YWdlKDY2MHB4Lzk2MHB4KTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sLXJpZ2h0LFxuICAgICAgICAuY29sLWxlZnQge1xuICAgICAgICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMzAwcHgvOTYwcHgpO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sLXJpZ2h0IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm9wYyB7XG4gICAgc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6ICgyMzBweCArIDEzNXB4KTtcbiAgICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNlY3Rpb24gU3R5bGluZyAtIERlZmF1bHRcbiAqL1xuXG4ub3BjIC5zZWN0aW9uIC5zdGVwLXRpdGxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtZGl2aWRlci1ib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpbmNsdWRlIG5vdC1zZWxlY3RhYmxlO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cblxuLm9wYyAuc2VjdGlvbi5hbGxvdzpub3QoLmFjdGl2ZSkgLnN0ZXAtdGl0bGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogVXNpbmcgLm5vLXRvdWNoIHNpbmNlIHRvdWNoIGRldmljZXMgZW11bGF0ZSBob3ZlciwgdGhlcmVieSBtYWtpbmcgc3RlcHMgbG9vayBhY3RpdmUgdGhhdCBhcmUgbm90ICovXG4ubm8tdG91Y2ggLm9wYyAuc2VjdGlvbi5hbGxvdzpub3QoLmFjdGl2ZSkgLnN0ZXAtdGl0bGU6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xufVxuXG4ub3BjIC5zZWN0aW9uLmFjdGl2ZSAuc3RlcC10aXRsZSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLWRpdmlkZXItYm9yZGVyO1xufVxuXG4ub3BjIC5zZWN0aW9uIC5zdGVwLXRpdGxlIGEge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5vcGMgLnNlY3Rpb24uYWxsb3c6bm90KC5hY3RpdmUpIC5zdGVwLXRpdGxlIGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZzogMHB4IDEwcHg7XG59XG5cbi5uby10b3VjaCAub3BjIC5zZWN0aW9uIC5zdGVwLXRpdGxlIGE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLm9wYyAuc2VjdGlvbiAuc3RlcC10aXRsZSAubnVtYmVyLFxuLm9wYyAuc2VjdGlvbi5hbGxvdy5hY3RpdmUgLnN0ZXAtdGl0bGUgLm51bWJlcixcbi5uby10b3VjaCAub3BjIC5zZWN0aW9uLmFsbG93OmhvdmVyIC5zdGVwLXRpdGxlIC5udW1iZXIge1xuICAgIHdpZHRoOiAyNnB4O1xuICAgIGhlaWdodDogMjZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICNGRkZGRkY7XG4gICAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGMtYWN0aW9uO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAxMHB4O1xuICAgIG1hcmdpbi10b3A6IC0xM3B4O1xufVxuXG4ub3BjIC5zZWN0aW9uLmFsbG93IC5zdGVwLXRpdGxlIC5udW1iZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRpbnQoJGMtYWN0aW9uLCA1MCUpO1xufVxuXG4ub3BjIC5zZWN0aW9uLmFsbG93IC5zdGVwLXRpdGxlIGgyIHtcbiAgICBjb2xvcjogJGMtdGV4dC1ncmF5O1xufVxuXG4ub3BjIC5zZWN0aW9uLmFsbG93IC5zdGVwLXRpdGxlOmhvdmVyIGgyLFxuLm9wYyAuc2VjdGlvbi5hY3RpdmUgLnN0ZXAtdGl0bGUgaDIge1xuICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG59XG5cbi5vcGMgLnNlY3Rpb24gLnN0ZXAtdGl0bGUgaDIge1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW46IDBweCA0cHggMHB4IDQ1cHg7XG59XG5cbi5vcGMgLnNlY3Rpb24gLnN0ZXAge1xuICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZy1sYXJnZTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgfVxufVxuXG4ub3BjIHNlbGVjdCB7XG4gICAgbWF4LXdpZHRoOiAzNjVweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLm9wYyBoMyB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm9wYyAuYnV0dG9ucy1zZXQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICBidXR0b24uYnV0dG9uIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRnYXA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIHAucmVxdWlyZWQge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIC5iYWNrLWxpbmsge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDVweCA1cHggNXB4IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAub3BjLFxuICAgIC5wYXlwYWwtZXhwcmVzcy1yZXZpZXcge1xuICAgICAgICAuYnV0dG9ucy1zZXQgLmJ1dHRvbiArIC5idXR0b25zLXNldCAuYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3BjICNvcGMtbG9naW4ge1xuICAgIC5zdGVwIHtcbiAgICAgICAgcGFkZGluZzogMHB4O1xuICAgIH1cblxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAub3BjICNvcGMtbG9naW4gLmRlc2NyaXB0aW9uLFxuICAgIC5vcGMgI29wYy1sb2dpbiBwLnJlcXVpcmVkIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbiNvcGMtcGF5bWVudCAubm90ZSB7XG4gICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiBUaGlzIHNlY3Rpb24gaGlkZXMgZXZlcnl0aGluZyBidXQgdGhlIFwiQ2hlY2tvdXQgTWV0aG9kXCIgc3RlcCBvZiB0aGUgY2hlY2tvdXQgcHJvY2VzcyBhbmQgZmFkZXMgaW4gdGhlIGNvbnRlbnRcbiAqIG9uY2UgdGhlIGN1c3RvbWVyIHByb2dyZXNzZXMgdG8gdGhlIG5leHQgc3RlcC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBzaW1wbGlmeSB3aGF0IHRoZSBjdXN0b21lciBoYXMgdG8gZm9jdXMgb24uXG4gKiBJdCBpcyBsaW1pdGVkIHRvIGxhcmdlciB2aWV3cG9ydHMgc2luY2Ugc21hbGxlciBkZXZpY2VzIGFyZSBpbmhlcmVudGx5IGdvaW5nIHRvIGJlIGZvY3VzZWQgc29sZWx5IG9uIHRoZVxuICogXCJDaGVja291dCBNZXRob2RcIiBzdGVwLlxuICovXG5cbi5vcGMub3BjLWZpcnN0c3RlcC1sb2dpbiAuc2VjdGlvbjpub3QoI29wYy1sb2dpbikgLnN0ZXAtdGl0bGUsXG4ub3BjLWJsb2NrLXByb2dyZXNzLXN0ZXAtbG9naW4ge1xuICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHksIDMwMG1zKTtcbn1cblxuLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uI29wYy1sb2dpbiAuc3RlcC10aXRsZSAubnVtYmVyIHtcbiAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbih3aWR0aCwgODBtcyk7XG59XG5cbi5vcGMub3BjLWZpcnN0c3RlcC1sb2dpbiAuc2VjdGlvbiNvcGMtbG9naW4gLnN0ZXAtdGl0bGUgaDIge1xuICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG1hcmdpbi1sZWZ0LCA4MG1zKTtcbn1cblxuLyogV2hlbiBhIHVzZXIgcHJvZ3Jlc3NlcyBmcm9tIHRoZSBcIkNoZWNrb3V0IE1ldGhvZFwiIHRvIFwiQmlsbGluZyBJbmZvcm1hdGlvblwiIGZvciB0aGUgZmlyc3QgdGltZSwgdGhlICAgICAgICAgICAgICAqL1xuLyogXCJvcGMtaGFzLXByb2dyZXNzZWQtZnJvbS1sb2dpblwiIGNsYXNzIGdldHMgYWRkZWQgdG8gdGhlIGJvZHkuIEFsc28sIHRoZSAub3BjIGVsZW1lbnQgd2lsbCBvbmx5IGhhdmUgdGhlICAgICAgICAgKi9cbi8qIFwib3BjLWZpcnN0c3RlcC1sb2dpblwiIGNsYXNzIGlmIHRoZSBmaXJzdCBzdGVwIG9mIHRoZSBjaGVja291dCBpcyB0aGUgXCJDaGVja291dCBNZXRob2RcIiAoZWcsIG5vdCB3aGVuIGxvZ2dlZCBpbikgKi9cbmJvZHk6bm90KC5vcGMtaGFzLXByb2dyZXNzZWQtZnJvbS1sb2dpbikgLm9wYy5vcGMtZmlyc3RzdGVwLWxvZ2luIC5zZWN0aW9uOm5vdCgjb3BjLWxvZ2luKSAuc3RlcC10aXRsZSxcbmJvZHk6bm90KC5vcGMtaGFzLXByb2dyZXNzZWQtZnJvbS1sb2dpbikgLm9wYy1ibG9jay1wcm9ncmVzcy1zdGVwLWxvZ2luIHtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG5ib2R5Om5vdCgub3BjLWhhcy1wcm9ncmVzc2VkLWZyb20tbG9naW4pIC5vcGMub3BjLWZpcnN0c3RlcC1sb2dpbiAuc2VjdGlvbiNvcGMtbG9naW4gLnN0ZXAtdGl0bGUgLm51bWJlciB7XG4gICAgd2lkdGg6IDBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5Om5vdCgub3BjLWhhcy1wcm9ncmVzc2VkLWZyb20tbG9naW4pIC5vcGMub3BjLWZpcnN0c3RlcC1sb2dpbiAuc2VjdGlvbiNvcGMtbG9naW4gLnN0ZXAtdGl0bGUgaDIge1xuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIFNoaXBwaW5nIGFuZCBQYXltZW50IG1ldGhvZHNcbiAqL1xuXG4uc3AtbWV0aG9kcyB7XG4gICAgbWFyZ2luOiAwIDAgOHB4O1xuXG4gICAgZHQge1xuICAgICAgICBtYXJnaW46IDEzcHggMCA1cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luOiAwIDAgNXB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIGRkIGxpIHtcbiAgICAgICAgbWFyZ2luOiA1cHggMDtcbiAgICB9XG4gICAgbGFiZWwgaW1nIHsgLy8gVGhpcyBhcHBsaWVzIHRvIHRoZSBQYXlwYWwgRXhwcmVzcyBsYWJlbFxuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG4gICAgbGFiZWwgYSB7IC8vIFRoaXMgYXBwbGllcyB0byB0aGUgUGF5cGFsIEV4cHJlc3MgbGFiZWxcbiAgICAgICAgbWFyZ2luLXRvcDogNnB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIH1cbiAgICAucHJpY2Uge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gICAgLmZvcm0tbGlzdCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA4cHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2VsZWN0Lm1vbnRoIHtcbiAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuICAgIHNlbGVjdC55ZWFyIHtcbiAgICAgICAgd2lkdGg6IDk2cHg7XG4gICAgfVxuICAgIGlucHV0LmN2diB7XG4gICAgICAgIHdpZHRoOiA0ZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgI2FkdmljZS12YWxpZGF0ZS1jYy1leHAtY2NzYXZlX2V4cGlyYXRpb24ge1xuICAgICAgICBtYXgtd2lkdGg6IDEzMHB4O1xuICAgIH1cblxuICAgIC5jaGVja21vLWxpc3Qge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICB3aWR0aDogMTY1cHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgICAgICBhZGRyZXNzIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTM1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVsZWFzZS1hbW91bnRzIHtcbiAgICAgICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgIH1cbiAgICAucmVsZWFzZS1hbW91bnRzIGJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDVweCAxMHB4IDAgMDtcbiAgICB9XG59XG5cbi8qIE9uZSBQYWdlIENoZWNrb3V0ICovXG4uYmxvY2stcHJvZ3Jlc3Mge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcblxuICAgIC5ibG9jay1jb250ZW50IHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgfVxuICAgIGR0IHtcbiAgICAgICAgcGFkZGluZy10b3A6IDZweDtcbiAgICAgICAgQGluY2x1ZGUgaDQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbiAgICB9XG5cbiAgICBkdC5jb21wbGV0ZSB7XG4gICAgICAgIGNvbG9yOiAkYy1oNDtcbiAgICB9XG4gICAgZGQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuXG4gICAgICAgIGFkZHJlc3Mge1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgI3BheW1lbnQtcHJvZ3Jlc3Mtb3BjaGVja291dCAuc3VidGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtaW5mbyB7XG5cbiAgICAgICAgZHQge1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDNweCAwO1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJzogJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXM7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbi8qIHJldmlldyBzdGVwICovXG4jY2hlY2tvdXQtcmV2aWV3LXRhYmxlIHtcbiAgICAuYnRuLXJlbW92ZSB7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jY2hlY2tvdXQtcmV2aWV3LXRhYmxlLXdyYXBwZXIge1xuICAgIGNsZWFyOiBib3RoOyAvLyBGaXggdGFibGUgY2xlYXJpbmcgaXNzdWUgaW4gRmlyZWZveFxufVxuXG4jcmV2aWV3LWJ1dHRvbnMtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG5cbiAgICAuYnRuLWNoZWNrb3V0IHtcbiAgICAgICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICB9XG4gICAgLnBsZWFzZS13YWl0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICB9XG4gICAgLmYtbGVmdCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG59XG5cbi8vIEhpZGUgYWxsIGJ1dCB0aGUgZmlyc3QgdHIgaW5zaWRlIG9mIHRoZWFkXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5saW5lYXJpemUtdGFibGUtbGFyZ2UuY2hlY2tvdXQtcmV2aWV3LXRhYmxlIHRoZWFkIHRyOm50aC1jaGlsZCgxbisyKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBIaWRlIGFsbCBidXQgdGhlIGZpcnN0IHRyIGluc2lkZSBvZiB0aGVhZFxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgLmxpbmVhcml6ZS10YWJsZS5jaGVja291dC1yZXZpZXctdGFibGUgdGhlYWQgdHI6bnRoLWNoaWxkKDFuKzIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8qIHNob3cvaGlkZSBcImNoYW5nZVwiIGxpbmsgZm9yIHByb2dyZXNzIHN0ZXAgZGVwZW5kIG9uIGNvbXBsZXRlIHN0YXR1c1xuICogc2hvdWxkIGJlIHBsYWNlZCBpbiAuY3NzIGZpbGUgKi9cbi5vcGMtYmxvY2stcHJvZ3Jlc3MgZHQuY29tcGxldGUgYSxcbi5vcGMtYmxvY2stcHJvZ3Jlc3MgZHQuY29tcGxldGUgLnNlcGFyYXRvciB7XG4gICAgZGlzcGxheTogaW5saW5lO1xufVxuXG4ub3BjLWJsb2NrLXByb2dyZXNzIGR0IGEsXG4ub3BjLWJsb2NrLXByb2dyZXNzIGR0IC5zZXBhcmF0b3Ige1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIE9uIHNtYWxsIHNjcmVlbnMsIHRoZSBwcm9ncmVzcyByZXZpZXcgY29udGVudCB3aWxsIGJlIG1vdmVkIHRvIHRoZSByZXZpZXcgc3RlcCB2aWEgSlMuIFN0eWxlZCB2aWEgdGhpcyBDU1M6ICovXG4jY2hlY2tvdXQtc3RlcC1yZXZpZXcgLm9wYy1ibG9jay1wcm9ncmVzcyB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gICAgLmJsb2NrLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLmJsb2NrLWNvbnRlbnQge1xuICAgICAgICAvLyBPdmVycmlkZSB0aGUgbm8tZGlzcGxheVxuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICYgPiBkbCA+IGRpdiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgICYgPiBkbCA+IGRpdiB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY2hhbmdlbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAjY2hlY2tvdXQtcmV2aWV3LXRhYmxlIHRoZWFkID4gdHIgPiB0aCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAjY2hlY2tvdXQtcmV2aWV3LXRhYmxlIHRoZWFkID4gdHIgPiB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuI2NoZWNrb3V0LXN0ZXAtcmV2aWV3IC5jZW50aW5lbCB7XG4gICAgJj4gcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib3gtc3BhY2luZztcbiAgICB9XG5cbiAgICBpZnJhbWUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogNDAwcHg7XG4gICAgfVxufVxuXG4vKiBHaWZ0IG9wdGlvbnMgKi9cbi5naWZ0LW1lc3NhZ2VzLWZvcm0ge1xuICAgIC5pdGVtIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIG1hcmdpbi10b3A6ICR0cmltO1xuXG4gICAgICAgIGg1IHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXRhaWxzIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZ2lmdC1tZXNzYWdlLWZvcm0ge1xuICAgIC5pbm5lci1ib3gge1xuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAgICAgJi5leHRyYS1vcHRpb25zLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5naWZ0LXdyYXBwaW5nLWZvcm0ge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5naWZ0LXdyYXBwaW5nLWRlc2lnbiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDc1cHg7XG5cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaW1hZ2UtYm94IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5naWZ0LWl0ZW0ge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJGdhcDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICRjLWRpdmlkZXItYm9yZGVyO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcblxuICAgICAgICAgICAgLnByb2R1Y3QtaW1hZ2Uge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA3NXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZmllbGRzZXQge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIwMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicCgnbWF4LXdpZHRoJywgJGJwLW1lZGl1bSkge1xuICAgIC5naWZ0LW1lc3NhZ2UtZm9ybSB7XG5cbiAgICAgICAgLmdpZnRtZXNzYWdlLWFyZWF7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZ2lmdC1pdGVtIHtcbiAgICAgICAgICAgIC5wcm9kdWN0LWltZy1ib3gge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZmllbGRzZXQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG5cbiAgICAgICAgICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2hlY2tvdXQgLSBTdWNjZXNzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2hlY2tvdXQtb25lcGFnZS1zdWNjZXNzIHtcbiAgICAuY29sLW1haW4ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWFyZ2luOiAkZ2FwIDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENvbmZpZ3VyYWJsZSBTd2F0Y2hlc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ2xlYXJzICovXG4uY2xlYXJmaXgsXG4uY29uZmlndXJhYmxlLXN3YXRjaC1saXN0LFxuLnByb2R1Y3QtdmlldyAucHJvZHVjdC1vcHRpb25zIC5zd2F0Y2gtYXR0ciB7XG4gICAgJjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cblxuLyogR2VuZXJhbCBTd2F0Y2ggU3R5bGluZyAqL1xuLnN3YXRjaC1saW5rLFxuLnN3YXRjaC1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAtIDI7XG4gICAgZm9udC1zaXplOiAkZi1zaXplO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJGMtaDQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4uc3dhdGNoLWxpbmsge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgbWFyZ2luOiAwIDAgM3B4O1xuXG4gICAgaW1nIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAtIDM7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC54IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgdGV4dC1pbmRlbnQ6IC05OTllbTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYmdfeC5wbmcpIGNlbnRlciBuby1yZXBlYXQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHotaW5kZXg6IDEwO1xuICAgIH1cblxuICAgICYuaGFzLWltYWdlIHtcbiAgICAgICAgLnN3YXRjaC1sYWJlbCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnN3YXRjaC1sYWJlbCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjtcbiAgICBtYXJnaW46IDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbn1cblxuLmNvbmZpZ3VyYWJsZS1zd2F0Y2gtbGlzdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0zcHg7XG4gICAgem9vbTogMTtcbiAgICBjbGVhcjogYm90aDtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpO1xuXG4gICAgbGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgem9vbTogMTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMCAzcHg7XG4gICAgfVxuXG4gICAgLnByb2R1Y3RzLWdyaWQgJiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICB9XG5cbiAgICAubm90LWF2YWlsYWJsZSB7XG4gICAgICAgIC54IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN3YXRjaC1saW5rIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJi5oYXMtaW1hZ2UgaW1nIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zd2F0Y2gtbGFiZWwge1xuICAgICAgICAgICAgY29sb3I6ICNhYWE7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLndpZGUtc3dhdGNoIC5zd2F0Y2gtbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAwIDZweDtcbiAgICB9XG5cbiAgICAubm90LWF2YWlsYWJsZSBhOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMDtcbiAgICB9XG59XG5cbiNuYXJyb3ctYnktbGlzdCBkZCB7XG4gICAgLmNvbmZpZ3VyYWJsZS1zd2F0Y2gtbGlzdCBsaSB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgM3B4O1xuICAgICAgICB3aWR0aDogNDclO1xuICAgIH1cblxuICAgIC5zd2F0Y2gtbGluayB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmLXNpemUgKyAxMXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAmLmhhcy1pbWFnZSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIgLnN3YXRjaC1sYWJlbCB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXItaGlnaGxpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN3YXRjaC1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzIC0gMjtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgICAgIG1hcmdpbjogMCA1cHggMCAwO1xuICAgICAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cyAtIDJweDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmhhcy1pbWFnZSAuc3dhdGNoLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC8vIFByZXZlbnQgb2RkIHdyYXBwaW5nIGlzc3VlIHdoZW4gc3dhdGNoZXMgaGF2ZSBib3RoIHRleHQgYW5kIGltYWdlc1xuICAgICNuYXJyb3ctYnktbGlzdCBkZCAuY29uZmlndXJhYmxlLXN3YXRjaC1saXN0IGxpOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgfVxufVxuXG4uY3VycmVudGx5IHtcbiAgICAuc3dhdGNoLWN1cnJlbnQge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgLmJ0bi1yZW1vdmUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN3YXRjaC1saW5rIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgMCAwIDNweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogT3RoZXIgU3dhdGNoIFN0YXRlcyAqL1xuLmNvbmZpZ3VyYWJsZS1zd2F0Y2gtbGlzdCAuaG92ZXIgLnN3YXRjaC1saW5rLFxuLmNvbmZpZ3VyYWJsZS1zd2F0Y2gtbGlzdCAuc2VsZWN0ZWQgLnN3YXRjaC1saW5rLFxuLnN3YXRjaC1saW5rOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICRjLW1vZHVsZS1ib3JkZXItaGlnaGxpZ2h0O1xufVxuXG4uY29uZmlndXJhYmxlLXN3YXRjaC1ib3gge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcblxuICAgIHNlbGVjdC5zd2F0Y2gtc2VsZWN0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAudmFsaWRhdGlvbi1hZHZpY2Uge1xuICAgICAgICBtYXJnaW46IDAgMCA1cHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWRhbmdlcjtcbiAgICAgICAgcGFkZGluZzogMnB4IDVweCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzIC0gMjtcbiAgICB9XG59XG5cbi8qIENVU1RPTSAqL1xuLmF2YWlsYWJpbGl0eS5vdXQtb2Ytc3RvY2sgc3BhbiB7XG4gICAgY29sb3I6ICRjLXRleHQtZ3JheTtcbn1cblxuLnByb2R1Y3QtdmlldyB7XG4gICAgLnByb2R1Y3Qtb3B0aW9ucyB7XG4gICAgICAgIC5zd2F0Y2gtYXR0ciB7XG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG5cbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgLnNlbGVjdC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNlbGVjdC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjLXRleHQtcHJpbWFyeTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRkIC5pbnB1dC1ib3gge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuc2VsZWN0LWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYWRkLXRvLWNhcnQgYnV0dG9uLm91dC1vZi1zdG9jayB7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0zNjJweDtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ3VzdG9tZXJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jdXN0b21lci1hY2NvdW50LWxvZ2luIHtcbiAgICAuc2NhZmZvbGQtZm9ybSB7XG4gICAgICAgIGxhYmVsOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMTVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2wyLXNldCB7XG4gICAgICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcblxuICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiA1MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbC0xIHtcbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICRnYXAgMCAkZ2FwICogMiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAteHNtYWxsICsgMSkge1xuICAgICAgICAuY29sMi1zZXQge1xuICAgICAgICAgICAgLmNvbC0xLFxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgICAgICAuY29sMi1zZXQge1xuICAgICAgICAgICAgLmNvbC0xIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHRyaW0gKiAyO1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAuY29sMi1zZXQge1xuICAgICAgICAgICAgLmNvbC0xIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHRyaW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6ICR0cmltO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgICAgIC5jb2wyLXNldCBwLnJlcXVpcmVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jdXN0b21lci1hY2NvdW50LWNyZWF0ZSB7XG4gICAgLnNjYWZmb2xkLWZvcm0ge1xuICAgICAgICBsYWJlbDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICB3aWR0aDogMTQwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5vcGMgI29wYy1sb2dpbiBwOm5vdCgucmVxdWlyZWQpIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgIGNvbG9yOiAkYy10ZXh0LWdyYXk7XG59XG5cbi5yZW1lbWJlci1tZS1ib3gge1xuICAgIGEuaGlkZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5saW5rLXRpcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRnYXA7XG4gICAgfVxufVxuXG4ucmVtZW1iZXItbWUtcG9wdXAge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJi5zaG93IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1kZWZhdWx0O1xuICAgIH1cblxuICAgIC5yZW1lbWJlci1tZS1wb3B1cC1jbG9zZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgfVxuXG4gICAgLnJlbWVtYmVyLW1lLXBvcHVwLWNsb3NlLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uY3VzdG9tZXItYWNjb3VudC1jcmVhdGUge1xuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIG1heC13aWR0aDogNDU1cHg7XG4gICAgfVxuXG4gICAgLmZpZWxkc2V0LFxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkdHJpbTtcblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZpZWxkc2V0IC5oaWRkZW4ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICNyZW1lbWJlci1tZS1wb3B1cCB7XG4gICAgICAgIG1heC13aWR0aDogNDU1cHg7XG4gICAgfVxufVxuXG4uY3VzdG9tZXItYWNjb3VudC1mb3Jnb3RwYXNzd29yZCB7XG4gICAgLmZpZWxkc2V0LFxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkdHJpbTtcbiAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZpZWxkc2V0IC5pbnB1dC1ib3ggaW5wdXQuaW5wdXQtdGV4dCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogTXkgQWNjb3VudCBHbG9iYWwgU3R5bGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuYm9keS5jdXN0b21lci1hY2NvdW50IHtcbiAgICAubXktYWNjb3VudCB7XG4gICAgICAgIC5wYWdlLXRpdGxlIHtcbiAgICAgICAgICAgIGgxIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC50aXRsZS1idXR0b25zIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYSxcbiAgICAgICAgICAgIHNwYW4uc2VwYXJhdG9yIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgdG9wOiAtNDJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5maWVsZHNldCBoMixcbiAgICAgICAgLmFkZHJlc3Nlcy1saXN0IGgyLFxuICAgICAgICAub3JkZXItZGV0YWlscyBoMiB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIC5hZGRyZXNzZXMtbGlzdCBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZpZWxkc2V0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6ICR0cmltO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNwYW4ubm9iciB7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQudmlldyB7XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5zZXBhcmF0b3Ige1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zaWRlYmFyIHtcbiAgICAgICAgLmJsb2NrIHtcbiAgICAgICAgICAgIG9sI2NvbXBhcmUtaXRlbXMge1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAkYm94LXNwYWNpbmcgMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5ibG9jay1jb250ZW50IHtcbiAgICAgICAgICAgICAgICBwLmJsb2NrLXN1YnRpdGxlIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmFjdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkdHJpbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvbCNjYXJ0LXNpZGViYXItcmVvcmRlciB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jay1jYXJ0IHtcbiAgICAgICAgICAgIC5zdW1tYXJ5IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5ibG9jay1yZW9yZGVyIHtcbiAgICAgICAgICAgIG9sI2NhcnQtc2lkZWJhci1yZW9yZGVyIHtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwLnByb2R1Y3QtbmFtZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5mb3JtLWxpc3Qge1xuICAgIC5jdXN0b21lci1kb2Ige1xuICAgICAgICAuZG9iLW1vbnRoLFxuICAgICAgICAuZG9iLWRheSB7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgIH1cblxuICAgICAgICAuZG9iLXllYXIge1xuICAgICAgICAgICAgd2lkdGg6IDgwcHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogRGFzaGJvYXJkXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZGFzaGJvYXJkIHtcbiAgICAuYm94LWhlYWQge1xuICAgICAgICBtYXJnaW4tdG9wOiAkdHJpbTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA3cHg7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJveC10aXRsZSxcbiAgICAuYm94LWhlYWQge1xuICAgICAgICBhIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYm94LWFjY291bnQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQ1cHg7XG5cbiAgICAgICAgcCxcbiAgICAgICAgYWRkcmVzcyB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sMi1zZXQge1xuICAgICAgICAuY29sLTEsXG4gICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBwZXJjZW50YWdlKDc1LzYyMCk7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgLmJveC10aXRsZSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuXG4gICAgICAgICAgICAgICAgaDIsXG4gICAgICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAoMS40ICogJGYtc2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJveC1yZXZpZXdzIHtcbiAgICAgICAgJi5ib3gtYWNjb3VudCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZyAwO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG5cbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5udW1iZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTIwcHg7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmRldGFpbHMge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuXG4gICAgICAgICAgICAgICAgLnJhdGluZ3Mge1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAucmF0aW5nLWJveCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogM3B4IDAgMCAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBBZGRyZXNzIEJvb2tcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5teS1hY2NvdW50IHtcbiAgICAuYWRkcmVzc2VzLWxpc3Qge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG5cbiAgICAgICAgLmNvbC0xLFxuICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuaXRlbSB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAkdHJpbSAwO1xuXG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAkYm94LXNwYWNpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgICAgIC5jb2wtMSxcbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG5cbiAgICAgICAgICAgICAgICBsaS5lbXB0eSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgICAgICAgICAuYWRkcmVzc2VzLWFkZGl0aW9uYWwge1xuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIE9yZGVyIFZpZXdcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vcmRlci1pbmZvIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGJveC1zcGFjaW5nO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyLWxpZ2h0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206ICR0cmltO1xuXG4gICAgZHQsXG4gICAgZGQsXG4gICAgdWwsXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxuXG4gICAgZHQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICgkYm94LXNwYWNpbmcqMik7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBtYXJnaW46IDAgMCAwICgkYm94LXNwYWNpbmcqMik7XG5cbiAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3JkZXItZGF0ZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLm9yZGVyLWluZm8tYm94IHtcbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgIG1hcmdpbi10b3A6IDIwcHg7XG5cbiAgICArIC5vcmRlci1pbmZvLWJveCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0MHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICB9XG5cbiAgICAuY29sLTEge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogNDglO1xuICAgIH1cblxuICAgIC5jb2wtMiB7XG4gICAgICAgIHdpZHRoOiA1MiU7XG4gICAgfVxuXG4gICAgLmNvbC0xLFxuICAgIC5jb2wtMiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuYm94LXRpdGxlIHtcbiAgICAgICAgd2lkdGg6IDE1MHB4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnOic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYm94LWNvbnRlbnQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNlcmlmO1xuXG4gICAgICAgIHRkLFxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICRib3gtc3BhY2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHRyaW0tc21hbGw7XG4gICAgICAgIH1cblxuICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuI215LW9yZGVycy10YWJsZSB7XG4gICAgLm9wdGlvbi1sYWJlbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkYm94LXNwYWNpbmc7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG5cbiAgICAub3B0aW9uLXZhbHVlIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRib3gtc3BhY2luZyAqIDI7XG4gICAgfVxuXG4gICAgdHIuYnVuZGxlOm5vdCg6bGFzdC1jaGlsZCkgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgIH1cbn1cblxub2wjY2FydC1zaWRlYmFyLXJlb3JkZXIge1xuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAjbXktb3JkZXJzLXRhYmxlIHtcbiAgICAgICAgLm9wdGlvbi1sYWJlbCB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5vcHRpb24tdmFsdWUge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDM1cHg7XG4gICAgICAgIH1cblxuICAgICAgICB0ZFtkYXRhLXJ3ZC1sYWJlbD1RdHldIC5ub2JyIHtcbiAgICAgICAgICAgIGJyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHIuYnVuZGxlIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyLmJ1bmRsZS5jaGlsZCB7XG4gICAgICAgICAgICB0ZFtkYXRhLXJ3ZC1sYWJlbF0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5Omxhc3QtY2hpbGQgdHI6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0Zm9vdCB0ci5zaGlwcGluZyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3JkZXItYWRkaXRpb25hbCB7XG4gICAgbWFyZ2luOiA0MHB4IDA7XG59XG5cbi5vcmRlci1naWZ0LW1lc3NhZ2Uge1xuICAgIGRkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteGxhcmdlKSB7XG4gICAgLmRhc2hib2FyZCB7XG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEsXG4gICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICR0cmltO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYm9keS5jdXN0b21lci1hY2NvdW50IHtcbiAgICAgICAgLmRhdGEtdGFibGUge1xuICAgICAgICAgICAgdGQudmlldyBhIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIGJvZHkuY3VzdG9tZXItYWNjb3VudCB7XG4gICAgICAgIC5teS1hY2NvdW50IHtcbiAgICAgICAgICAgIC50aXRsZS1idXR0b25zIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgc3Bhbi5zZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogLTEycHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICBib2R5LmN1c3RvbWVyLWFjY291bnQge1xuICAgICAgICAuZGF0YS10YWJsZSB7XG4gICAgICAgICAgICAmLm9yZGVycyB7XG4gICAgICAgICAgICAgICAgdGguc2hpcCxcbiAgICAgICAgICAgICAgICB0ZC5zaGlwLFxuICAgICAgICAgICAgICAgIHRkLnN0YXR1cyxcbiAgICAgICAgICAgICAgICB0aC5zdGF0dXMge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5vcmRlci1pbmZvLWJveCB7XG4gICAgICAgIC5ib3gtY29udGVudCB7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZGRyZXNzZXMtbGlzdCB7XG4gICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICR0cmltO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm9yZGVyLWluZm8ge1xuICAgICAgICBkdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhc2hib2FyZCB7XG4gICAgICAgIC5wYWdlLXRpdGxlIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG5cbiAgICAgICAgICAgIGgxIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLndlbGNvbWUtbXNnIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zZXJpZjtcblxuICAgICAgICAgICAgLmhlbGxvIHtcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYm94LWFjY291bnQge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG4gICAgICAgIH1cblxuICAgICAgICAuY29sMi1zZXQge1xuICAgICAgICAgICAgLmNvbC0xLFxuICAgICAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sLTEge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNCU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2wtMiB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIGJvZHkuY3VzdG9tZXItYWNjb3VudCB7XG4gICAgICAgIC5teS1hY2NvdW50IHtcbiAgICAgICAgICAgIC5mb3JtLWxpc3Qge1xuICAgICAgICAgICAgICAgIC5jb250cm9sIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgYm9keS5jdXN0b21lci1hY2NvdW50IHtcbiAgICAgICAgLm15LWFjY291bnQge1xuICAgICAgICAgICAgLnBhZ2UtdGl0bGUge1xuICAgICAgICAgICAgICAgIGgxIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnRpdGxlLWJ1dHRvbnMge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAgICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG5cbiAgICAgICAgICAgICAgICAgICAgKyAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5maWVsZHNldCB7XG4gICAgICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5vcmRlci1kZXRhaWxzIGgyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkdHJpbS1zbWFsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYWRkcmVzc2VzLWxpc3Qge1xuICAgICAgICAgICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW0tc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5vcmRlci1pbmZvIHtcbiAgICAgICAgbWFyZ2luLXRvcDogJHRyaW0tc21hbGw7XG4gICAgfVxuXG4gICAgLmRhdGEtdGFibGUge1xuICAgICAgICAmLm9yZGVycyB7XG4gICAgICAgICAgICAubGluay1yZW9yZGVyLFxuICAgICAgICAgICAgLmRhdGUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRkLnZpZXcge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRhc2hib2FyZCB7XG4gICAgICAgIC5jb2wyLXNldCB7XG4gICAgICAgICAgICAuY29sLTEsXG4gICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm9yZGVyLWluZm8tYm94IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIC5jb2wtMSxcbiAgICAgICAgLmNvbC0yIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAkdHJpbS1zbWFsbCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgKyAub3JkZXItaW5mby1ib3gge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJHRyaW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbXktcmV2aWV3cy10YWJsZSB7XG4gICAgICAgIC5ub2JyIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIE5ld3NsZXR0ZXIgU3Vic2NyaXB0aW9uc1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuYm9keS5uZXdzbGV0dGVyLW1hbmFnZS1pbmRleCAubXktYWNjb3VudCB7XG4gICAgLmZpZWxkc2V0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICB9XG5cbiAgICAuZmllbGRzZXQgaDIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5mb3JtLWxpc3Qge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtZmllbGRzZXQtYm9yZGVyLWxpZ2h0O1xuICAgICAgICBwYWRkaW5nLXRvcDogJGdhcDtcbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENvbnRhY3RzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY29udGFjdHMtaW5kZXgtaW5kZXgge1xuICAgIC5jb2wtbWFpbiB7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5sZWZ0LWZvcm0ge1xuICAgICAgICAucGFnZS10aXRsZSB7XG4gICAgICAgICAgICBoMSB7XG4gICAgICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzOyBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLXRleHQtZ3JheTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLnJpZ2h0LWZvcm0ge1xuICAgICAgICBoMSB7XG4gICAgICAgICAgICBjb2xvcjogJGMteWVsbG93LWVubmlzO1xuICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLm1hcC1jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMmVtO1xuICAgICAgICB9XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ1MHB4KSB7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNjb250YWN0Rm9ybSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogODBweDtcbiAgICAgICAgLmlucHV0LWJveCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB3aWR0aDogMzUlO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgICAgIGVtIHtcbiAgICAgICAgICAgICAgIGNvbG9yOiAkYy1yZWQtZW5uaXM7IFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5idXR0b25zLXNldCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkdHJpbTtcbiAgICAgICAgbWF4LXdpZHRoOiA0MzVweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgcC5yZXF1aXJlZCB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDMzMHB4O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcC5yZXF1aXJlZCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICB9XG4gICAgfVxufVxuXG4gQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAgICAuY29udGFjdHMtaW5kZXgtaW5kZXgge1xuICAgICAgICAgICAgICAgICNjb250YWN0Rm9ybSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiB9XG4iLCIuZmluZC1hLXJlcC12aWV3IHtcblx0bWFyZ2luOiAxZW07XG5cdHBhZGRpbmctYm90dG9tOiAyZW07XG5cdC5icmVhZGNydW1icyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRib3JkZXItYm90dG9tOiAwO1xuXHR9XG5cdC5idXR0b24ge1xuXHRcdG1hcmdpbjogMCAuNWVtIC41ZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTVweDtcblx0fVxuXHQuZm9ybS1ncm91cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4uZmluZC1hLXJlcC10aXRsZSB7XG5cdGJvcmRlci10b3A6IDA7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdG92ZXJmbG93OiBhdXRvO1xuXHRwYWRkaW5nOiAxLjVlbSAwZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMnB4IGRvdHRlZCAjQTBBMEEwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggZG90dGVkICNBMEEwQTA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1x0XG5cdGgxIHtcblx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0XHRjb2xvcjogJGMteWVsbG93LWVubmlzO1xuXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdH1cbiAgICAgICAgLmZvcm0tZ3JvdXAge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4ICM2NDY0NjMgc29saWQ7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIC4yNXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cbiAgICAgICAgYnV0dG9uLmJ0bi13YXJuaW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGI4MTM7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0IHttYXgtd2lkdGg6IDEwMCU7fVxuICAgICAgICB9XG59XG5cbi5jYXJkLWNvbnRhaW5lciB7XG5cdEBpbmNsdWRlIGRpc3BsYXkoZmxleCk7XG5cdEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKGNvbHVtbik7XG5cdEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcblx0QGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtc3RhcnQpO1xufVxuXG4uZW5uaXMtcmVwIHtcblx0bWFyZ2luOiAwIGF1dG8gMWVtO1xuXHRAaW5jbHVkZSBmbGV4KDEpO1xuXHQvKkBpbmNsdWRlIGZsZXgtYmFzaXMoMTAwJSk7Ki9cbiAgICAgICAgaDMge1xuXHRcdGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cdGg0IHtcblx0XHRjb2xvcjogIzE2MTYxNjtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcblx0fVxuXHRtYXJnaW4tYm90dG9tOiAyZW07XG5cdG1heC13aWR0aDogMjQ1cHg7XG59XG5cbi5yZXAtaW1hZ2Uge1xuXHR3aWR0aDogMTAwJTtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4ucmVwLWNvbnRhY3Qge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuXHRwYWRkaW5nOiAxZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcblx0cCB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cdGEge1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHR9XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1zbWFsbCkge1xuXHQuY2FyZC1jb250YWluZXIge1xuXHRcdEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKHJvdyk7XG5cdH1cblx0LmZpbmQtYS1yZXAtdmlldyB7XG5cdFx0LmJ1dHRvbiB7XG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0XHR9XG5cdFx0fVx0XHRcblx0fVxuXHQuZW5uaXMtcmVwIHtcblx0XHRAaW5jbHVkZSBmbGV4KDEpO1xuXHRcdC8qQGluY2x1ZGUgZmxleC1iYXNpcyg1MCUpOyovXG5cdH1cbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtKSB7XG5cdC8vIC5jYXJkLWNvbnRhaW5lciB7XG5cdC8vIFx0QGluY2x1ZGUgZmxleC1kaXJlY3Rpb24ocm93KTtcblx0Ly8gfVx0XG5cdC5lbm5pcy1yZXAge1xuXHRcdC8qQGluY2x1ZGUgZmxleC1iYXNpcygyNSUpOyovXG4gICAgICAgIG1hcmdpbjogMCAyLjglIDFlbSAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgJjpudGgtb2YtdHlwZSg0bikge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICB9XG5cdH1cbn0iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFBheVBhbFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnBheXBhbC1yZXZpZXctb3JkZXIge1xuICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSArIDEwMCkge1xuICAgICAgICBAaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0gKyAxKSB7XG4gICAgICAgICAgICAuY29sMi1zZXQge1xuICAgICAgICAgICAgICAgIC5jb2wtMSxcbiAgICAgICAgICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmluZm8tc2V0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRnYXA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1maWVsZHNldC1ib3JkZXItbGlnaHQ7XG4gICAgfVxuXG4gICAgLmJ1dHRvbnMtc2V0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMHB4O1xuICAgICAgICBib3JkZXI6IDA7XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRnYXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgLmNvbC0xIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZpZWxkLmluYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLnRvcC1jb250YWluZXIgLmJtbC1hZCB7XG4gICAgbWFyZ2luLXRvcDogJGVsZW1lbnQtc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkZWxlbWVudC1zcGFjaW5nO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJtbC1hZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICBhOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgLy8gT3ZlcnJpZGUgaW5saW5lIHN0eWxlXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi8vIFByZXZlbnQgc21hbGwgMnB4IHNwYWNlIG9uIHJpZ2h0IHNpZGUgb2YgaW1hZ2Vcbi5jYXJ0LXRvdGFscy13cmFwcGVyIC5ibWwtYWQubGFyZ2UgaW1nIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDA7XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5ibWwtYWQuc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAuYm1sLWFkLmxhcmdlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG5kaXYucGF5cGFsLWxvZ28ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46ICR0cmltLXNtYWxsIDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuID4gaW1nIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5jaGVja291dC10eXBlcyB7XG4gICAgZGl2LnBheXBhbC1sb2dvIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxufVxuXG4uYm1sLWNoZWNrb3V0LXR5cGUge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbn1cblxuLnNpZGViYXIge1xuICAgIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG5cbiAgICAgICAgPiBhIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFJldmlldyAtIEN1c3RvbWVyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4jY3VzdG9tZXItcmV2aWV3cyB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgZmxvYXQ6IG5vbmU7XG5cbiAgICAucmV2aWV3LWhlYWRpbmcge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgIHBhZGRpbmc6ICRnYXAgMCA1cHg7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICAucGFnZXIge1xuICAgICAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcblxuICAgICAgICAgICAgLmNvdW50LWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgICAgLmxpbWl0ZXIge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmFtb3VudCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGgyIHtcbiAgICAgICAgY29sb3I6ICRjLWJsdWU7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgY29sb3I6ICRjLWJsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZmllbGRzZXQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgd2lkdGg6IDQ3MHB4O1xuXG4gICAgICAgIGg0IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgICAgIGVtIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tbGlzdCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICBtYXJnaW46ICRnYXAgMDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICB3aWR0aDogNDcwcHg7XG5cbiAgICAgICAgICAgIC5pbmxpbmUtbGFiZWwge1xuICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAuaW5wdXQtYm94IHtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgICAgICAgICAgICZbdHlwZT1cInRleHRcIl0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgd2lkdGg6IDQ3MHB4O1xuICAgIH1cblxuICAgIGRsIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcblxuICAgICAgICBkdCB7XG4gICAgICAgICAgICBtYXJnaW46ICRnYXAgMDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBkZCB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgICAgICAgICBtYXJnaW46ICRnYXAgMDtcblxuICAgICAgICAgICAgLnJhdGluZ3MtdGFibGUge1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5yZXZpZXctbGFiZWwge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNzAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGFibGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMTVweCAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucmV2aWV3LW1ldGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy1ibHVlO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5yZXZpZXctc3VtbWFyeS10YWJsZSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgbWFyZ2luOiAwIDAgJGdhcDtcblxuICAgIHRoZWFkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDdweCAxMHB4IDhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRib2R5IHtcbiAgICAgICAgdGgge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRkZGRjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICAgICAgfVxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTFweCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnJhdGluZy1ib3gge1xuICAgICAgICAucmF0aW5nLW51bWJlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggLTU5OXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxM3B4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogJGYtc2l6ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBSYXRpbmdzIC0gR2xvYmFsXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucmF0aW5ncy10YWJsZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICB0aCB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLnJhdGluZy1ib3gge1xuICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjE1cHg7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgICAgICAgaGVpZ2h0OiAxM3B4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcbiAgICAgICAgd2lkdGg6IDY1cHg7XG5cbiAgICAgICAgLnJhdGluZyB7XG4gICAgICAgICAgICBAZXh0ZW5kIC5pY29uLXNwcml0ZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTYwMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IDEzcHg7XG4gICAgICAgICAgICB0ZXh0LWluZGVudDogLTk5OTlweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIGJvZHkucmV2aWV3LXByb2R1Y3QtbGlzdCB7XG4gICAgICAgIC5wcm9kdWN0LXZpZXcge1xuICAgICAgICAgICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgICAgICAgICAgLnByaWNlLWluZm8ge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmV4dHJhLWluZm8ge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDg0JTtcblxuICAgICAgICAgICAgICAgICAgICAucmF0aW5ncy10YWJsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICRnYXAgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA1MzVweCkge1xuICAgIGJvZHkucmV2aWV3LXByb2R1Y3QtbGlzdCB7XG4gICAgICAgIC5wcm9kdWN0LXZpZXcge1xuICAgICAgICAgICAgLnByb2R1Y3Qtc2hvcCB7XG4gICAgICAgICAgICAgICAgLmV4dHJhLWluZm8ge1xuICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgLnJhdGluZ3MtdGFibGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNTIwcHgpIHtcbiAgICAjY3VzdG9tZXItcmV2aWV3cyB7XG4gICAgICAgIC5maWVsZHNldCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgLmZvcm0tbGlzdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAuaW5saW5lLWxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIC5pbnB1dC1ib3gge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnV0dG9ucy1zZXQge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAucmV2aWV3LXN1bW1hcnktdGFibGUge1xuXG4gICAgICAgICAgICB0aGVhZCB7XG4gICAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGJvZHkge1xuICAgICAgICAgICAgICAgIHRoIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDBweDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMCU7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yYXRpbmctYm94IHtcbiAgICAgICAgICAgICAgICB0ZXh0LWluZGVudDogMHB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJGYtc2l6ZSAqIDEuNDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5yYXRpbmcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucmF0aW5nLW51bWJlciB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgNDUwcHgpIHtcbiAgICAjY3VzdG9tZXItcmV2aWV3cyBkbCBkZCAucmF0aW5ncy10YWJsZSB0ciB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUmV2aWV3IFZpZXcgUGFnZVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5yZXZpZXctcHJvZHVjdC12aWV3IHtcbiAgICAucHJvZHVjdC1yZXZpZXcge1xuICAgICAgICAucHJvZHVjdC1kZXRhaWxzIHtcbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAlO1xuXG4gICAgICAgICAgICA+IGEge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvZHVjdC1pbWFnZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKCdtYXgtd2lkdGgnLCAkYnAtbWVkaXVtKSB7XG4gICAgLnJldmlldy1wcm9kdWN0LXZpZXcge1xuICAgICAgICAucHJvZHVjdC1yZXZpZXcge1xuICAgICAgICAgICAgLnByb2R1Y3QtaW1nLWJveCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTbGlkZXNob3dcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zbGlkZXNob3ctY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAkZ2FwIDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcblxuICAgIC5zbGlkZXNob3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCAjRkZGRkZGO1xuICAgICAgICAmID4gbGkge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHNjcmlwdCBkb2VzIG5vdCBsb2FkXG4gICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zbGlkZXNob3ctcGFnZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAxMTU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMHB4O1xuICAgIHRvcDogYXV0bztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIEBpbmNsdWRlIG5vdC1zZWxlY3RhYmxlO1xuXG4gICAgc3BhbiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBhcmlhbDtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBjb2xvcjogI0RERERERDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAkcGFnZXItc2l6ZTogMTZweDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6ICRwYWdlci1zaXplO1xuICAgICAgICAgICAgaGVpZ2h0OiAkcGFnZXItc2l6ZTtcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIHRvcDogNTAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICgtJHBhZ2VyLXNpemUvMik7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAoLSRwYWdlci1zaXplLzIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjLWJ1dHRvbi1ob3ZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY3ljbGUtcGFnZXItYWN0aXZlOmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1idXR0b24tYWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJiA+ICoge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4uc2xpZGVzaG93LXByZXYsXG4uc2xpZGVzaG93LW5leHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDE1JTtcbiAgICBtYXgtd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB6LWluZGV4OiAxMTA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIG5vdC1zZWxlY3RhYmxlKCk7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBtYXJnaW4tdG9wOiAtMTVweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgQGluY2x1ZGUgb3BhY2l0eSgwLjUpO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxufVxuXG4uc2xpZGVzaG93LXByZXYge1xuICAgIGxlZnQ6IDhweDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxNXB4IDE1cHggMTVweCAwO1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICNGRkZGRkYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBsZWZ0OiAxMHB4O1xuICAgIH1cblxuICAgICY6aG92ZXI6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAkYy1idXR0b24taG92ZXIgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4uc2xpZGVzaG93LW5leHQge1xuICAgIHJpZ2h0OiA4cHg7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci13aWR0aDogMTVweCAwIDE1cHggMTVweDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjRkZGRkZGO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgJjpob3ZlcjpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICRjLWJ1dHRvbi1ob3ZlcjtcbiAgICB9XG59XG5cbi5jeWNsZS1jYXB0aW9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvdHRvbTogMTVweDtcbiAgICByaWdodDogMTVweDtcbiAgICB6LWluZGV4OiAxMTA7XG59XG5cbi5jeWNsZS1vdmVybGF5IHtcbiAgICBmb250LWZhbWlseTogdGFob21hLCBhcmlhbDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDEyMDtcbiAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMTVweDtcbiAgICBvcGFjaXR5OiAuNTtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogV2lzaGxpc3RcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiN3aXNobGlzdC10YWJsZSB7XG4gICAgdGgge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgJi5jbGVhbi10YWJsZSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy10YWJsZS1ib3JkZXI7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRjLWxpbms7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAud2lzaGxpc3Qtc2t1IHtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXh4cztcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgIG1hcmdpbjogNXB4IDA7XG4gICAgfVxuXG4gICAgdGV4dGFyZWEge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1pbnB1dC1ib3JkZXI7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14eHM7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuXG4gICAgICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgICAgICAmOi1tb3otcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgICAgICAmOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIH1cbiAgICAgICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLml0ZW0tbWFuYWdlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIG1heC13aWR0aDogNDUwcHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiA1cHg7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHhzO1xuICAgICAgICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJ0LWNlbGwge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2Uge1xuICAgICAgICAgICAgd2lkdGg6IDExM3B4O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLXF1YW50aXR5IHtcbiAgICAgICAgICAgIHdpZHRoOiAzZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcHJpY2Uge1xuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLWNhcnQge1xuICAgICAgICAgICAgd2lkdGg6IDE1MHB4O1xuXG4gICAgICAgICAgICAuYnV0dG9uIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGdhcDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAudHJ1bmNhdGVkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkZ2FwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5yZW1vdmUtd2hpc2hsaXN0LWl0ZW0ge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ0bi1yZW1vdmUge1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcmVtb3ZlIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ1dHRvbixcbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC5wcmljZS1ib3gge1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuXG4gICAgICAgIC5wcmljZSB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5naWZ0cmVnaXN0eS1hZGQge1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG5cbiAgICAgICAgLmNoYW5nZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50cnVuY2F0ZWQge1xuICAgICAgICAuZGV0YWlscyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICAgICAgY29sb3I6ICRjLWFjdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRkW2RhdGEtcndkLWxhYmVsXTpiZWZvcmUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhsYXJnZSkge1xuICAgICN3aXNobGlzdC10YWJsZSB7XG4gICAgICAgICYuY2xlYW4tdGFibGUge1xuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJveC1zcGFjaW5nO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLWxhcmdlKSB7XG4gICAgI3dpc2hsaXN0LXRhYmxlIHtcbiAgICAgICAgJi5jbGVhbi10YWJsZSB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1jYXJ0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAucHJvZHVjdC1uYW1lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbWVkaXVtKSB7XG4gICAgI3dpc2hsaXN0LXRhYmxlIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgaGVpZ2h0OiA2OHB4O1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLml0ZW0tbWFuYWdlIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0ZC5jdXN0b21lci13aXNobGlzdC1pdGVtLWltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiA3MHB4O1xuXG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiA3MHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNzBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tY2FydCB7XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucmVtb3ZlLXdoaXNobGlzdC1pdGVtIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tY2FydCB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtc21hbGwpIHtcbiAgICAjd2lzaGxpc3QtdGFibGUge1xuICAgICAgICB0ZC5jdXN0b21lci13aXNobGlzdC1pdGVtLXF1YW50aXR5IHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRkLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2UsXG4gICAgICAgIHRoLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICN3aXNobGlzdC10YWJsZSB7XG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW1hZ2UsXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0taW5mbyxcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1xdWFudGl0eSxcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1wcmljZSxcbiAgICAgICAgICAgICYuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1jYXJ0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBlbXB0eS1jZWxsczogaGlkZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLWltYWdlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTEzcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDExM3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcXVhbnRpdHksXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcHJpY2Uge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICR0cmltLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5jYXJ0LWNlbGwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wcmljZS1ib3gge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jdXN0b21lci13aXNobGlzdC1pdGVtLWNhcnQge1xuICAgICAgICAgICAgICAgIC5jYXJ0LWNlbGwge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ4JTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA+IHAge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmN1c3RvbWVyLXdpc2hsaXN0LWl0ZW0tcmVtb3ZlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICYuY2xlYW4tdGFibGUge1xuICAgICAgICAgICAgdGQuY3VzdG9tZXItd2lzaGxpc3QtaXRlbS1jYXJ0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogV2lzaGxpc3QgU2lkZWJhclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmJsb2NrLXdpc2hsaXN0IHtcblxuICAgIC5taW5pLXByb2R1Y3RzLWxpc3QgPiBsaTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICB9XG5cbiAgICAucHJvZHVjdC1kZXRhaWxzIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgIH1cblxuICAgIC5wcmljZS1ib3gge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5wcmljZS1ib3gsXG4gICAgLnByaWNlLWJveCAucHJpY2UsXG4gICAgLmxpbmstY2FydCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14cztcbiAgICB9XG5cbiAgICAubGluay1jYXJ0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiA3cHg7XG4gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXItbGlnaHQ7XG4gICAgfVxuXG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IC0gTWluaSBjYXJ0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaGVhZGVyLW1pbmljYXJ0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICBAaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLm1pbmljYXJ0LW1lc3NhZ2Uge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogJGJveC1zcGFjaW5nO1xuICAgIH1cblxuICAgIC5lbXB0eSB7XG4gICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5taW5pY2FydC13cmFwcGVyIHtcbiAgICAgICAgQGluY2x1ZGUgbG9hZGluZ092ZXJsYXkoKTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICAuYmxvY2stY2FydCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgIC5ibG9jay1zdWJ0aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjNTBBNENGO1xuICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcblxuICAgICAgICAuY2xvc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLThweDtcbiAgICAgICAgICAgIHJpZ2h0OiAkYm94LXNwYWNpbmcgLSAxM3B4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC5taW5pLXByb2R1Y3RzLWxpc3Qge1xuICAgICAgICBwYWRkaW5nOiAkYm94LXNwYWNpbmc7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwcHg7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDVweCA4cHggMTFweDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREREREO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAmLmxhc3Qge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICAgIC5wcm9kdWN0LW5hbWUge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDBweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtYWN0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmluZm8td3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkZ2FwO1xuICAgICAgICB9XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgICAgICBjbGVhcjogcmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAucXR5LXdyYXBwZXIge1xuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzNweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5xdHkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgICAgICAgIHdpZHRoOiAzLjJlbTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5xdWFudGl0eS1idXR0b24ge1xuICAgICAgICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eShvcGFjaXR5KTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tZHVyYXRpb24oMTAwbXMpO1xuXG4gICAgICAgICAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnZpc2libGUge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc3VidG90YWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjREREREREO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyZW07XG5cbiAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIH1cbiAgICAgICAgLnByaWNlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWluaWNhcnQtYWN0aW9ucyB7XG4gICAgICAgIHBhZGRpbmc6ICRib3gtc3BhY2luZztcbiAgICAgICAgbWFyZ2luLXRvcDogMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAuY2hlY2tvdXQtYnV0dG9uIHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTQ1cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FydC1saW5rIHtcbiAgICAgICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzOXB4O1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS1zO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjbWluaWNhcnQtZXJyb3ItbWVzc2FnZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6IHJlZDtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAjbWluaWNhcnQtc3VjY2Vzcy1tZXNzYWdlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBjb2xvcjogZ3JlZW47XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy9oaWRlIGpjYXJvdXNlbCBjb250cm9scyB1bnRpbCBjYXJvdXNlbCBpcyBwcm9wZXJseSBpbnRlZ3JhdGVkIHdpdGggZGVzaWduXG4gICAgLmpjYXJvdXNlbC1jb250cm9sLXByZXYsXG4gICAgLmpjYXJvdXNlbC1jb250cm9sLW5leHQge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmhlYWRlci1taW5pY2FydC5za2lwLWFjdGl2ZSAuYmxvY2stY2FydCxcbi5ibG9jay1jYXJ0LnNraXAtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuQGluY2x1ZGUgYnAobWluLXdpZHRoLCAkYnAtbWVkaXVtICsgMSkge1xuICAgIC5jaGVja291dC10eXBlcy5taW5pY2FydCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC14c21hbGwpIHtcbiAgICAuaGVhZGVyLW1pbmljYXJ0IGEuc2tpcC1jYXJ0IHtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5oZWFkZXItbWluaWNhcnQge1xuICAgICAgICAuc3VidG90YWwge1xuICAgICAgICAgICAgLmxhYmVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubWluaWNhcnQtd3JhcHBlciB7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VERURFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5xdWFudGl0eS1idXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyLW1pbmljYXJ0IC5ibG9jay1jYXJ0IHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICR0cmltLXNtYWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlci1taW5pY2FydCAuYmxvY2stc3VidGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6ICR0cmltLXNtYWxsICsgNDRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5taW5pY2FydC1hY3Rpb25zIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzM3B4O1xuXG4gICAgICAgICAgICAuY2FydC1saW5rIHtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICAgICAgcmlnaHQ6ICRib3gtc3BhY2luZztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jaGVja291dC10eXBlcy5taW5pY2FydCB7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgICAgICAgICAgLnBheXBhbC1sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgID4gYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAuYm1sX2J1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC5wYXlwYWwtb3Ige1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMTBweCA1cHggMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCA3NDBweCkge1xuICAgIC5oZWFkZXItbWluaWNhcnQge1xuICAgICAgICAubWluaWNhcnQtYWN0aW9ucyB7XG4gICAgICAgICAgICAuY2FydC1saW5rIHtcbiAgICAgICAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNoZWNrb3V0LXR5cGVzLm1pbmljYXJ0IHtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIC5wYXlwYWwtbG9nbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAucGF5cGFsLW9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgLnBheXBhbC1idXR0b24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAucGF5cGFsLW9yIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1zbWFsbCkge1xuICAgIC5oZWFkZXItbWluaWNhcnQge1xuICAgICAgICAubWluaWNhcnQtYWN0aW9ucyB7XG4gICAgICAgICAgICAuY2hlY2tvdXQtYnV0dG9uIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogU2VhcmNoIC0gQXV0byBTdWdnZXN0XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2VhcmNoLWF1dG9jb21wbGV0ZSB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICB6LWluZGV4OiAyMDA7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1oaWdobGlnaHQ7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICAgICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgcGFkZGluZzogNHB4IDZweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkYy1saW5rLWhvdmVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLnNlbGVjdGVkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1hY3Rpb247XG4gICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYW1vdW50IHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgdHJpYW5nbGUodXAsIDdweCwgJGMtYWN0aW9uKTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IC03cHg7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBTZWFyY2ggLSBBZHZhbmNlZFxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmFkdmFuY2VkLXNlYXJjaCB7XG4gICAgYmFja2dyb3VuZDogJGMtbW9kdWxlLWJhY2tncm91bmQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICBwYWRkaW5nOiAkdHJpbTtcblxuICAgIHNlbGVjdC5tdWx0aXNlbGVjdCB7XG4gICAgICAgIG9wdGlvbiB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlci1saWdodDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDJweCA1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5hZHZhbmNlZC1zZWFyY2gge1xuICAgICAgICBwYWRkaW5nOiAkdHJpbS1zbWFsbDtcbiAgICB9XG59XG5cbi5nYWxsZXJ5LXJlc3VsdHMge1xuICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgaDIge1xuICAgICAgICBjb2xvcjogJGMtdGV4dDtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIH1cblxuICAgIGEge1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBBY2NvdW50IC0gUmV2aWV3c1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnByb2R1Y3QtcmV2aWV3IHtcbiAgICAucHJvZHVjdC1pbWctYm94IHtcbiAgICAgICAgcC5sYWJlbCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGYtc2l6ZS14bDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkZ2FwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5yYXRpbmctYm94IHtcbiAgICAgICAgICAgIG1hcmdpbjogMTVweCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnByb2R1Y3QtZGV0YWlscyB7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgY29sb3I6ICMzMzk5Q0M7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogJGdhcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yYXRpbmdzLXRhYmxlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGdhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkZ2FwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yYXRpbmdzLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZHQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICAgICAgcGFkZGluZzogJGdhcCAwO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICAgIGNvbG9yOiAjNzM3MzczO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6ICRmLXN0YWNrLXNwZWNpYWw7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtcztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSArIDEpIHtcbiAgICAucHJvZHVjdC1yZXZpZXcge1xuICAgICAgICAucmF0aW5ncy10YWJsZSB7XG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtaW4td2lkdGgsIDExMjZweCkge1xuICAgIC5wcm9kdWN0LXJldmlldyB7XG4gICAgICAgIC5yYXRpbmdzLXRhYmxlIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDMyMHB4KSB7XG4gICAgLnByb2R1Y3QtcmV2aWV3IHtcbiAgICAgICAgLnJhdGluZ3MtdGFibGUge1xuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBDTVMgUGFnZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnRlbnQgZm9yIHN0YXRpYyBwYWdlc1xuXG4uY21zLXBhZ2Utdmlldyxcbi5jbXMtbm8tcm91dGUge1xuICAgIC5wYWdlLXRpdGxlLFxuICAgIC5wYWdlLWhlYWQge1xuICAgICAgICBoMSxcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN0ZCB7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGgxIHtcbiAgICAgICAgICAgIGNvbG9yOiAkYy10ZXh0LXByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBjb2xvcjogJGMtdGV4dC1wcmltYXJ5O1xuICAgICAgICB9XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgY29sb3I6ICRjLXRleHQ7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc2VyaWY7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2wtbGVmdCB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbXMtbm8tcm91dGUge1xuICAgIC5zdGQge1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICAvLyB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNtcy1wYWdlLXZpZXcgLnN0ZCxcbi5jbXMtaG9tZSAuc3RkLFxuLmNtcy1uby1yb3V0ZSAuc3RkIHtcbiAgICAubWVzc2FnZXMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm94LXNwYWNpbmc7XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zYW5zO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBY2NvcmRpdGlvblxuXG4jYWNjb3JkaW9uIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb247XG5cbiAgICBsaSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAucGx1c2ltYWdlIGgyIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGdhcDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2l0ZW1hcFxuXG4ucGFnZS1zaXRlbWFwIHtcbiAgICAubGlua3Mge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMCAyMHB4IDAgMDtcblxuICAgICAgICBhIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgfVxuXG4gICAgLnNpdGVtYXAge1xuICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICAgIG1hcmdpbjogMTVweCAwO1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG5cbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luOiAzcHggMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udGFjdCBwYWdlXG5cbi5jb250YWN0cy1pbmRleC1pbmRleCB7XG4gICAgaDEge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxufVxuXG4jY29udGFjdEZvcm0ge1xuICAgIHBhZGRpbmctbGVmdDogNDBweDtcblxuICAgIGgyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxuXG4gICAgLmZpZWxkc2V0IC5sZWdlbmQgKyAucmVxdWlyZWQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcblxuICAgICNjb250YWN0Rm9ybSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG59XG5cblxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBQcmljaW5nIENvbmRpdGlvbnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5wcmljZS1ib3gge1xuICAgIC5taW5pbWFsLXByaWNlLWxpbmsge1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgY29sb3I6ICRjLXJlZDtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZi1zdGFjay1zcGVjaWFsO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZi1zaXplLXhzO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1hcC1pbmZvIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uY2F0YWxvZy1wcm9kdWN0LXZpZXcge1xuICAgIC5tYXAtaW5mbyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgICAgID4gc3BhbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnByaWNlLWJveC5tYXAtaW5mbyA+IGEge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENvb2tpZXNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5ub3RpY2UtY29va2llIHtcbiAgICAubm90aWNlLWlubmVyIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpY2UtdGV4dCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAoNDBweCAtICRmLXNpemUteHhzKSAvIDI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFjdGlvbnMge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAoNDBweCAtICRmLXNpemUteHhzKSAvIDI7XG4gICAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcbiAgICAubm90aWNlLWNvb2tpZSB7XG4gICAgICAgIC5ub3RpY2UtdGV4dCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDg2JTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuXG4gICAgLm5vdGljZS1jb29raWUge1xuICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XG5cbiAgICAgICAgLm5vdGljZS10ZXh0IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogODIlO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsIDYyMHB4KSB7XG5cbiAgICAubm90aWNlLWNvb2tpZSB7XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcblxuICAgICAgICAubm90aWNlLWlubmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgMTBweDtcblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubm90aWNlLXRleHQge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIFRhZ3NcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiNhZGRUYWdGb3JtIGJ1dHRvbiB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4jYWRkVGFnRm9ybSAuZm9ybS1hZGQge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG4ucHJvZHVjdC10YWdzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgcGFkZGluZzogNXB4IDElIDEwcHg7XG4gICAgd2lkdGg6IDk4JTtcbn1cbi5wcm9kdWN0LXRhZ3MgbGkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMTVweDtcbn1cbi5wcm9kdWN0LXRhZ3MgbGkubGFzdCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG4udGFncy1saXN0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuLnRhZ3MtbGlzdCA+IGxpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG4uYmxvY2stdGFncyAuYWN0aW9ucyA+IGEge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5teS10YWctZWRpdCB7XG4gICAgLmJ1dHRvbi5idG4tcmVtb3ZlIHtcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbkBpbmNsdWRlIGJwIChtYXgtd2lkdGgsICRicC1tZWRpdW0pIHtcbiAgICAudGFncy1saXN0ID4gbGksXG4gICAgLnRhZ3MtbGlzdCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2FwdGNoYVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYXB0Y2hhLW5vdGUge1xuICAgIGNsZWFyOiBsZWZ0O1xuICAgIHBhZGRpbmctdG9wOiA1cHg7XG59XG4uY2FwdGNoYS1pbWFnZSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDI1OHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4uY2FwdGNoYS1pbWFnZSAuY2FwdGNoYS1pbWcge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNiNmI2YjY7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB3aWR0aDogMTAwJTtcbn1cbi5yZWdpc3RlcmVkLXVzZXJzIC5jYXB0Y2hhLWltYWdlIHsgbWFyZ2luOiAwIH1cbi5jYXB0Y2hhLXJlbG9hZCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDJweDtcbiAgICByaWdodDogMnB4O1xufVxuLmNhcHRjaGEtcmVsb2FkLnJlZnJlc2hpbmcge1xuICAgIGFuaW1hdGlvbjogcm90YXRlIDEuNXMgaW5maW5pdGUgbGluZWFyO1xuICAgIC13ZWJraXQtYW5pbWF0aW9uOiByb3RhdGUgMS41cyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgLW1vei1hbmltYXRpb246IHJvdGF0ZSAxLjVzIGluZmluaXRlIGxpbmVhcjtcbn1cbi5jdXN0b21lci1hY2NvdW50LWNyZWF0ZSAuc2NhZmZvbGQtZm9ybSAuY2FwdGNoYS1pbnB1dC1jb250YWluZXIgbGFiZWw6Zmlyc3QtY2hpbGQgeyB3aWR0aDogMTAwJSB9XG4uY2FwdGNoYS1yZWxvYWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogNHB4O1xuICAgIHRvcDogNHB4O1xufVxuLmNhcHRjaGEtaW1nIHsgYm9yZGVyOiAyMHB4IHNvbGlkICNiYmIgfVxuLmNhcHRjaGEtaW5wdXQtY29udGFpbmVyIHsgbWFyZ2luLWJvdHRvbTogMTBweCB9XG4uY29udHJvbC5uZXdzbGV0dGVyLWJveCwgLmNhcHRjaGEtaW5wdXQtY29udGFpbmVyLCAuY2FwdGNoYS1pbWctY29udGFpbmVyIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBjbGVhcjogYm90aDtcblxuICAgICY6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6Jyc7XG4gICAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IEJpbGxpbmcgRml4IHRvIHBsYWNlIHRoZSBDYXB0Y2hhIHByb3Blcmx5XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2NvLWJpbGxpbmctZm9ybSB1bC5mb3JtLWxpc3QgPiAuY29udHJvbCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwIDAgNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBBY2NvdW50IC0gT3JkZXJzLCBJbnZvaWNlcywgQ3JlZGl0IE1lbW9zLlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQGluY2x1ZGUgYnAgKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgIC5zYWxlcy1vcmRlci1pbnZvaWNlLFxuICAgIC5zYWxlcy1vcmRlci1jcmVkaXRtZW1vLFxuICAgIC5zYWxlcy1vcmRlci1zaGlwbWVudCB7XG4gICAgICAgIC5zdWItdGl0bGUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmLXNpemUtbDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIC5vcmRlci1saW5rcyB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUmVjdXJyaW5nIFByb2ZpbGVzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4jcmVjdXJyaW5nX3Byb2ZpbGVfbGlzdF92aWV3IHtcblxuICAgIHRoIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAgKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteHM7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICB9XG4gICAgfSAvL2VuZCBicC14c21hbGwgYnJlYWtwb2ludFxuXG59IC8vZW5kICNyZWN1cnJpbmdfcHJvZmlsZV9saXN0X3ZpZXdcblxuLnJlY3VycmluZy1wcm9maWxlcy10aXRsZSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICBoMSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRlbGVtZW50LXNwYWNpbmc7XG4gICAgfVxufVxuXG5ib2R5LmN1c3RvbWVyLWFjY291bnQgLm15LWFjY291bnQgLnRpdGxlLWJ1dHRvbnMucmVjdXJyaW5nLXByb2ZpbGVzLXRpdGxlLWJ1dHRvbnMge1xuICAgIGZsb2F0OnJpZ2h0O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206ICR0cmltO1xuXG4gICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLXByb2ZpbGVzLW1lc3NhZ2VzIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgfVxufVxuXG4jcmVjdXJyaW5nX3N0YXJ0X2RhdGVfdHJpZyB7XG4gICAgZGlzcGxheTogaW5saW5lO1xufVxuIiwiLy9cbi8vIE1hZ2VudG9cbi8vXG4vLyBOT1RJQ0UgT0YgTElDRU5TRVxuLy9cbi8vIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy8gdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0VfQUZMLnR4dC5cbi8vIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwXG4vLyBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuLy8gb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuLy8gdG8gbGljZW5zZUBtYWdlbnRvLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuLy9cbi8vIERJU0NMQUlNRVJcbi8vXG4vLyBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgTWFnZW50byB0byBuZXdlclxuLy8gdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIE1hZ2VudG8gZm9yIHlvdXJcbi8vIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwOi8vd3d3Lm1hZ2VudG8uY29tIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuLy9cbi8vIEBjYXRlZ29yeSAgICBkZXNpZ25cbi8vIEBwYWNrYWdlICAgICByd2RfZGVmYXVsdFxuLy8gQGNvcHlyaWdodCAgIENvcHlyaWdodCAoYykgMjAwNi0yMDE1IFguY29tbWVyY2UsIEluYy4gKGh0dHA6Ly93d3cubWFnZW50by5jb20pXG4vLyBAbGljZW5zZSAgICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FmbC0zLjAucGhwICBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqXG4gKiBCaWxsaW5nIEFncmVlbWVudHNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5iaWxsaW5nLWFncmVlbWVudHMge1xuICAgIC5pbmZvLWJveCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICR0cmltO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1saXN0IHtcbiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gtdGl0bGUge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJGJveC1zcGFjaW5nLWxhcmdlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogJGVsZW1lbnQtc3BhY2luZztcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAjcGF5bWVudF9tZXRob2Qge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLXRvcDogJGVsZW1lbnQtc3BhY2luZztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGVsZW1lbnQtc3BhY2luZztcbiAgICB9XG59XG5cbi5iaWxsaW5nLWFncmVlbWVudC12aWV3LWhlYWRlci13cmFwcGVyIHtcbiAgICAuaGVhZGluZyB7XG4gICAgICAgIG1heC13aWR0aDogODAlO1xuXG4gICAgICAgIEBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXhzbWFsbCkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1hZ3JlZW1lbnQtZGV0YWlscyB7XG4gICAgdGQsIHRoIHtcbiAgICAgICAgcGFkZGluZzogJGVsZW1lbnQtc3BhY2luZy8yO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAtbGFyZ2UpIHtcbiAgICAuYmlsbGluZy1hZ3JlZW1lbnRzIHtcbiAgICAgICAgLmRhdGEtdGFibGUge1xuICAgICAgICAgICAgLmNyZWF0ZWQtYXQsXG4gICAgICAgICAgICAudXBkYXRlZC1hdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogUG9wdWxhciBTZWFyY2ggVGVybXMgQ2xvdWRcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jYXRhbG9nc2VhcmNoLXRlcm0tcG9wdWxhciAudGFncy1saXN0IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNhdGFsb2dzZWFyY2gtdGVybS1wb3B1bGFyIC50YWdzLWxpc3QgPiBsaSB7XG4gIGZsb2F0OiBsZWZ0O1xuICBoZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbi1yaWdodDogMjVweDtcbn1cbiIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogV2lkZ2V0c1xuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogQWRkIHRvIGNhcnQgYnkgU0tVXG4gKi9cblxuLnNpZGViYXIge1xuICAgIC53aWRnZXQtYWRkYnlza3Uge1xuICAgICAgICAuc2t1LXRhYmxlIHtcbiAgICAgICAgICAgIC5pbnB1dC10ZXh0Om5vdCgucXR5KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicChtaW4td2lkdGgsICRicC1tZWRpdW0rMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3ByZXZlbnQgd2lkZ2V0IGluIGxlZnQvcmlnaHQgY29sdW1uIGZyb20gZXhjZWVkaW5nIGNvbHVtbiB3aWR0aFxuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndpZGdldCB7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi53aWRnZXQgLnBhZ2VyIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLy8gSW1wbGVtZW50IGN1c3RvbSBncmlkIGJyZWFrcG9pbnRzIGZvciBncmlkcyB0aGF0IGFyZSBjb250YWluZWQgd2l0aGluIHdpZGdldHNcbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLXhsYXJnZSkge1xuICAgIC5jb2wyLWxlZnQtbGF5b3V0LFxuICAgIC5jb2wyLXJpZ2h0LWxheW91dCxcbiAgICAuY29sMy1sYXlvdXRcbiAgICB7XG4gICAgICAgIC5jb2wtbWFpbiAud2lkZ2V0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHByb2R1Y3QtZ3JpZCg0LCA5NjAsIFwid2lkZ2V0XCIpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcHJvZHVjdC1ncmlkKDUsIDk2MCwgXCJ3aWRnZXRcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIC5jb2wxLWxheW91dCB7XG4gICAgICAgIC5jb2wtbWFpbiAud2lkZ2V0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHByb2R1Y3QtZ3JpZCg0LCA5NjAsIFwid2lkZ2V0XCIpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcHJvZHVjdC1ncmlkKDUsIDk2MCwgXCJ3aWRnZXRcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvL1xuLy8gTWFnZW50b1xuLy9cbi8vIE5PVElDRSBPRiBMSUNFTlNFXG4vL1xuLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBBY2FkZW1pYyBGcmVlIExpY2Vuc2UgKEFGTCAzLjApXG4vLyB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRV9BRkwudHh0LlxuLy8gSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4vLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHBcbi8vIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4vLyBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4vLyB0byBsaWNlbnNlQG1hZ2VudG8uY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4vL1xuLy8gRElTQ0xBSU1FUlxuLy9cbi8vIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBNYWdlbnRvIHRvIG5ld2VyXG4vLyB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgTWFnZW50byBmb3IgeW91clxuLy8gbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cubWFnZW50by5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4vL1xuLy8gQGNhdGVnb3J5ICAgIGRlc2lnblxuLy8gQHBhY2thZ2UgICAgIHJ3ZF9kZWZhdWx0XG4vLyBAY29weXJpZ2h0ICAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTUgWC5jb21tZXJjZSwgSW5jLiAoaHR0cDovL3d3dy5tYWdlbnRvLmNvbSlcbi8vIEBsaWNlbnNlICAgICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYWZsLTMuMC5waHAgIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICpcbiAqIENoZWNrb3V0IC0gTXVsdGlwbGUgQWRkcmVzc2VzXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5ib2R5W2NsYXNzKj1cImNoZWNrb3V0LW11bHRpc2hpcHBpbmctXCJdIHtcbiAgICAuY2hlY2tvdXQtcHJvZ3Jlc3Mge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgICAgID4gbGkge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICB3aWR0aDogMjAlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogOHB4IDElIDZweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYy1tb2R1bGUtYm9yZGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICBmb250LWZhbWlseTogJGYtc3RhY2stc3BlY2lhbDtcbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1idXR0b24tc2Vjb25kYXJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5sYXN0IHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAucGFnZS10aXRsZSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICAgICAgaDEge1xuICAgICAgICAgICAgYm9yZGVyOiAwIG5vbmU7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgICAgIH1cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm11bHRpcGxlLWNoZWNrb3V0ID4gaDIge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIH1cbiAgICAubWVzc2FnZXMge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5jb2wtMi5jb2wtd2lkZSB7XG4gICAgICAgIHdpZHRoOiA2NiU7XG4gICAgfVxuICAgIC5jb2wtMS5jb2wtbmFycm93IHtcbiAgICAgICAgd2lkdGg6IDMwJTtcbiAgICB9XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIH1cblxuICAgIC5ncmFuZC10b3RhbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXNpemU6ICRmLXNpemUteGw7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgICNjaGVja291dC1yZXZpZXctc3VibWl0IHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cblxuICAgICNyZXZpZXctYnV0dG9ucy1jb250YWluZXIge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn1cblxuLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctYWRkcmVzc2VzIHtcbiAgICAuYnRuLXJlbW92ZTIge1xuICAgICAgICB0ZXh0LWluZGVudDogLTU1NTVweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgfVxufVxuXG4uY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1zaGlwcGluZyB7XG4gICAgLmdpZnQtbWVzc2FnZXMge1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIH1cbiAgICAuZ2lmdC1tZXNzYWdlcy1mb3JtIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgfVxuICAgICAgICAuZm9ybS1saXN0IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jaGVja291dC1tdWx0aXNoaXBwaW5nLXNoaXBwaW5nLFxuLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctYmlsbGluZyxcbi5jaGVja291dC1tdWx0aXNoaXBwaW5nLW92ZXJ2aWV3IHtcbiAgICAuY29sLTEsIC5jb2wtMiB7XG4gICAgICAgIC5ib3gtdGl0bGUge1xuICAgICAgICAgICAgaDIsIGgzLCBoNCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkYy1tb2R1bGUtYmFja2dyb3VuZDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGMtbW9kdWxlLWJvcmRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA+IGg0IHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjLW1vZHVsZS1iYWNrZ3JvdW5kO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjLW1vZHVsZS1ib3JkZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB9XG4gICAgICAgIC5ib3gtY29udGVudCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctYmlsbGluZyB7XG4gICAgLnNwLW1ldGhvZHMgZHQge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4jbXVsdGlzaGlwLWFkZHJlc3Nlcy10YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5hLWNlbnRlci5sYXN0ID4gYSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbn1cblxuI3Jldmlldy1vcmRlci1mb3JtID4gZGl2Om50aC1jaGlsZCgzKSA+IGRpdi5kaXZpZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBjbGVhcjpib3RoO1xufVxuXG5AaW5jbHVkZSBicChtYXgtd2lkdGgsICRicC1sYXJnZSkge1xuICAgIGJvZHlbY2xhc3MqPVwiY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1cIl0ge1xuICAgICAgICAuY2hlY2tvdXQtcHJvZ3Jlc3Mgc3BhbiB7XG4gICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDMwMHB4O1xuICAgICAgICB9XG4gICAgfVxuICAgICNyZXZpZXctb3JkZXItZm9ybXtcbiAgICAgICAgLmNvbC0xLFxuICAgICAgICAuY29sLTIge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLW1lZGl1bSkge1xuICAgIGJvZHlbY2xhc3MqPVwiY2hlY2tvdXQtbXVsdGlzaGlwcGluZy1cIl0ge1xuICAgICAgICAuY2hlY2tvdXQtcHJvZ3Jlc3Mgc3BhbiB7XG4gICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgfVxuICAgICAgICAuY2hlY2tvdXQtcHJvZ3Jlc3Mge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMyU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICB3b3JkLXNwYWNpbmc6IDFweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuYm94LXRpdGxlIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLnBhZ2UtdGl0bGUgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmxpbmVhcml6ZS10YWJsZSB7XG4gICAgICAgICAgICB0Zm9vdCB0ZCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmNvbC0xLmNvbC1uYXJyb3csIC5jb2wtMi5jb2wtd2lkZSB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpbmNsdWRlIGJwKG1heC13aWR0aCwgJGJwLXNtYWxsKSB7XG4gICAgLmNoZWNrb3V0LW11bHRpc2hpcHBpbmctYWRkcmVzc2VzIC5saW5lYXJpemUtdGFibGUgdGJvZHkgdGRbZGF0YS1yd2QtbGFiZWxdIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIH1cbn1cblxuQGluY2x1ZGUgYnAobWF4LXdpZHRoLCAkYnAteHNtYWxsKSB7XG4gICAgYm9keVtjbGFzcyo9XCJjaGVja291dC1tdWx0aXNoaXBwaW5nLVwiXSB7XG4gICAgICAgIC5idXR0b25zLXNldCAuYmFjay1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiZW5uaXMtZmxpbnRcIjtcbiAgc3JjOnVybChcIi4uL2ZvbnRzL2VubmlzLWZsaW50LWljb24uZW90XCIpO1xuICBzcmM6dXJsKFwiLi4vZm9udHMvZW5uaXMtZmxpbnQtaWNvbi5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2VubmlzLWZsaW50LWljb24ud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2VubmlzLWZsaW50LWljb24udHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2VubmlzLWZsaW50LWljb24uc3ZnI2VubmlzLWZsaW50LWljb25cIikgZm9ybWF0KFwic3ZnXCIpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG5cbn1cblxuW2RhdGEtaWNvbl06YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwiZW5uaXMtZmxpbnRcIiAhaW1wb3J0YW50O1xuICBjb250ZW50OiBhdHRyKGRhdGEtaWNvbik7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsICFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG4gIHNwZWFrOiBub25lO1xuICBsaW5lLWhlaWdodDogMTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbltjbGFzc149XCJpY29uLVwiXTpiZWZvcmUsXG5bY2xhc3MqPVwiIGljb24tXCJdOmJlZm9yZSB7XG4gIGZvbnQtZmFtaWx5OiBcImVubmlzLWZsaW50XCIgIWltcG9ydGFudDtcbiAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgZm9udC12YXJpYW50OiBub3JtYWwgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgc3BlYWs6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmljb24tZmFjZWJvb2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJhXCI7XG59XG4uaWNvbi1saW5rZWRpbjpiZWZvcmUge1xuICBjb250ZW50OiBcImJcIjtcbn1cbi5pY29uLXBpbnRlcmVzdDpiZWZvcmUge1xuICBjb250ZW50OiBcImNcIjtcbn1cbi5pY29uLXR1bWJscjpiZWZvcmUge1xuICBjb250ZW50OiBcImRcIjtcbn1cbi5pY29uLXR3aXR0ZXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJlXCI7XG59XG4uaWNvbi15b3V0dWJlLXBsYXk6YmVmb3JlIHtcbiAgY29udGVudDogXCJmXCI7XG59XG4uaWNvbi10YWJsZXQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJnXCI7XG59XG4uaWNvbi1sZXR0ZXItbWFpbDpiZWZvcmUge1xuICBjb250ZW50OiBcImhcIjtcbn1cbi5pY29uLWhlYXJ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiaVwiO1xufVxuLmljb24taGVhcnQtZW1wdHk6YmVmb3JlIHtcbiAgY29udGVudDogXCJqXCI7XG59XG4uaWNvbi1nb29nbGUtcGx1czpiZWZvcmUge1xuICBjb250ZW50OiBcImtcIjtcbn1cbi5pY29uLWFycm93LXJpZ2h0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwibFwiO1xufVxuLmljb24tYXJyb3ctdXA6YmVmb3JlIHtcbiAgY29udGVudDogXCJtXCI7XG59XG4uaWNvbi1hcnJvdy1sZWZ0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiblwiO1xufVxuLmljb24tYXJyb3ctZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcIm9cIjtcbn1cbi5pY29uLXN0YXItdHdvOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwicFwiO1xufVxuLmljb24taW5zdGFncmFtOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwicVwiO1xufVxuLmljb24tZ2VhcnMtc2V0dGluZzpiZWZvcmUge1xuICBjb250ZW50OiBcInJcIjtcbn1cbiIsIi5jd3NSd2RTbGlkZXIge1x0XG5cdC5zbGlkZXMge1xuXHRcdGhlaWdodDogNDAwcHg7XG5cdFx0bGkge1x0XHRcdFxuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0b3ZlcmZsb3c6IGF1dG87XG5cdFx0XHRpbWcge1x0XHRcblx0XHRcdFx0Ly8gcG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuLnNsaWRlcmRlY3Mge1xuXHR0b3A6IDBweDtcblx0cmlnaHQ6IDMwcHg7XG5cdGxlZnQ6IDMwcHg7XG5cdHdpZHRoOiBhdXRvO1xuXHRib3JkZXItbGVmdDogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDVweDtcblx0cCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXHRoMyB7XG5cdFx0Zm9udC1zaXplOiAxZW07XG5cdH1cbn1cblxuLmN3cy12aWV3cG9ydCB7ICAgICAgICBcblx0bWF4LWhlaWdodDogMTIwcHg7XG59XG5cblxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4MHB4KSB7XG5cdC5jd3Mtdmlld3BvcnQgeyAgICAgICAgXG5cdFx0bWF4LWhlaWdodDogMTgwcHg7XG5cdH1cblx0LnNsaWRlcmRlY3Mge1xuICAgICAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0aDMge1xuXHRcdFx0Zm9udC1zaXplOiAyZW07XG5cdFx0fVxuXHRcdHAge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVx0XHRcdFxuXHR9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcblx0LmN3cy12aWV3cG9ydCB7ICAgICAgICBcblx0XHRtYXgtaGVpZ2h0OiAyOTlweDtcblx0fVxuXHQuc2xpZGVyZGVjcyB7XG5cdFx0bWF4LXdpZHRoOiAyNWVtO1xuXHRcdHRvcDogNTVweDtcblx0XHRyaWdodDogYXV0bztcblx0XHRsZWZ0OiAxNSU7XHRcdFxuXHRcdGgzIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IC41ZW07XG5cdFx0fVxuXHR9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTQwMHB4KSB7XG5cdC5jd3Mtdmlld3BvcnQgeyAgICAgICAgXG5cdFx0bWF4LWhlaWdodDogNDAwcHg7XG5cdH1cblx0LnNsaWRlcmRlY3Mge1xuXHRcdHRvcDogNzVweDtcblx0XHRsZWZ0OiAxOCU7XHRcdFxuXHR9XG59IiwiLmZpbHRlci1uZXdzIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IGRvdHRlZCAjYTBhMGEwO1xuICAgIHBhZGRpbmctYm90dG9tOiAyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjhlbTtcbiAgICBidXR0b24ge1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4ICM2NDY0NjMgc29saWQ7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAuMjVzIGVhc2UtaW4tb3V0O1xuICAgIH1cbiAgICBidXR0b24ubmV3cy1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZGI4MTM7XG4gICAgfVxufVxuXG5cbi5tZW51LWNhdGVnb3JpZXMge1x0XG5cdGg1IHtcblx0XHRjb2xvcjogJGMtdGV4dDtcblx0fVxufVxuXG4uYmxvY2submV3cy1jYXRlZ29yaWVzIHtcblx0Ym9yZGVyOiBub25lO1xuXHQuYmxvY2stdGl0bGUge1xuXHRcdGJvcmRlci10b3A6IG5vbmU7XG5cdFx0c3Ryb25nIHtcdFxuXHRcdFx0Y29sb3I6ICRjLWxpbms7XG5cdFx0fVxuXHR9IFxufSBcbi5uZXdzX2ltYWdlIHtcblx0bWFyZ2luLXRvcDogN3B4O1xufVxuI25ld3MtcGFyZW50IHtcbiAgICAubmV3cy1pdGVtIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAgICAgcGFkZGluZzogNnB4IDE1cHg7XG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB9XG4gICAgICAgIC5kYXRlIHtcbiAgICAgICAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgICB9XG4gICAgfVxufVxuLm5ld3MtaXRlbS1jb250ZW50IHtcblx0YSB7XG5cdFx0Y29sb3I6ICRjLWxpbms7XG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJGMtbGluay1ob3Zlcjtcblx0XHR9IFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Y29sb3I6ICRjLWxpbmstZm9jdXM7XG5cdFx0fVxuXHRcdCY6YWN0aXZlIHtcblx0XHRcdGNvbG9yOiAkYy1saW5rLWFjdGl2ZTtcblx0XHR9XG5cdFx0Jjp2aXNpdGVkIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXHR9XG5cdHBhZGRpbmc6IDJlbSAxZW07XG5cdC5iYWNrIHtcblx0XHRmb250LXNpemU6IDEuMjVlbTtcblx0fVxuXHQuc29jaWFsLFxuXHQubmV3cyB7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdH1cbiAgICAgICAgLmRhdGUge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXHQubmV3cyB7XG5cdFx0Zm9udC1zaXplOiAxLjFlbTtcblx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XHRcblx0XHRwIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEuNWVtO1xuXHRcdH1cdFxuXHR9XG5cdC5uZXdzX3RpdGxlLCBoNCB7XG5cdFx0Zm9udC1zaXplOiAxLjVlbTtcblx0XHRsaW5lLWhlaWdodDogMS4xO1xuICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHR9XG5cdC5uZXdzX2ltYWdlIHtcblx0XHRpbWcge1xuXHRcdFx0bWF4LWhlaWdodDogMzUwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9IFxufVxuLmxvYWRmaWxlIHtcblx0Zm9udC1zaXplOiAxNHB4O1x0XG59XG5cbkBpbmNsdWRlIGJwKG1pbi13aWR0aCwgMTA4MHB4KSB7XG5cdC5uZXdzLWl0ZW0tY29udGVudCB7XG5cdFx0cGFkZGluZzogMCAwIDJlbTtcblx0fVxufSIsIi8vXG4vLyBNYWdlbnRvXG4vL1xuLy8gTk9USUNFIE9GIExJQ0VOU0Vcbi8vXG4vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIEFjYWRlbWljIEZyZWUgTGljZW5zZSAoQUZMIDMuMClcbi8vIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFX0FGTC50eHQuXG4vLyBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbi8vIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocFxuLy8gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbi8vIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbi8vIHRvIGxpY2Vuc2VAbWFnZW50by5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbi8vXG4vLyBESVNDTEFJTUVSXG4vL1xuLy8gRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIE1hZ2VudG8gdG8gbmV3ZXJcbi8vIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBNYWdlbnRvIGZvciB5b3VyXG4vLyBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cDovL3d3dy5tYWdlbnRvLmNvbSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbi8vXG4vLyBAY2F0ZWdvcnkgICAgZGVzaWduXG4vLyBAcGFja2FnZSAgICAgcndkX2RlZmF1bHRcbi8vIEBjb3B5cmlnaHQgICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxNSBYLmNvbW1lcmNlLCBJbmMuIChodHRwOi8vd3d3Lm1hZ2VudG8uY29tKVxuLy8gQGxpY2Vuc2UgICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hZmwtMy4wLnBocCAgQWNhZGVtaWMgRnJlZSBMaWNlbnNlIChBRkwgMy4wKVxuLy9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKlxuICogQ2FsZW5kYXIgc3R5bGVzIChyZXN0b3JlIHN0eWxlcyBmcm9tIC9qcy9jYWxlbmRhcilcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5kaXYuY2FsZW5kYXIge1xuICAgIHRhYmxlIHtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcblxuICAgICAgICB0ZC5idXR0b24ge1xuICAgICAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XG4gICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQTRKR0UsSUFBSSxDQUFDO0VBQ0gsVUFBVSxFQUFFLFVBQVcsR0FDeEI7O0FB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 */
