/*!
 * @author Sphinxly
 * @url https://www.sphinxly.se
 * Copyright 2021 Sphinxly
 */
/* ==========================================================================
    Main declaration and builder file. Combines other files and sets global variables.

    The only changes in this file should be to set different variables or add additional @import "xxx.scss" to be included in end result.
    
    Use site.scss to write site-specific CSS.
    Use site_medium.scss/site_mobile.scss to write responsive site-specific CSS.
    
    When gulp is run and the sass is compiled, this will be run and the included files will be added to it.
    The final result end up as css.css (in this folder for dev, in wwwroot/css for prod).

    For css in sub-folders (like union folders), make sure the includes are taken from '../includes/xxx' and not 'includes/xxx'.
   ========================================================================== */
/* ==========================================================================
   Mixins for easy access to default behaviour
   ========================================================================== */
/*
* Clearfix
* @extend %clearfix;
*/
#ew-cookieinfo-container {
  *zoom: 1; }
  #ew-cookieinfo-container:after {
    content: '';
    display: table;
    line-height: 0;
    clear: both; }

/* Helping functions for default CSS behaviour */
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
   ========================================================================== */
/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in
 *    IE on Windows Phone and in iOS.
 */
html {
  line-height: 1.15;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0; }

/**
 * Add the correct display in IE 9-.
 */
article,
aside,
footer,
header,
nav,
section {
  display: block; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in IE.
 */
figcaption,
figure,
main {
  /* 1 */
  display: block; }

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px; }

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  -webkit-box-sizing: content-box;
          box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the gray background on active links in IE 10.
 * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
 */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */ }

/**
 * 1. Remove the bottom border in Chrome 57- and Firefox 39-.
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
  /* 2 */ }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bold; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic; }

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000; }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 */
audio,
video {
  display: inline-block; }

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Remove the border on images inside links in IE 10-.
 */
img {
  border-style: none; }

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: sans-serif;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS and Safari.
 */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */ }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Correct the padding in Firefox.
 */
fieldset {
  padding: 0.35em 0.75em 0.625em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * 1. Add the correct display in IE 9-.
 * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Remove the default vertical scrollbar in IE.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10-.
 * 2. Remove the padding in IE 10-.
 */
[type="checkbox"],
[type="radio"] {
  -webkit-box-sizing: border-box;
          box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 */
details,
menu {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Scripting
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 */
canvas {
  display: inline-block; }

/**
 * Add the correct display in IE.
 */
template {
  display: none; }

/* Hidden
   ========================================================================== */
/**
 * Add the correct display in IE 10-.
 */
[hidden] {
  display: none; }

/* Default normalizer */
/* ==========================================================================
   Helper classes styles
   ========================================================================== */
/* Image replacement */
.ir {
  background-color: transparent;
  border: 0;
  overflow: hidden;
  *text-indent: -9999px; }

.ir:before {
  content: "";
  display: block;
  width: 0;
  height: 100%; }

/* Hidden */
.hidden {
  display: none !important;
  visibility: hidden; }

/* Invisible */
.invisible {
  visibility: hidden; }

/* Clearfix */
.clearfix:before, .clearfix:after {
  content: " ";
  display: table; }

.clearfix:after {
  clear: both; }

.clearfix {
  *zoom: 1; }

.bold {
  font-weight: 700; }

.black {
  color: #000; }

/* Clear */
.clear {
  clear: both; }

/* Helping classes that can be used for quick and common behaviour (.bold, .black, etc) */
/* ==========================================================================
   Cookie container in bottom asking for cookie and integrity consent
   ========================================================================== */
#ew-cookieinfo-container {
  width: 100%;
  margin: 0;
  color: #555555;
  background-image: linear-gradient(155deg, #d8d8d8 0%, #f3f3f3 100%);
  z-index: 9999;
  position: fixed;
  bottom: 0;
  left: 0;
  padding: 15px 0px;
  font-family: "Arial";
  font-size: 14px;
  line-height: 1.6;
  border-top: 1px solid #ccc; }
  @media (max-width: 500px) {
    #ew-cookieinfo-container {
      padding-top: 5px; } }
  #ew-cookieinfo-container.hidden, #ew-cookieinfo-container .hidden {
    display: none; }
  #ew-cookieinfo-container .inner {
    padding: 0 25px; }
    #ew-cookieinfo-container .inner span {
      padding: 7px 0 0;
      display: block;
      float: left;
      line-height: 1; }
      #ew-cookieinfo-container .inner span a {
        color: #000; }
        #ew-cookieinfo-container .inner span a:hover {
          text-decoration: none; }
  #ew-cookieinfo-container #ew-cookieinfo-button-ok {
    float: right;
    border-radius: 3px;
    text-decoration: none;
    color: #555;
    background-color: rgba(255, 255, 255, 0.3);
    font-weight: bold;
    padding: 2px 25px;
    cursor: pointer;
    /*border: 1px solid #2eae27;*/
    border: 1px solid #aaa;
    background: #f9f9f9;
    margin-right: 15px;
    -webkit-transition: all 300ms ease-in-out;
    transition: all 300ms ease-in-out;
    text-transform: uppercase;
    width: auto; }
    @media (max-width: 500px) {
      #ew-cookieinfo-container #ew-cookieinfo-button-ok {
        margin: 4px 0; } }
    #ew-cookieinfo-container #ew-cookieinfo-button-ok:hover {
      background-color: #555;
      border: 1px solid #555;
      color: #fff; }

/* Styling for the cookie consent banner in bottom (clear cookies to get it back if you've pressed 'ok') */
@-webkit-keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0); }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0); }
  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0); }
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0); }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0); } }
@keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
    transform: translate3d(3000px, 0, 0); }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
    transform: translate3d(-25px, 0, 0); }
  75% {
    -webkit-transform: translate3d(10px, 0, 0);
    transform: translate3d(10px, 0, 0); }
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0); }
  to {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0); } }

/* Contains animations available that is run on render */
/*
 *  Variables to be used when designing main css in site.scss
 *  For new files, get intellisense and recognition by adding this snippet in the top: /// <reference path="css.scss" /> 
 */
/* Other default CSS files, mainly with default styles for print, sitemap and Forms */
/* ==========================================================================
   Default base - Some base settings, sitemap and form
   ========================================================================== */
/* apply a natural box layout model to all elements, but allowing components to change */
html {
  -webkit-box-sizing: border-box;
          box-sizing: border-box; }
  html *, html *:before, html *:after {
    -webkit-box-sizing: inherit;
            box-sizing: inherit; }

body {
  font-family: "Open Sans", sans-serif;
  font-size: 14px;
  line-height: 1.6;
  color: #000;
  background-color: #fff; }

a, button {
  color: #006362;
  text-decoration: none; }
  a:hover, a:focus, a:active, button:hover, button:focus, button:active {
    outline: none;
    color: #004544; }

body, input, button {
  -webkit-font-smoothing: antialiased;
  font-family: "Open Sans", sans-serif; }

/*select::-ms-expand {display: none;}
input::-ms-clear { display: none;}*/
/* Media print */
@media print {
  * {
    background: transparent !important;
    color: #000 !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    text-shadow: none !important; }
  a, a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
    content: ""; }
  pre, blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  thead {
    display: table-header-group; }
  tr, img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  @page {
    margin: 0.5cm; }
  p, h2, h3 {
    orphans: 3;
    widows: 3; }
  h2, h3 {
    page-break-after: avoid; } }

/* Default sitemap */
.gensitemap ul {
  padding: 0;
  margin: 0;
  list-style: none; }
  .gensitemap ul li {
    -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
            box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
    display: block;
    float: left;
    padding: 2%;
    width: 30.333333333%;
    margin: 0 1.5% 3% 1.5%;
    background: #fff; }
    .gensitemap ul li li a {
      font-size: 16px;
      display: block;
      text-decoration: none; }
    .gensitemap ul li li a:hover {
      text-decoration: underline; }
    .gensitemap ul li.last {
      margin-right: 0; }
    .gensitemap ul li ul {
      border-top: 1px dotted #dfdfdf;
      padding-top: 5px;
      margin-top: 5px; }
      .gensitemap ul li ul ul {
        border: none;
        padding-top: 0;
        margin-top: 0; }
      .gensitemap ul li ul li {
        float: none;
        -webkit-box-shadow: none;
                box-shadow: none;
        padding: 4px 0;
        width: auto;
        margin: 0; }
      .gensitemap ul li ul ul li {
        padding-left: 5%; }
      .gensitemap ul li ul li a {
        font-size: 14px;
        margin-bottom: 0;
        border: none;
        padding: 0; }

.gensitemap-2-col ul li {
  width: 47%; }

/*
    Default form
*/
.form {
  width: 100%; }
  .form label.form-validation-error input[type="email"],
  .form label.form-validation-error input[type="number"],
  .form label.form-validation-error input[type="search"],
  .form label.form-validation-error input[type="text"],
  .form label.form-validation-error input[type="tel"],
  .form label.form-validation-error input[type="url"],
  .form label.form-validation-error input[type="password"],
  .form label.form-validation-error textarea {
    border-color: #8f251f; }
  .form label.form-validation-error span {
    color: #8f251f; }
  .form label.form-validation-ok span {
    color: #35a429; }
  .form label.form-validation-ok span::after {
    color: #35a429; }
  .form label.form-validation-ok input[type="email"],
  .form label.form-validation-ok input[type="number"],
  .form label.form-validation-ok input[type="search"],
  .form label.form-validation-ok input[type="text"],
  .form label.form-validation-ok input[type="tel"],
  .form label.form-validation-ok input[type="url"],
  .form label.form-validation-ok input[type="password"],
  .form label.form-validation-ok textarea {
    border-color: #35a429; }
  .form input[type="email"],
  .form input[type="number"],
  .form input[type="search"],
  .form input[type="text"],
  .form input[type="tel"],
  .form input[type="url"],
  .form input[type="password"],
  .form textarea,
  .form select {
    background-color: transparent;
    border: none;
    outline: none;
    padding: 10px 14px;
    min-width: 80%;
    border: 1px solid #ddd;
    margin-bottom: 10px;
    /*height: 38px;
        padding: 6px 10px;
        background-color: #fff;
        border: 1px solid #D1D1D1;
        border-radius: 4px;
        box-shadow: none;
        width: 100%;*/ }
  .form input[type="email"],
  .form input[type="number"],
  .form input[type="search"],
  .form input[type="text"],
  .form input[type="tel"],
  .form input[type="url"],
  .form input[type="password"],
  .form textarea {
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none; }
  .form textarea {
    min-height: 65px;
    padding-top: 6px;
    padding-bottom: 6px; }
  .form input[type="email"]:focus,
  .form input[type="number"]:focus,
  .form input[type="search"]:focus,
  .form input[type="text"]:focus,
  .form input[type="tel"]:focus,
  .form input[type="url"]:focus,
  .form input[type="password"]:focus,
  .form textarea:focus,
  .form select:focus {
    outline: 0; }
  .form label {
    position: relative;
    display: block; }
  .form label span.inner-label {
    position: absolute;
    left: 14px;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    display: block;
    margin-bottom: 5px;
    font-weight: 400; }
  .form label.form-req span::after {
    content: " *";
    width: 16px;
    height: 16px;
    color: #8f251f; }
  .form input[type="checkbox"],
  .form input[type="radio"] {
    display: inline; }

.button,
.form button,
.form input[type="submit"],
.form input[type="reset"],
.form input[type="button"] {
  display: inline-block;
  padding: 15px 50px 12px 50px;
  color: #000;
  text-align: center;
  font-size: 14px;
  font-weight: 700;
  line-height: normal;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: #eaeaea;
  border: none;
  cursor: pointer; }

.button:hover,
.form button:hover,
.form input[type="submit"]:hover,
.form input[type="reset"]:hover,
.form input[type="button"]:hover,
.button:focus,
.form button:focus,
.form input[type="submit"]:focus,
.form input[type="reset"]:focus,
.form input[type="button"]:focus {
  outline: 0; }

.form .formcaptcha2 {
  display: none !important; }

/* 
  *  Custom css for the site. Added in the end so that it can overwrite default styles. 
  */
html {
  font-size: 10px; }

body {
  font-size: -webkit-calc(1em + 0.5vw);
  font-size: calc(1em + 0.5vw);
  line-height: -webkit-calc(1.1em + 0.5vw);
  line-height: calc(1.1em + 0.5vw); }

h1 {
  font-size: -webkit-calc(1.2em + 1vw);
  font-size: calc(1.2em + 1vw); }

.floating-list {
  width: 100%; }
  .floating-list div, .floating-list li, .floating-list img {
    display: inline-block; }

#wrapper {
  margin: 10px 50px; }

#wrapper .floating-list {
  display: none; }

#wrapper .col-3 > * {
  width: 31.2%;
  display: inline-block; }

#wrapper .col-2 > * {
  width: 48%;
  display: inline-block; }

#header {
  margin-bottom: 50px;
  padding-top: 20px; }
  #header .s-info {
    color: #999;
    font-size: 0.8em;
    display: block;
    margin: 10px;
    padding: 10px;
    border: 1px solid #bbb; }
  #header nav {
    display: inline-block;
    margin: 40px 0 20px 30px; }
    #header nav ul {
      list-style: none; }
      #header nav ul li {
        display: inline-block;
        position: relative; }
        #header nav ul li.active > a {
          color: #000; }
        #header nav ul li a {
          padding: 5px 15px; }
        #header nav ul li .dropdown {
          display: none;
          position: absolute;
          background-color: #eee;
          padding: 10px;
          min-width: 200px;
          top: 28px; }
  #header .submenu li a {
    font-size: -webkit-calc(8px + 0.5vw);
    font-size: calc(8px + 0.5vw); }

#page {
  min-height: 400px; }
  #page img {
    max-width: 100%; }
  #page .flex-center {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-align-content: center;
        -ms-flex-line-pack: center;
            align-content: center; }

#footer {
  margin-top: 50px;
  border-top: 1px solid #ccc;
  padding-top: 20px;
  padding-bottom: 10px;
  margin-bottom: 10px; }

.block {
  border: 1px solid #ddd;
  padding: 1%;
  margin: 1%; }

/* ==========================================================================
   Site-specific responsive CSS to 1024px-1440px, up to 1024px and 680px-768px 
    
    Use this file for custom site-specific responsive CSS
   ========================================================================== */
/* Site-specific responsive behavior 681px and up */
/* ==========================================================================
    Site-specific responsive CSS to mobile (under 680px)

    Use this file for custom site-specific responsive CSS
   ========================================================================== */
/* Site-specific responsive behavior 680px and down */

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy5zY3NzIiwiaW5jbHVkZXMvX21peGlucy5zY3NzIiwiaW5jbHVkZXMvX25vcm1hbGl6ZS5zY3NzIiwiY3NzLm1pbi5jc3MiLCJpbmNsdWRlcy9faGVscGVycy5zY3NzIiwiaW5jbHVkZXMvX2Nvb2tpZWluZm8uc2NzcyIsImluY2x1ZGVzL19hbmltYXRpb25zLnNjc3MiLCJpbmNsdWRlcy9fZGVmYXVsdC5zY3NzIiwiY3NzX21lZGl1bS5zY3NzIiwiY3NzX21vYmlsZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Z0ZBWWdGO0FDWmhGOztnRkFFZ0Y7QUFRaEY7OztFQUdFO0FBQ0Y7R0FDRSxRQUFRLEVBT1Q7RUFOQztJQUNFLFlBQVc7SUFDWCxlQUFjO0lBQ2QsZUFBYztJQUNkLFlBQVcsRUFDWjs7QURQOEIsaURBQWlEO0FFZGxGLDRFQUE0RTtBQUU1RTtnRkFDZ0Y7QUFFaEY7Ozs7R0FJRztBQUVIO0VBQ0Usa0JBQWlCO0VBQUUsT0FBTztFQUMxQiwyQkFBMEI7RUFBRSxPQUFPO0VBQ25DLCtCQUE4QjtFQUFFLE9BQU8sRUFDeEM7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSxVQUFTLEVBQ1Y7O0FBRUQ7O0dBRUc7QUFFSDs7Ozs7O0VBTUUsZUFBYyxFQUNmOztBQUVEOzs7R0FHRztBQUVIO0VBQ0UsZUFBYztFQUNkLGlCQUFnQixFQUNqQjs7QUFFRDtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUg7OztFQUVPLE9BQU87RUFDWixlQUFjLEVBQ2Y7O0FBRUQ7O0dBRUc7QUFFSDtFQUNFLGlCQUFnQixFQUNqQjs7QUFFRDs7O0dBR0c7QUFFSDtFQUNFLGdDQUF1QjtVQUF2Qix3QkFBdUI7RUFBRSxPQUFPO0VBQ2hDLFVBQVM7RUFBRSxPQUFPO0VBQ2xCLGtCQUFpQjtFQUFFLE9BQU8sRUFDM0I7O0FBRUQ7OztHQUdHO0FBRUg7RUFDRSxrQ0FBaUM7RUFBRSxPQUFPO0VBQzFDLGVBQWM7RUFBRSxP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YTtJQUFiLHFCQUFhO0lBQWIsY0FBYTtJQUNiLDZCQUFzQjtJQUF0Qiw4QkFBc0I7SUFBdEIsK0JBQXNCO1FBQXRCLDJCQUFzQjtZQUF0Qix1QkFBc0I7SUFDdEIseUJBQXVCO0lBQXZCLGdDQUF1QjtRQUF2QixzQkFBdUI7WUFBdkIsd0JBQXVCO0lBQ3ZCLDhCQUFxQjtRQUFyQiwyQkFBcUI7WUFBckIsc0JBQXFCLEVBQ3hCOztBQUlMO0VBQVUsaUJBQWdCO0VBQUUsMkJBQTBCO0VBQUUsa0JBQWlCO0VBQUUscUJBQW9CO0VBQUUsb0JBQW1CLEVBQUk7O0FBRXhIO0VBQVMsdUJBQXNCO0VBQUUsWUFBVztFQUFFLFdBQVUsRUFBSTs7QVF0SDVEOzs7O2dGQUlnRjtBUm9IckQsb0RBQW9EO0FTeEgvRTs7OztnRkFJZ0Y7QVRxSHJELHNEQUFzRCIsImZpbGUiOiJjc3MubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBNYWluIGRlY2xhcmF0aW9uIGFuZCBidWlsZGVyIGZpbGUuIENvbWJpbmVzIG90aGVyIGZpbGVzIGFuZCBzZXRzIGdsb2JhbCB2YXJpYWJsZXMuXHJcblxyXG4gICAgVGhlIG9ubHkgY2hhbmdlcyBpbiB0aGlzIGZpbGUgc2hvdWxkIGJlIHRvIHNldCBkaWZmZXJlbnQgdmFyaWFibGVzIG9yIGFkZCBhZGRpdGlvbmFsIEBpbXBvcnQgXCJ4eHguc2Nzc1wiIHRvIGJlIGluY2x1ZGVkIGluIGVuZCByZXN1bHQuXHJcbiAgICBcclxuICAgIFVzZSBzaXRlLnNjc3MgdG8gd3JpdGUgc2l0ZS1zcGVjaWZpYyBDU1MuXHJcbiAgICBVc2Ugc2l0ZV9tZWRpdW0uc2Nzcy9zaXRlX21vYmlsZS5zY3NzIHRvIHdyaXRlIHJlc3BvbnNpdmUgc2l0ZS1zcGVjaWZpYyBDU1MuXHJcbiAgICBcclxuICAgIFdoZW4gZ3VscCBpcyBydW4gYW5kIHRoZSBzYXNzIGlzIGNvbXBpbGVkLCB0aGlzIHdpbGwgYmUgcnVuIGFuZCB0aGUgaW5jbHVkZWQgZmlsZXMgd2lsbCBiZSBhZGRlZCB0byBpdC5cclxuICAgIFRoZSBmaW5hbCByZXN1bHQgZW5kIHVwIGFzIGNzcy5jc3MgKGluIHRoaXMgZm9sZGVyIGZvciBkZXYsIGluIHd3d3Jvb3QvY3NzIGZvciBwcm9kKS5cclxuXHJcbiAgICBGb3IgY3NzIGluIHN1Yi1mb2xkZXJzIChsaWtlIHVuaW9uIGZvbGRlcnMpLCBtYWtlIHN1cmUgdGhlIGluY2x1ZGVzIGFyZSB0YWtlbiBmcm9tICcuLi9pbmNsdWRlcy94eHgnIGFuZCBub3QgJ2luY2x1ZGVzL3h4eCcuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5AaW1wb3J0IFwiaW5jbHVkZXMvX21peGlucy5zY3NzXCI7IC8qIEhlbHBpbmcgZnVuY3Rpb25zIGZvciBkZWZhdWx0IENTUyBiZWhhdmlvdXIgKi9cclxuQGltcG9ydCBcImluY2x1ZGVzL19ub3JtYWxpemUuc2Nzc1wiOyAvKiBEZWZhdWx0IG5vcm1hbGl6ZXIgKi9cclxuQGltcG9ydCBcImluY2x1ZGVzL19oZWxwZXJzLnNjc3NcIjsgLyogSGVscGluZyBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHF1aWNrIGFuZCBjb21tb24gYmVoYXZpb3VyICguYm9sZCwgLmJsYWNrLCBldGMpICovXHJcbkBpbXBvcnQgXCJpbmNsdWRlcy9fY29va2llaW5mby5zY3NzXCI7IC8qIFN0eWxpbmcgZm9yIHRoZSBjb29raWUgY29uc2VudCBiYW5uZXIgaW4gYm90dG9tIChjbGVhciBjb29raWVzIHRvIGdldCBpdCBiYWNrIGlmIHlvdSd2ZSBwcmVzc2VkICdvaycpICovXHJcbkBpbXBvcnQgXCJpbmNsdWRlcy9fYW5pbWF0aW9ucy5zY3NzXCI7IC8qIENvbnRhaW5zIGFuaW1hdGlvbnMgYXZhaWxhYmxlIHRoYXQgaXMgcnVuIG9uIHJlbmRlciAqL1xyXG5cclxuLypcclxuICogIFZhcmlhYmxlcyB0byBiZSB1c2VkIHdoZW4gZGVzaWduaW5nIG1haW4gY3NzIGluIHNpdGUuc2Nzc1xyXG4gKiAgRm9yIG5ldyBmaWxlcywgZ2V0IGludGVsbGlzZW5zZSBhbmQgcmVjb2duaXRpb24gYnkgYWRkaW5nIHRoaXMgc25pcHBldCBpbiB0aGUgdG9wOiAvLy8gPHJlZmVyZW5jZSBwYXRoPVwiY3NzLnNjc3NcIiAvPiBcclxuICovXHJcbiRmb3JtX2Vycm9yX2NvbG9yIDogIzhmMjUxZjtcclxuJGZvcm1fb2tfY29sb3IgOiAjMzVhNDI5O1xyXG5cclxuJGZvbnRfbWFpbjogJ09wZW4gU2FucycsIHNhbnMtc2VyaWY7XHJcbiRmb250X3NpemVfbWFpbiA6IDE0cHg7XHJcbiRsaW5lX2hlaWdodF9tYWluIDogMS42O1xyXG4gXHJcbiRjb2xvcl90ZXh0IDogIzAwMDtcclxuJGNvbG9yX2xpbms6ICAjMDA2MzYyO1xyXG4kY29sb3JfbGlua19ob3ZlcjogIzAwNDU0NDtcclxuXHJcbiRib2R5X2JnX2NvbG9yOiAjZmZmO1xyXG5cclxuLyogT3RoZXIgZGVmYXVsdCBDU1MgZmlsZXMsIG1haW5seSB3aXRoIGRlZmF1bHQgc3R5bGVzIGZvciBwcmludCwgc2l0ZW1hcCBhbmQgRm9ybXMgKi9cclxuQGltcG9ydCBcImluY2x1ZGVzL19kZWZhdWx0LnNjc3NcIjtcclxuXHJcbiAvKiBcclxuICAqICBDdXN0b20gY3NzIGZvciB0aGUgc2l0ZS4gQWRkZWQgaW4gdGhlIGVuZCBzbyB0aGF0IGl0IGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBzdHlsZXMuIFxyXG4gICovXHJcblxyXG5odG1sIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxufVxyXG5cclxuYm9keSB7XHJcbiAgICAvLyBmb250IGdyb3dzIDAuNXB4IGZvciBldmVyeSAxMDBweCBvZiB2aWV3cG9ydCB3aWR0aFxyXG4gICAgZm9udC1zaXplOiBjYWxjKDFlbSArIDAuNXZ3KTtcclxuICAgIC8vIGxlYWRpbmcgZ3Jvd3MgYWxvbmcgd2l0aCBmb250LFxyXG4gICAgLy8gd2l0aCBhbiBhZGRpdGlvbmFsIDAuMWVtICsgMC41cHggcGVyIDEwMHB4IG9mIHRoZSB2aWV3cG9ydFxyXG4gICAgbGluZS1oZWlnaHQ6IGNhbGMoMS4xZW0gKyAwLjV2dyk7XHJcbn1cclxuXHJcblxyXG5oMSB7XHJcbiAgICBmb250LXNpemU6IGNhbGMoMS4yZW0gKyAxdncpO1xyXG59XHJcblxyXG4uZmxvYXRpbmctbGlzdCB7IFxyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXYsIGxpLCBpbWcge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG59XHJcblxuXHJcbiN3cmFwcGVyIHsgbWFyZ2luOiAxMHB4IDUwcHg7IH1cclxuXHJcbiN3cmFwcGVyIHsgLmZsb2F0aW5nLWxpc3Qge2Rpc3BsYXk6IG5vbmU7fVxyXG4gICAgLmNvbC0zID4gKiB7XHJcbiAgICAgICAgd2lkdGg6IDMxLjIlO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH0gXHJcbiAgICAuY29sLTIgPiAqIHtcclxuICAgICAgICB3aWR0aDogNDglO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgXHJcbiAgICB9XHJcbn1cclxuXHJcbiNoZWFkZXIgeyAucy1pbmZvIHsgY29sb3I6ICM5OTk7IGZvbnQtc2l6ZTogMC44ZW07IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDEwcHg7IHBhZGRpbmc6IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNiYmI7IH1cclxuICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XHJcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcclxuXHJcbiAgICBuYXYge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBtYXJnaW46IDQwcHggMCAyMHB4IDMwcHg7XHJcblxyXG4gICAgICAgIHVsIHtcclxuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgICAgICAgbGkgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgICAgICAmLmFjdGl2ZSA+IGEgeyBjb2xvcjogIzAwMDsgfVxyXG4gICAgICAgICAgICAgICAgIGEgeyBwYWRkaW5nOiA1cHggMTVweDsgfVxyXG4gICAgICAgICAgICAgICAgLmRyb3Bkb3duIHsgZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyBwYWRkaW5nOiAxMHB4OyBtaW4td2lkdGg6IDIwMHB4OyB0b3A6IDI4cHg7ICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnN1Ym1lbnUge1xyXG4gICAgICAgIGxpIGEgeyBmb250LXNpemU6IGNhbGMoOHB4ICsgMC41dncpOyB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiNwYWdlIHsgXHJcbiAgICBtaW4taGVpZ2h0OiA0MDBweDsgXHJcbiAgICBpbWcgeyBtYXgtd2lkdGg6IDEwMCU7fVxyXG4gICAgLmZsZXgtY2VudGVyIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuI2Zvb3RlciB7IG1hcmdpbi10b3A6IDUwcHg7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nLXRvcDogMjBweDsgcGFkZGluZy1ib3R0b206IDEwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7IH1cclxuXHJcbi5ibG9jayB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDElOyBtYXJnaW46IDElOyB9XHJcblxyXG5AaW1wb3J0IFwiY3NzX21lZGl1bS5zY3NzXCI7IC8qIFNpdGUtc3BlY2lmaWMgcmVzcG9uc2l2ZSBiZWhhdmlvciA2ODFweCBhbmQgdXAgKi9cclxuQGltcG9ydCBcImNzc19tb2JpbGUuc2Nzc1wiOyAvKiBTaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgYmVoYXZpb3IgNjgwcHggYW5kIGRvd24gKi9cclxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgTWl4aW5zIGZvciBlYXN5IGFjY2VzcyB0byBkZWZhdWx0IGJlaGF2aW91clxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWl4aW4gdW5zdHlsZWQtbGlzdCB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLypcbiogQ2xlYXJmaXhcbiogQGV4dGVuZCAlY2xlYXJmaXg7XG4qL1xuJWNsZWFyZml4IHtcbiAgKnpvb206IDE7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2Ny4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXHJcblxyXG4vKiBEb2N1bWVudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cclxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpblxyXG4gKiAgICBJRSBvbiBXaW5kb3dzIFBob25lIGFuZCBpbiBpT1MuXHJcbiAqL1xyXG5cclxuaHRtbCB7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cclxuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xyXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xyXG59XHJcblxyXG4vKiBTZWN0aW9uc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gKi9cclxuXHJcbmJvZHkge1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gKi9cclxuXHJcbmFydGljbGUsXHJcbmFzaWRlLFxyXG5mb290ZXIsXHJcbmhlYWRlcixcclxubmF2LFxyXG5zZWN0aW9uIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcclxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cclxuICovXHJcblxyXG5oMSB7XHJcbiAgZm9udC1zaXplOiAyZW07XHJcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcclxufVxyXG5cclxuLyogR3JvdXBpbmcgY29udGVudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cclxuICovXHJcblxyXG5maWdjYXB0aW9uLFxyXG5maWd1cmUsXHJcbm1haW4geyAvKiAxICovXHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXHJcbiAqL1xyXG5cclxuZmlndXJlIHtcclxuICBtYXJnaW46IDFlbSA0MHB4O1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cclxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXHJcbiAqL1xyXG5cclxuaHIge1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXHJcbiAgaGVpZ2h0OiAwOyAvKiAxICovXHJcbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5wcmUge1xyXG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xyXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXHJcbn1cclxuXHJcbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxyXG4gKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXHJcbiAqL1xyXG5cclxuYSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cclxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LSBhbmQgRmlyZWZveCAzOS0uXHJcbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYWJiclt0aXRsZV0ge1xyXG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLyogMiAqL1xyXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cclxuICovXHJcblxyXG5iLFxyXG5zdHJvbmcge1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmNvZGUsXHJcbmtiZCxcclxuc2FtcCB7XHJcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXHJcbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgNC4zLS5cclxuICovXHJcblxyXG5kZm4ge1xyXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cclxuICovXHJcblxyXG5tYXJrIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xyXG4gIGNvbG9yOiAjMDAwO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqL1xyXG5cclxuc21hbGwge1xyXG4gIGZvbnQtc2l6ZTogODAlO1xyXG59XHJcblxyXG4vKipcclxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXHJcbiAqIGFsbCBicm93c2Vycy5cclxuICovXHJcblxyXG5zdWIsXHJcbnN1cCB7XHJcbiAgZm9udC1zaXplOiA3NSU7XHJcbiAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5cclxuc3ViIHtcclxuICBib3R0b206IC0wLjI1ZW07XHJcbn1cclxuXHJcbnN1cCB7XHJcbiAgdG9wOiAtMC41ZW07XHJcbn1cclxuXHJcbi8qIEVtYmVkZGVkIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICovXHJcblxyXG5hdWRpbyxcclxudmlkZW8ge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGlPUyA0LTcuXHJcbiAqL1xyXG5cclxuYXVkaW86bm90KFtjb250cm9sc10pIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG4gIGhlaWdodDogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAtLlxyXG4gKi9cclxuXHJcbmltZyB7XHJcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogSGlkZSB0aGUgb3ZlcmZsb3cgaW4gSUUuXHJcbiAqL1xyXG5cclxuc3ZnOm5vdCg6cm9vdCkge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi8qIEZvcm1zXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cclxuICogMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxyXG4gKi9cclxuXHJcbmJ1dHRvbixcclxuaW5wdXQsXHJcbm9wdGdyb3VwLFxyXG5zZWxlY3QsXHJcbnRleHRhcmVhIHtcclxuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xyXG4gIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXHJcbiAgbWFyZ2luOiAwOyAvKiAyICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICovXHJcblxyXG5idXR0b24sXHJcbmlucHV0IHsgLyogMSAqL1xyXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXHJcbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5idXR0b24sXHJcbnNlbGVjdCB7IC8qIDEgKi9cclxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxyXG4gKiAgICBjb250cm9scyBpbiBBbmRyb2lkIDQuXHJcbiAqIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXHJcblt0eXBlPVwicmVzZXRcIl0sXHJcblt0eXBlPVwic3VibWl0XCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXHJcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxyXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXHJcbiAqL1xyXG5cclxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxyXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcclxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xyXG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5maWVsZHNldCB7XHJcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cclxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxyXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XHJcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbmxlZ2VuZCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXHJcbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cclxuICBtYXgtd2lkdGg6IDEwMCU7IC8qIDEgKi9cclxuICBwYWRkaW5nOiAwOyAvKiAzICovXHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xyXG59XHJcblxyXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXHJcbiAqL1xyXG5cclxucHJvZ3Jlc3Mge1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xyXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cclxuICovXHJcblxyXG50ZXh0YXJlYSB7XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC0uXHJcbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXHJcbiAqL1xyXG5cclxuW3R5cGU9XCJjaGVja2JveFwiXSxcclxuW3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cclxuICovXHJcblxyXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcclxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xyXG4gIGhlaWdodDogYXV0bztcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxyXG4gKiAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cclxuICovXHJcblxyXG5bdHlwZT1cInNlYXJjaFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cclxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGFuZCBjYW5jZWwgYnV0dG9ucyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cclxuICovXHJcblxyXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cclxuICovXHJcblxyXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xyXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cclxufVxyXG5cclxuLyogSW50ZXJhY3RpdmVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qXHJcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxyXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSwgYW5kIEZpcmVmb3guXHJcbiAqL1xyXG5cclxuZGV0YWlscywgLyogMSAqL1xyXG5tZW51IHtcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLypcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cclxuXHJcbnN1bW1hcnkge1xyXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcclxufVxyXG5cclxuLyogU2NyaXB0aW5nXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAqL1xyXG5cclxuY2FudmFzIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cclxuICovXHJcblxyXG50ZW1wbGF0ZSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLyogSGlkZGVuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxyXG4gKi9cclxuXHJcbltoaWRkZW5dIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBNYWluIGRlY2xhcmF0aW9uIGFuZCBidWlsZGVyIGZpbGUuIENvbWJpbmVzIG90aGVyIGZpbGVzIGFuZCBzZXRzIGdsb2JhbCB2YXJpYWJsZXMuXHJcblxyXG4gICAgVGhlIG9ubHkgY2hhbmdlcyBpbiB0aGlzIGZpbGUgc2hvdWxkIGJlIHRvIHNldCBkaWZmZXJlbnQgdmFyaWFibGVzIG9yIGFkZCBhZGRpdGlvbmFsIEBpbXBvcnQgXCJ4eHguc2Nzc1wiIHRvIGJlIGluY2x1ZGVkIGluIGVuZCByZXN1bHQuXHJcbiAgICBcclxuICAgIFVzZSBzaXRlLnNjc3MgdG8gd3JpdGUgc2l0ZS1zcGVjaWZpYyBDU1MuXHJcbiAgICBVc2Ugc2l0ZV9tZWRpdW0uc2Nzcy9zaXRlX21vYmlsZS5zY3NzIHRvIHdyaXRlIHJlc3BvbnNpdmUgc2l0ZS1zcGVjaWZpYyBDU1MuXHJcbiAgICBcclxuICAgIFdoZW4gZ3VscCBpcyBydW4gYW5kIHRoZSBzYXNzIGlzIGNvbXBpbGVkLCB0aGlzIHdpbGwgYmUgcnVuIGFuZCB0aGUgaW5jbHVkZWQgZmlsZXMgd2lsbCBiZSBhZGRlZCB0byBpdC5cclxuICAgIFRoZSBmaW5hbCByZXN1bHQgZW5kIHVwIGFzIGNzcy5jc3MgKGluIHRoaXMgZm9sZGVyIGZvciBkZXYsIGluIHd3d3Jvb3QvY3NzIGZvciBwcm9kKS5cclxuXHJcbiAgICBGb3IgY3NzIGluIHN1Yi1mb2xkZXJzIChsaWtlIHVuaW9uIGZvbGRlcnMpLCBtYWtlIHN1cmUgdGhlIGluY2x1ZGVzIGFyZSB0YWtlbiBmcm9tICcuLi9pbmNsdWRlcy94eHgnIGFuZCBub3QgJ2luY2x1ZGVzL3h4eCcuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBNaXhpbnMgZm9yIGVhc3kgYWNjZXNzIHRvIGRlZmF1bHQgYmVoYXZpb3VyXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKlxuKiBDbGVhcmZpeFxuKiBAZXh0ZW5kICVjbGVhcmZpeDtcbiovXG4jZXctY29va2llaW5mby1jb250YWluZXIge1xuICAqem9vbTogMTsgfVxuICAjZXctY29va2llaW5mby1jb250YWluZXI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIGNsZWFyOiBib3RoOyB9XG5cbi8qIEhlbHBpbmcgZnVuY3Rpb25zIGZvciBkZWZhdWx0IENTUyBiZWhhdmlvdXIgKi9cbi8qISBub3JtYWxpemUuY3NzIHY3LjAuMCB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cbi8qIERvY3VtZW50XHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluXHJcbiAqICAgIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cclxuICovXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAyICovIH1cblxuLyogU2VjdGlvbnNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cclxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICovXG5hcnRpY2xlLFxuYXNpZGUsXG5mb290ZXIsXG5oZWFkZXIsXG5uYXYsXG5zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcclxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cclxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXHJcbiAqL1xuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbm1haW4ge1xuICAvKiAxICovXG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgbWFyZ2luIGluIElFIDguXHJcbiAqL1xuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDsgfVxuXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cclxuICogMi4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZSBhbmQgSUUuXHJcbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMSAqL1xuICBoZWlnaHQ6IDA7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cbnByZSB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqLyB9XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxyXG4gKiAyLiBSZW1vdmUgZ2FwcyBpbiBsaW5rcyB1bmRlcmxpbmUgaW4gaU9TIDgrIGFuZCBTYWZhcmkgOCsuXHJcbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny0gYW5kIEZpcmVmb3ggMzktLlxyXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxyXG4gKi9cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgLyogMSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgLyogMiAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cclxuICovXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXHJcbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cclxuICovXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqLyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXHJcbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgOS0uXHJcbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cclxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxyXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cclxuICogYWxsIGJyb3dzZXJzLlxyXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICovXG5hdWRpbyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBpT1MgNC03LlxyXG4gKi9cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDsgfVxuXG4vKipcclxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXHJcbiAqL1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyB9XG5cbi8qKlxyXG4gKiBIaWRlIHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICovXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyogRm9ybXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxyXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxyXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXHJcbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlO1xuICAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1O1xuICAvKiAxICovXG4gIG1hcmdpbjogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxyXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cclxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cclxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IH1cblxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxyXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXHJcbiAqL1xuYnV0dG9uLFxuc2VsZWN0IHtcbiAgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcclxuICogMS4gUHJldmVudCBhIFdlYktpdCBidWcgd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gIGFuZCBgdmlkZW9gXHJcbiAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cclxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cclxuICovXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDIgKi8gfVxuXG4vKipcclxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cclxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDsgfVxuXG4vKipcclxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxyXG4gKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0OyB9XG5cbi8qKlxyXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXHJcbiAqL1xuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07IH1cblxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXHJcbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cclxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxyXG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cclxuICovXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0O1xuICAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIC8qIDEgKi8gfVxuXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXHJcbiAqL1xucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAvKiAyICovIH1cblxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXHJcbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bzsgfVxuXG4vKipcclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxyXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAtLlxyXG4gKi9cblt0eXBlPVwiY2hlY2tib3hcIl0sXG5bdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXHJcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cclxuICovXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvOyB9XG5cbi8qKlxyXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cclxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXHJcbiAqL1xuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgLyogMiAqLyB9XG5cbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxyXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLyoqXHJcbiAqIDEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXHJcbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cclxuICovXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqLyB9XG5cbi8qIEludGVyYWN0aXZlXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cclxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxyXG4gKi9cbmRldGFpbHMsXG5tZW51IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLypcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxyXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cblxuLyogU2NyaXB0aW5nXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXHJcbiAqL1xuY2FudmFzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbi8qKlxyXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cclxuICovXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLyogSGlkZGVuXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcclxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTAtLlxyXG4gKi9cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBEZWZhdWx0IG5vcm1hbGl6ZXIgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhlbHBlciBjbGFzc2VzIHN0eWxlc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogSW1hZ2UgcmVwbGFjZW1lbnQgKi9cbi5pciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gICp0ZXh0LWluZGVudDogLTk5OTlweDsgfVxuXG4uaXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDEwMCU7IH1cblxuLyogSGlkZGVuICovXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cblxuLyogSW52aXNpYmxlICovXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG5cbi8qIENsZWFyZml4ICovXG4uY2xlYXJmaXg6YmVmb3JlLCAuY2xlYXJmaXg6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgZGlzcGxheTogdGFibGU7IH1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7IH1cblxuLmNsZWFyZml4IHtcbiAgKnpvb206IDE7IH1cblxuLmJvbGQge1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbi5ibGFjayB7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qIENsZWFyICovXG4uY2xlYXIge1xuICBjbGVhcjogYm90aDsgfVxuXG4vKiBIZWxwaW5nIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcXVpY2sgYW5kIGNvbW1vbiBiZWhhdmlvdXIgKC5ib2xkLCAuYmxhY2ssIGV0YykgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENvb2tpZSBjb250YWluZXIgaW4gYm90dG9tIGFza2luZyBmb3IgY29va2llIGFuZCBpbnRlZ3JpdHkgY29uc2VudFxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2V3LWNvb2tpZWluZm8tY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgY29sb3I6ICM1NTU1NTU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxNTVkZWcsICNkOGQ4ZDggMCUsICNmM2YzZjMgMTAwJSk7XG4gIHotaW5kZXg6IDk5OTk7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICBwYWRkaW5nOiAxNXB4IDBweDtcbiAgZm9udC1mYW1pbHk6IFwiQXJpYWxcIjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMS42O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYzsgfVxuICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcbiAgICAjZXctY29va2llaW5mby1jb250YWluZXIge1xuICAgICAgcGFkZGluZy10b3A6IDVweDsgfSB9XG4gICNldy1jb29raWVpbmZvLWNvbnRhaW5lci5oaWRkZW4sICNldy1jb29raWVpbmZvLWNvbnRhaW5lciAuaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gICNldy1jb29raWVpbmZvLWNvbnRhaW5lciAuaW5uZXIge1xuICAgIHBhZGRpbmc6IDAgMjVweDsgfVxuICAgICNldy1jb29raWVpbmZvLWNvbnRhaW5lciAuaW5uZXIgc3BhbiB7XG4gICAgICBwYWRkaW5nOiA3cHggMCAwO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxOyB9XG4gICAgICAjZXctY29va2llaW5mby1jb250YWluZXIgLmlubmVyIHNwYW4gYSB7XG4gICAgICAgIGNvbG9yOiAjMDAwOyB9XG4gICAgICAgICNldy1jb29raWVpbmZvLWNvbnRhaW5lciAuaW5uZXIgc3BhbiBhOmhvdmVyIHtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgI2V3LWNvb2tpZWluZm8tY29udGFpbmVyICNldy1jb29raWVpbmZvLWJ1dHRvbi1vayB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICM1NTU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmc6IDJweCAyNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAvKmJvcmRlcjogMXB4IHNvbGlkICMyZWFlMjc7Ki9cbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICAgIGJhY2tncm91bmQ6ICNmOWY5Zjk7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBlYXNlLWluLW91dDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHdpZHRoOiBhdXRvOyB9XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG4gICAgICAjZXctY29va2llaW5mby1jb250YWluZXIgI2V3LWNvb2tpZWluZm8tYnV0dG9uLW9rIHtcbiAgICAgICAgbWFyZ2luOiA0cHggMDsgfSB9XG4gICAgI2V3LWNvb2tpZWluZm8tY29udGFpbmVyICNldy1jb29raWVpbmZvLWJ1dHRvbi1vazpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzU1NTtcbiAgICAgIGNvbG9yOiAjZmZmOyB9XG5cbi8qIFN0eWxpbmcgZm9yIHRoZSBjb29raWUgY29uc2VudCBiYW5uZXIgaW4gYm90dG9tIChjbGVhciBjb29raWVzIHRvIGdldCBpdCBiYWNrIGlmIHlvdSd2ZSBwcmVzc2VkICdvaycpICovXG5Aa2V5ZnJhbWVzIGJvdW5jZUluUmlnaHQge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTsgfVxuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDAwcHgsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwMHB4LCAwLCAwKTsgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNXB4LCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNXB4LCAwLCAwKTsgfVxuICA3NSUge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApOyB9XG4gIDkwJSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01cHgsIDAsIDApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTVweCwgMCwgMCk7IH1cbiAgdG8ge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9IH1cblxuLyogQ29udGFpbnMgYW5pbWF0aW9ucyBhdmFpbGFibGUgdGhhdCBpcyBydW4gb24gcmVuZGVyICovXG4vKlxyXG4gKiAgVmFyaWFibGVzIHRvIGJlIHVzZWQgd2hlbiBkZXNpZ25pbmcgbWFpbiBjc3MgaW4gc2l0ZS5zY3NzXHJcbiAqICBGb3IgbmV3IGZpbGVzLCBnZXQgaW50ZWxsaXNlbnNlIGFuZCByZWNvZ25pdGlvbiBieSBhZGRpbmcgdGhpcyBzbmlwcGV0IGluIHRoZSB0b3A6IC8vLyA8cmVmZXJlbmNlIHBhdGg9XCJjc3Muc2Nzc1wiIC8+IFxyXG4gKi9cbi8qIE90aGVyIGRlZmF1bHQgQ1NTIGZpbGVzLCBtYWlubHkgd2l0aCBkZWZhdWx0IHN0eWxlcyBmb3IgcHJpbnQsIHNpdGVtYXAgYW5kIEZvcm1zICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBEZWZhdWx0IGJhc2UgLSBTb21lIGJhc2Ugc2V0dGluZ3MsIHNpdGVtYXAgYW5kIGZvcm1cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIGFwcGx5IGEgbmF0dXJhbCBib3ggbGF5b3V0IG1vZGVsIHRvIGFsbCBlbGVtZW50cywgYnV0IGFsbG93aW5nIGNvbXBvbmVudHMgdG8gY2hhbmdlICovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICBodG1sICosIGh0bWwgKjpiZWZvcmUsIGh0bWwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6ICMwMDA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuYSwgYnV0dG9uIHtcbiAgY29sb3I6ICMwMDYzNjI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICBhOmhvdmVyLCBhOmZvY3VzLCBhOmFjdGl2ZSwgYnV0dG9uOmhvdmVyLCBidXR0b246Zm9jdXMsIGJ1dHRvbjphY3RpdmUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgY29sb3I6ICMwMDQ1NDQ7IH1cblxuYm9keSwgaW5wdXQsIGJ1dHRvbiB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZjsgfVxuXG4vKnNlbGVjdDo6LW1zLWV4cGFuZCB7ZGlzcGxheTogbm9uZTt9XHJcbmlucHV0OjotbXMtY2xlYXIgeyBkaXNwbGF5OiBub25lO30qL1xuLyogTWVkaWEgcHJpbnQgKi9cbkBtZWRpYSBwcmludCB7XG4gICoge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICBhLCBhOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGFbaHJlZl06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiOyB9XG4gIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cih0aXRsZSkgXCIpXCI7IH1cbiAgLmlyIGE6YWZ0ZXIsIGFbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTphZnRlciwgYVtocmVmXj1cIiNcIl06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IH1cbiAgcHJlLCBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG4gIHRyLCBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIEBwYWdlIHtcbiAgICBtYXJnaW46IDAuNWNtOyB9XG4gIHAsIGgyLCBoMyB7XG4gICAgb3JwaGFuczogMztcbiAgICB3aWRvd3M6IDM7IH1cbiAgaDIsIGgzIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfSB9XG5cbi8qIERlZmF1bHQgc2l0ZW1hcCAqL1xuLmdlbnNpdGVtYXAgdWwge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cbiAgLmdlbnNpdGVtYXAgdWwgbGkge1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDIlO1xuICAgIHdpZHRoOiAzMC4zMzMzMzMzMzMlO1xuICAgIG1hcmdpbjogMCAxLjUlIDMlIDEuNSU7XG4gICAgYmFja2dyb3VuZDogI2ZmZjsgfVxuICAgIC5nZW5zaXRlbWFwIHVsIGxpIGxpIGEge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgICAuZ2Vuc2l0ZW1hcCB1bCBsaSBsaSBhOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gICAgLmdlbnNpdGVtYXAgdWwgbGkubGFzdCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgICAuZ2Vuc2l0ZW1hcCB1bCBsaSB1bCB7XG4gICAgICBib3JkZXItdG9wOiAxcHggZG90dGVkICNkZmRmZGY7XG4gICAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgbWFyZ2luLXRvcDogNXB4OyB9XG4gICAgICAuZ2Vuc2l0ZW1hcCB1bCBsaSB1bCB1bCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgICAgIC5nZW5zaXRlbWFwIHVsIGxpIHVsIGxpIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDRweCAwO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAwOyB9XG4gICAgICAuZ2Vuc2l0ZW1hcCB1bCBsaSB1bCB1bCBsaSB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNSU7IH1cbiAgICAgIC5nZW5zaXRlbWFwIHVsIGxpIHVsIGxpIGEge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDsgfVxuXG4uZ2Vuc2l0ZW1hcC0yLWNvbCB1bCBsaSB7XG4gIHdpZHRoOiA0NyU7IH1cblxuLypcclxuICAgIERlZmF1bHQgZm9ybVxyXG4qL1xuLmZvcm0ge1xuICB3aWR0aDogMTAwJTsgfVxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXG4gIC5mb3JtIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1lcnJvciBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXG4gIC5mb3JtIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1lcnJvciBpbnB1dFt0eXBlPVwidXJsXCJdLFxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgdGV4dGFyZWEge1xuICAgIGJvcmRlci1jb2xvcjogIzhmMjUxZjsgfVxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3Igc3BhbiB7XG4gICAgY29sb3I6ICM4ZjI1MWY7IH1cbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIHNwYW4ge1xuICAgIGNvbG9yOiAjMzVhNDI5OyB9XG4gIC5mb3JtIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBzcGFuOjphZnRlciB7XG4gICAgY29sb3I6ICMzNWE0Mjk7IH1cbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4gIC5mb3JtIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4gIC5mb3JtIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBpbnB1dFt0eXBlPVwidGVsXCJdLFxuICAuZm9ybSBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgaW5wdXRbdHlwZT1cInVybFwiXSxcbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbiAgLmZvcm0gbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIHRleHRhcmVhIHtcbiAgICBib3JkZXItY29sb3I6ICMzNWE0Mjk7IH1cbiAgLmZvcm0gaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuICAuZm9ybSBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxuICAuZm9ybSBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuICAuZm9ybSBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInRlbFwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInVybFwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuICAuZm9ybSB0ZXh0YXJlYSxcbiAgLmZvcm0gc2VsZWN0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XG4gICAgbWluLXdpZHRoOiA4MCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIC8qaGVpZ2h0OiAzOHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0QxRDFEMTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICB3aWR0aDogMTAwJTsqLyB9XG4gIC5mb3JtIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInRleHRcIl0sXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJ1cmxcIl0sXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbiAgLmZvcm0gdGV4dGFyZWEge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7IH1cbiAgLmZvcm0gdGV4dGFyZWEge1xuICAgIG1pbi1oZWlnaHQ6IDY1cHg7XG4gICAgcGFkZGluZy10b3A6IDZweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNnB4OyB9XG4gIC5mb3JtIGlucHV0W3R5cGU9XCJlbWFpbFwiXTpmb2N1cyxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cIm51bWJlclwiXTpmb2N1cyxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcbiAgLmZvcm0gaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJ0ZWxcIl06Zm9jdXMsXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcbiAgLmZvcm0gdGV4dGFyZWE6Zm9jdXMsXG4gIC5mb3JtIHNlbGVjdDpmb2N1cyB7XG4gICAgb3V0bGluZTogMDsgfVxuICAuZm9ybSBsYWJlbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5mb3JtIGxhYmVsIHNwYW4uaW5uZXItbGFiZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxNHB4O1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDsgfVxuICAuZm9ybSBsYWJlbC5mb3JtLXJlcSBzcGFuOjphZnRlciB7XG4gICAgY29udGVudDogXCIgKlwiO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBjb2xvcjogIzhmMjUxZjsgfVxuICAuZm9ybSBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG4gIC5mb3JtIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgZGlzcGxheTogaW5saW5lOyB9XG5cbi5idXR0b24sXG4uZm9ybSBidXR0b24sXG4uZm9ybSBpbnB1dFt0eXBlPVwic3VibWl0XCJdLFxuLmZvcm0gaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLmZvcm0gaW5wdXRbdHlwZT1cImJ1dHRvblwiXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMTVweCA1MHB4IDEycHggNTBweDtcbiAgY29sb3I6ICMwMDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG5cbi5idXR0b246aG92ZXIsXG4uZm9ybSBidXR0b246aG92ZXIsXG4uZm9ybSBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyLFxuLmZvcm0gaW5wdXRbdHlwZT1cInJlc2V0XCJdOmhvdmVyLFxuLmZvcm0gaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3Zlcixcbi5idXR0b246Zm9jdXMsXG4uZm9ybSBidXR0b246Zm9jdXMsXG4uZm9ybSBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxuLmZvcm0gaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxuLmZvcm0gaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpmb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLmZvcm0gLmZvcm1jYXB0Y2hhMiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKiBcclxuICAqICBDdXN0b20gY3NzIGZvciB0aGUgc2l0ZS4gQWRkZWQgaW4gdGhlIGVuZCBzbyB0aGF0IGl0IGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBzdHlsZXMuIFxyXG4gICovXG5odG1sIHtcbiAgZm9udC1zaXplOiAxMHB4OyB9XG5cbmJvZHkge1xuICBmb250LXNpemU6IGNhbGMoMWVtICsgMC41dncpO1xuICBsaW5lLWhlaWdodDogY2FsYygxLjFlbSArIDAuNXZ3KTsgfVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogY2FsYygxLjJlbSArIDF2dyk7IH1cblxuLmZsb2F0aW5nLWxpc3Qge1xuICB3aWR0aDogMTAwJTsgfVxuICAuZmxvYXRpbmctbGlzdCBkaXYsIC5mbG9hdGluZy1saXN0IGxpLCAuZmxvYXRpbmctbGlzdCBpbWcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4jd3JhcHBlciB7XG4gIG1hcmdpbjogMTBweCA1MHB4OyB9XG5cbiN3cmFwcGVyIC5mbG9hdGluZy1saXN0IHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4jd3JhcHBlciAuY29sLTMgPiAqIHtcbiAgd2lkdGg6IDMxLjIlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuI3dyYXBwZXIgLmNvbC0yID4gKiB7XG4gIHdpZHRoOiA0OCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4jaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogNTBweDtcbiAgcGFkZGluZy10b3A6IDIwcHg7IH1cbiAgI2hlYWRlciAucy1pbmZvIHtcbiAgICBjb2xvcjogIzk5OTtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMTBweDtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNiYmI7IH1cbiAgI2hlYWRlciBuYXYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDQwcHggMCAyMHB4IDMwcHg7IH1cbiAgICAjaGVhZGVyIG5hdiB1bCB7XG4gICAgICBsaXN0LXN0eWxlOiBub25lOyB9XG4gICAgICAjaGVhZGVyIG5hdiB1bCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgICAgICNoZWFkZXIgbmF2IHVsIGxpLmFjdGl2ZSA+IGEge1xuICAgICAgICAgIGNvbG9yOiAjMDAwOyB9XG4gICAgICAgICNoZWFkZXIgbmF2IHVsIGxpIGEge1xuICAgICAgICAgIHBhZGRpbmc6IDVweCAxNXB4OyB9XG4gICAgICAgICNoZWFkZXIgbmF2IHVsIGxpIC5kcm9wZG93biB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbiAgICAgICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICAgICAgdG9wOiAyOHB4OyB9XG4gICNoZWFkZXIgLnN1Ym1lbnUgbGkgYSB7XG4gICAgZm9udC1zaXplOiBjYWxjKDhweCArIDAuNXZ3KTsgfVxuXG4jcGFnZSB7XG4gIG1pbi1oZWlnaHQ6IDQwMHB4OyB9XG4gICNwYWdlIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyB9XG4gICNwYWdlIC5mbGV4LWNlbnRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsgfVxuXG4jZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XG4gIHBhZGRpbmctdG9wOiAyMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDsgfVxuXG4uYmxvY2sge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBwYWRkaW5nOiAxJTtcbiAgbWFyZ2luOiAxJTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgQ1NTIHRvIDEwMjRweC0xNDQwcHgsIHVwIHRvIDEwMjRweCBhbmQgNjgwcHgtNzY4cHggXHJcbiAgICBcclxuICAgIFVzZSB0aGlzIGZpbGUgZm9yIGN1c3RvbSBzaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgQ1NTXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBTaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgYmVoYXZpb3IgNjgxcHggYW5kIHVwICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgU2l0ZS1zcGVjaWZpYyByZXNwb25zaXZlIENTUyB0byBtb2JpbGUgKHVuZGVyIDY4MHB4KVxyXG5cclxuICAgIFVzZSB0aGlzIGZpbGUgZm9yIGN1c3RvbSBzaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgQ1NTXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBTaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgYmVoYXZpb3IgNjgwcHggYW5kIGRvd24gKi9cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhlbHBlciBjbGFzc2VzIHN0eWxlc1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuXHJcbi8qIEltYWdlIHJlcGxhY2VtZW50ICovXHJcbi5pciB7YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgKnRleHQtaW5kZW50OiAtOTk5OXB4O31cclxuLmlyOmJlZm9yZSB7Y29udGVudDogXCJcIjsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAwOyBoZWlnaHQ6IDEwMCU7fVxyXG5cclxuLyogSGlkZGVuICovXHJcbi5oaWRkZW4ge2Rpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO31cclxuXHJcbi8qIEludmlzaWJsZSAqL1xyXG4uaW52aXNpYmxlIHt2aXNpYmlsaXR5OiBoaWRkZW47fVxyXG5cclxuLyogQ2xlYXJmaXggKi9cclxuLmNsZWFyZml4OmJlZm9yZSwgLmNsZWFyZml4OmFmdGVyIHtjb250ZW50OiBcIiBcIjsgZGlzcGxheTogdGFibGU7fVxyXG4uY2xlYXJmaXg6YWZ0ZXIge2NsZWFyOiBib3RoO31cclxuLmNsZWFyZml4IHsqem9vbTogMTt9XHJcblxyXG4vL01vZGlmaWVyc1xyXG4uYm9sZCB7IGZvbnQtd2VpZ2h0OiA3MDA7IH1cclxuXHJcbi5ibGFjayB7IGNvbG9yOiAjMDAwOyB9XHJcblxyXG4vKiBDbGVhciAqL1xyXG4uY2xlYXIge2NsZWFyOiBib3RoO30iLCLvu78vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBDb29raWUgY29udGFpbmVyIGluIGJvdHRvbSBhc2tpbmcgZm9yIGNvb2tpZSBhbmQgaW50ZWdyaXR5IGNvbnNlbnRcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbiNldy1jb29raWVpbmZvLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGNvbG9yOiAjNTU1NTU1O1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDE1NWRlZywgI2Q4ZDhkOCAwJSwjZjNmM2YzIDEwMCUpO1xyXG4gICAgei1pbmRleDogOTk5OTtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBwYWRkaW5nOiAxNXB4IDBweDtcclxuICAgIGZvbnQtZmFtaWx5OiBcIkFyaWFsXCI7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMS42O1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XHJcbiAgICBAZXh0ZW5kICVjbGVhcmZpeDtcclxuXHJcbiAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcclxuICAgICAgICBwYWRkaW5nLXRvcDogNXB4O1xyXG4gICAgfVxyXG5cclxuICAgICYuaGlkZGVuLCAuaGlkZGVuIHsgZGlzcGxheTogbm9uZTsgfVxyXG5cclxuICAgIC5pbm5lciB7XHJcbiAgICAgICAgcGFkZGluZzogMCAyNXB4O1xyXG5cclxuICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgcGFkZGluZzogN3B4IDAgMDtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcclxuXHJcbiAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMDA7XHJcblxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICNldy1jb29raWVpbmZvLWJ1dHRvbi1vayB7XHJcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgY29sb3I6ICM1NTU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHBhZGRpbmc6IDJweCAyNXB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAvKmJvcmRlcjogMXB4IHNvbGlkICMyZWFlMjc7Ki9cclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xyXG4gICAgIGJhY2tncm91bmQ6ICNmOWY5Zjk7XHJcbiAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAzMDBtcyBlYXNlLWluLW91dDtcclxuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHtcclxuICAgICAgICAgICAgbWFyZ2luOiA0cHggMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1NTU7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCLvu79Aa2V5ZnJhbWVzIGJvdW5jZUluUmlnaHQge1xyXG4gICAgZnJvbSwgNjAlLCA3NSUsIDkwJSwgdG8ge1xyXG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XHJcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XHJcbiAgICB9XHJcbiAgICBmcm9tIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDAwcHgsIDAsIDApO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwMHB4LCAwLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICA2MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNXB4LCAwLCAwKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yNXB4LCAwLCAwKTtcclxuICAgIH1cclxuXHJcbiAgICA3NSUge1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApO1xyXG4gICAgfVxyXG5cclxuICAgIDkwJSB7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01cHgsIDAsIDApO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTVweCwgMCwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG8ge1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xyXG4gICAgfVxyXG59IiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL2Nzcy5zY3NzXCIgLz5cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIERlZmF1bHQgYmFzZSAtIFNvbWUgYmFzZSBzZXR0aW5ncywgc2l0ZW1hcCBhbmQgZm9ybVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyogYXBwbHkgYSBuYXR1cmFsIGJveCBsYXlvdXQgbW9kZWwgdG8gYWxsIGVsZW1lbnRzLCBidXQgYWxsb3dpbmcgY29tcG9uZW50cyB0byBjaGFuZ2UgKi9cclxuaHRtbCB7Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHtib3gtc2l6aW5nOiBpbmhlcml0O31cclxufVxyXG5cclxuYm9keSB7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnRfbWFpbjtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnRfc2l6ZV9tYWluO1xyXG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lX2hlaWdodF9tYWluO1xyXG4gICAgY29sb3I6ICRjb2xvcl90ZXh0O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHlfYmdfY29sb3I7XHJcbn1cclxuXHJcbmEsYnV0dG9uIHtcclxuICAgIGNvbG9yOiAkY29sb3JfbGluaztcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICY6aG92ZXIsJjpmb2N1cywmOmFjdGl2ZXtcclxuICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgIGNvbG9yOiAkY29sb3JfbGlua19ob3ZlcjtcclxuICAgIH1cclxufVxyXG5cclxuYm9keSwgaW5wdXQsIGJ1dHRvbiB7LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7Zm9udC1mYW1pbHk6ICRmb250X21haW47fVxyXG5cclxuLypzZWxlY3Q6Oi1tcy1leHBhbmQge2Rpc3BsYXk6IG5vbmU7fVxyXG5pbnB1dDo6LW1zLWNsZWFyIHsgZGlzcGxheTogbm9uZTt9Ki9cclxuXHJcbi8qIE1lZGlhIHByaW50ICovXHJcbkBtZWRpYSBwcmludCB7XHJcbiAgICAqIHtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7fVxyXG4gICAgYSwgYTp2aXNpdGVkIHt0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9XHJcbiAgICBhW2hyZWZdOmFmdGVyIHtjb250ZW50OiBcIiAoXCIgYXR0cihocmVmKSBcIilcIjt9XHJcbiAgICBhYmJyW3RpdGxlXTphZnRlciB7Y29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO31cclxuICAgIC5pciBhOmFmdGVyLCBhW2hyZWZePVwiamF2YXNjcmlwdDpcIl06YWZ0ZXIsIGFbaHJlZl49XCIjXCJdOmFmdGVyIHtjb250ZW50OiBcIlwiO31cclxuICAgIHByZSwgYmxvY2txdW90ZSB7Ym9yZGVyOiAxcHggc29saWQgIzk5OTsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XHJcbiAgICB0aGVhZCB7ZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO31cclxuICAgIHRyLCBpbWcge3BhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDt9XHJcbiAgICBpbWcge21heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O31cclxuICAgIEBwYWdlIHttYXJnaW46IDAuNWNtO31cclxuICAgIHAsIGgyLCBoMyB7b3JwaGFuczogMzsgd2lkb3dzOiAzO31cclxuICAgIGgyLCBoMyB7cGFnZS1icmVhay1hZnRlcjogYXZvaWQ7fVxyXG59XHJcblxyXG5cclxuLyogRGVmYXVsdCBzaXRlbWFwICovXHJcbi5nZW5zaXRlbWFwIHVsIHtcclxuICAgIEBpbmNsdWRlIHVuc3R5bGVkLWxpc3Q7XHJcbiAgICBsaSB7IFxyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAxcHggcmdiYSgwLDAsMCwwLjMpOyBkaXNwbGF5OiBibG9jazsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmc6IDIlOyB3aWR0aDogMzAuMzMzMzMzMzMzJTsgbWFyZ2luOiAwIDEuNSUgMyUgMS41JTsgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgICAgbGkgYSB7Zm9udC1zaXplOiAkZm9udF9zaXplX21haW4rMjsgZGlzcGxheTogYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTt9XHJcbiAgICAgICAgIGxpIGE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO31cclxuICAgICAgICAgJi5sYXN0IHttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgIFxyXG4gICAgICAgICB1bCB7Ym9yZGVyLXRvcDogMXB4IGRvdHRlZCAjZGZkZmRmOyBwYWRkaW5nLXRvcDogNXB4OyBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgICAgIHVsIHtib3JkZXI6IG5vbmU7IHBhZGRpbmctdG9wOiAwOyBtYXJnaW4tdG9wOiAwO31cclxuICAgICAgICAgICAgbGkge2Zsb2F0OiBub25lOyBib3gtc2hhZG93OiBub25lOyBwYWRkaW5nOiA0cHggMDsgd2lkdGg6IGF1dG87IG1hcmdpbjogMDt9XHJcbiAgICAgICAgICAgIHVsIGxpIHtwYWRkaW5nLWxlZnQ6IDUlO31cclxuICAgICAgICAgICAgbGkgYSB7Zm9udC1zaXplOiAkZm9udF9zaXplX21haW47IG1hcmdpbi1ib3R0b206IDA7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMDt9XHJcbiAgICAgICAgIH1cclxuICAgICB9XHJcbn1cclxuLmdlbnNpdGVtYXAtMi1jb2wgdWwgbGkge3dpZHRoOiA0NyU7fVxyXG5cclxuLypcclxuICAgIERlZmF1bHQgZm9ybVxyXG4qL1xyXG4uZm9ybSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcclxuICAgIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1lcnJvciBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuICAgIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1lcnJvciBpbnB1dFt0eXBlPVwidGVsXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIGlucHV0W3R5cGU9XCJ1cmxcIl0sXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tZXJyb3IgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIHRleHRhcmVhIHtcclxuICAgICAgICBib3JkZXItY29sb3I6ICRmb3JtX2Vycm9yX2NvbG9yO1xyXG4gICAgfVxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLWVycm9yIHNwYW4ge1xyXG4gICAgICAgIGNvbG9yOiAkZm9ybV9lcnJvcl9jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgc3BhbiB7Y29sb3I6ICRmb3JtX29rX2NvbG9yO31cclxuICAgIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBzcGFuOjphZnRlciB7Y29sb3I6ICRmb3JtX29rX2NvbG9yO31cclxuXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgaW5wdXRbdHlwZT1cInNlYXJjaFwiXSxcclxuICAgIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuICAgIGxhYmVsLmZvcm0tdmFsaWRhdGlvbi1vayBpbnB1dFt0eXBlPVwidGVsXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIGlucHV0W3R5cGU9XCJ1cmxcIl0sXHJcbiAgICBsYWJlbC5mb3JtLXZhbGlkYXRpb24tb2sgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4gICAgbGFiZWwuZm9ybS12YWxpZGF0aW9uLW9rIHRleHRhcmVhIHtcclxuICAgICAgICBib3JkZXItY29sb3I6ICRmb3JtX29rX2NvbG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwidGVsXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInVybFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuICAgIHRleHRhcmVhLFxyXG4gICAgc2VsZWN0IHtcclxuICAgICAgICAvL2hlaWdodDogMTAwJTtcclxuICAgICAgICAvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAvL2xlZnQ6IDA7XHJcbiAgICAgICAgLy90b3A6IDA7XHJcbiAgICAgICAgLy93aWR0aDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogODAlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgLypoZWlnaHQ6IDM4cHg7XHJcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRDFEMUQxO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlOyovXHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJ0ZWxcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwidXJsXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICB9XHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgICAgbWluLWhlaWdodDogNjVweDtcclxuICAgICAgICBwYWRkaW5nLXRvcDogNnB4O1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA2cHg7XHJcbiAgICB9XHJcbiAgICBpbnB1dFt0eXBlPVwiZW1haWxcIl06Zm9jdXMsXHJcbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzLFxyXG4gICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cyxcclxuICAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmZvY3VzLFxyXG4gICAgaW5wdXRbdHlwZT1cInRlbFwiXTpmb2N1cyxcclxuICAgIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXHJcbiAgICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Zm9jdXMsXHJcbiAgICB0ZXh0YXJlYTpmb2N1cyxcclxuICAgIHNlbGVjdDpmb2N1cyB7XHJcbiAgICAgICAgb3V0bGluZTogMDtcclxuICAgIH1cclxuXHJcbiAgICBsYWJlbCB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIC8vbWluLWhlaWdodDo1MHB4O1xyXG4gICAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjojZWFlYWVhO1xyXG4gICAgfVxyXG4gICAgbGFiZWwgc3Bhbi5pbm5lci1sYWJlbCB7XHJcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDoxNHB4O1xyXG4gICAgICAgIHRvcDo1MCU7XHJcbiAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICB9XHJcblxyXG4gICAgbGFiZWwuZm9ybS1yZXEgc3Bhbjo6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiICpcIjtcclxuICAgICAgICB3aWR0aDogMTZweDsgXHJcbiAgICAgICAgaGVpZ2h0OiAxNnB4OyBcclxuICAgICAgICBjb2xvcjogJGZvcm1fZXJyb3JfY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4uYnV0dG9uLFxyXG4uZm9ybSBidXR0b24sXHJcbi5mb3JtIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXHJcbi5mb3JtIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcclxuLmZvcm0gaW5wdXRbdHlwZT1cImJ1dHRvblwiXSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAxNXB4IDUwcHggMTJweCA1MHB4O1xyXG4gICAgY29sb3I6ICMwMDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6ICRmb250X3NpemVfbWFpbjtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uYnV0dG9uOmhvdmVyLFxyXG4uZm9ybSBidXR0b246aG92ZXIsXHJcbi5mb3JtIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06aG92ZXIsXHJcbi5mb3JtIGlucHV0W3R5cGU9XCJyZXNldFwiXTpob3ZlcixcclxuLmZvcm0gaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3ZlcixcclxuLmJ1dHRvbjpmb2N1cyxcclxuLmZvcm0gYnV0dG9uOmZvY3VzLFxyXG4uZm9ybSBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxyXG4uZm9ybSBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXHJcbi5mb3JtIGlucHV0W3R5cGU9XCJidXR0b25cIl06Zm9jdXMge1xyXG4gICAgb3V0bGluZTogMDtcclxufVxyXG5cclxuLmZvcm0gLmZvcm1jYXB0Y2hhMiB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O31cclxuIiwiLy8vIDxyZWZlcmVuY2UgcGF0aD1cImNzcy5zY3NzXCIgLz5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgU2l0ZS1zcGVjaWZpYyByZXNwb25zaXZlIENTUyB0byAxMDI0cHgtMTQ0MHB4LCB1cCB0byAxMDI0cHggYW5kIDY4MHB4LTc2OHB4IFxyXG4gICAgXHJcbiAgICBVc2UgdGhpcyBmaWxlIGZvciBjdXN0b20gc2l0ZS1zcGVjaWZpYyByZXNwb25zaXZlIENTU1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMTQzOXB4KSB7XHJcbiAgICAgXHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xyXG5cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjgxcHgpIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICAgIFxyXG5cclxufSIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCJjc3Muc2Nzc1wiIC8+XHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBTaXRlLXNwZWNpZmljIHJlc3BvbnNpdmUgQ1NTIHRvIG1vYmlsZSAodW5kZXIgNjgwcHgpXHJcblxyXG4gICAgVXNlIHRoaXMgZmlsZSBmb3IgY3VzdG9tIHNpdGUtc3BlY2lmaWMgcmVzcG9uc2l2ZSBDU1NcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY4MHB4KSB7XHJcblxyXG59Il19 */
