@charset "UTF-8";
/*------------------------------------*    $RESPONSIVE
\*------------------------------------*/
/**
 * Tell inuit.css when breakpoints start.
 */
/*------------------------------------*    $FONT-SIZES
\*------------------------------------*/
/**
 * Font-sizes (in pixels). Refer to relevant sections for their implementations.
 */
/*------------------------------------*    $BRAND
\*------------------------------------*/
/**
 * Brand stuff
 */
/**
 * How big would you like round corners to be by default?
 */
/*------------------------------------*    $OBJECTS AND ABSTRACTIONS
\*------------------------------------*/
/**
 * Which objects and abstractions would you like to use?
 */
/*------------------------------------*    $FRAMEWORK
\*------------------------------------*/
/**
 * inuit.css will work these next ones out for use within the framework.
 *
 * Assign our `$base-line-height` to a new spacing var for more transparency.
 */
/*------------------------------------*    LOCAL VARS
\*------------------------------------*/
/*************************
* COLORS
**************************/
.c--ci {
  color: #44c8f5; }

.bg-c--ci {
  background-color: #44c8f5; }

.c--ci-2nd {
  color: #96c93f; }

.bg-c--ci-2nd {
  background-color: #96c93f; }

.c--black {
  color: #000; }

.bg-c--black {
  background-color: #000; }

.c--white {
  color: #fff; }

.bg-c--white {
  background-color: #fff; }

.c--txt {
  color: #000; }

.bg-c--txt {
  background-color: #000; }

.c--highlight {
  color: #791667; }

.bg-c--highlight {
  background-color: #791667; }

.c--grey-light {
  color: #e4e6e7; }

.bg-c--grey-light {
  background-color: #e4e6e7; }

/*------------------------------------*    $DEFAULTS
\*------------------------------------*/
/**
 * inuit.css’ default variables. Redefine these in your `_vars.scss` file (found
 * in the inuit.css-web-template) to override them.
 */
/*------------------------------------*    $DEBUG
\*------------------------------------*/
/**
 * Debug mode will visually highlight any potential markup/accessibility quirks
 * in the browser. Set to `true` or `false`.
 */
/*------------------------------------*    $BORDER-BOX
\*------------------------------------*/
/**
 * Do you want all elements to adopt `box-sizing:border-box;` as per
 * paulirish.com/2012/box-sizing-border-box-ftw ?
 */
/*------------------------------------*    $BASE
\*------------------------------------*/
/**
 * Base stuff
 */
/**
 * Base font-family.
 */
/**
 * Default colour for objects’ borders etc.
 */
/*------------------------------------*    $RESPONSIVE
\*------------------------------------*/
/**
 * Responsiveness?
 */
/**
 * Responsiveness for widescreen/high resolution desktop monitors and beyond?
 * Note: `$responsive` variable above must be set to true before enabling this.
 */
/**
 * Responsive push and pull produce a LOT of code, only turn them on if you
 * definitely need them.
 */
/**
 * Note: `$push` variable above must be set to true before enabling these.
 */
/**
 * Note: `$pull` variable above must be set to true before enabling these.
 */
/**
 * Tell inuit.css when breakpoints start.
 */
/*------------------------------------*    $FONT-SIZES
\*------------------------------------*/
/**
 * Font-sizes (in pixels). Refer to relevant sections for their implementations.
 */
/*------------------------------------*    $QUOTES
\*------------------------------------*/
/**
 * English quote marks?
 */
/**
 * If you want English quotes then please do not edit these; they’re only here
 * because Sass needs them.
 */
/**
 * If you need non-English quotes, please alter the following values accordingly:
 */
/*------------------------------------*    $BRAND
\*------------------------------------*/
/**
 * Brand stuff
 */
/**
 * How big would you like round corners to be by default?
 */
/*------------------------------------*    $OBJECTS AND ABSTRACTIONS
\*------------------------------------*/
/**
 * Which objects and abstractions would you like to use?
 */
/*------------------------------------*    $FRAMEWORK
\*------------------------------------*/
/**
 * inuit.css will work these next ones out for use within the framework.
 *
 * Assign our `$base-line-height` to a new spacing var for more transparency.
 */
/*------------------------------------*    INUIT.CSS
\*------------------------------------*/
/*!*
 *
 * inuitcss.com -- @inuitcss -- @csswizardry
 *
 */
/**
 * inuit.css acts as a base stylesheet which you should extend with your own
 * theme stylesheet.
 *
 * inuit.css aims to do the heavy lifting; sorting objects and abstractions,
 * design patterns and fiddly bits of CSS, whilst leaving as much design as
 * possible to you. inuit.css is the scaffolding to your decorator.
 *
 * This stylesheet is heavily documented and contains lots of comments, please
 * take care to read and refer to them as you build. For further support please
 * tweet at @inuitcss.
 *
 * Owing to the amount of comments please only ever use minified CSS in
 * production. This file is purely a dev document.
 *
 * The table of contents below maps to section titles of the same name, to jump
 * to any section simply run a find for $[SECTION-TITLE].
 *
 * Most objects and abstractions come with a chunk of markup that you should be
 * able to paste into any view to quickly see how the CSS works in conjunction
 * with the correct HTML.
 *
 * inuit.css is written to this standard: github.com/csswizardry/CSS-Guidelines
 *
 * LICENSE
 *
 * Copyright 2013 Harry Roberts
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Thank you for choosing inuit.css. May your web fonts render perfectly.
 */
/*------------------------------------*    $CONTENTS
\*------------------------------------*/
/**
 * CONTENTS............You’re reading it!
 * WARNING.............Here be dragons!
 * IMPORTS.............Begin importing the sections below
 *
 * MIXINS..............Super-simple Sass stuff
 * NORMALIZE...........normalize.css
 * RESET...............Set some defaults
 * CLEARFIX............
 * SHARED..............Shared declarations
 *
 * MAIN................High-level elements like `html`, `body`, etc.
 * HEADINGS............Double-stranded heading hierarchy
 * PARAGRAPHS..........
 * SMALLPRINT..........Smaller text elements like `small`
 * QUOTES..............
 * CODE................
 * LISTS...............
 * IMAGES..............
 * TABLES..............
 * FORMS...............
 *
 * GRIDS...............Fluid, proportional and nestable grids
 * FLEXBOX.............Crudely emulate flexbox
 * COLUMNS.............CSS3 columns
 * NAV.................A simple abstraction to put a list in horizontal nav mode
 * OPTIONS.............Grouped nav items
 * PAGINATION..........Very stripped back, basic paginator
 * BREADCRUMB..........Simple breadcrumb trail object
 * MEDIA...............Media object
 * MARGINALIA..........Simple marginalia content
 * ISLAND..............Boxed off content
 * BLOCK-LIST..........Blocky lists of content
 * MATRIX..............Gridded lists
 * SPLIT...............A simple split-in-two object
 * THIS-OR-THIS........Options object
 * LINK-COMPLEX........
 * FLYOUT..............Flyout-on-hover object
 * ARROWS..............CSS arrows
 * SPRITE..............Generic spriting element
 * ICON-TEXT...........Icon and text couplings
 * BEAUTONS............Use the beautons micro library
 * LOZENGES............Basic lozenge styles
 * RULES...............Horizontal rules
 * STATS...............Simple stats object
 * GREYBOX.............Wireframing styles
 *
 * WIDTHS..............Width classes for use alongside the grid system etc.
 * PUSH................Push classes for manipulating grids
 * PULL................Pull classes for manipulating grids
 * BRAND...............Helper class to apply brand treatment to elements
 * HELPER..............A series of helper classes to use arbitrarily
 * DEBUG...............Enable to add visual flags for debugging purposes
 */
/*------------------------------------*    $WARNING
\*------------------------------------*/
/*
 * inuit.css, being an OO framework, works in keeping with the open/closed
 * principle. The variables you set previously are now being used throughout
 * inuit.css to style everything we need for a base. Any custom styles SHOULD
 * NOT be added or modified in inuit.css directly, but added via your theme
 * stylesheet as per the open/closed principle:
 *
 * csswizardry.com/2012/06/the-open-closed-principle-applied-to-css
 *
 * Try not to edit any CSS beyond this point; if you find you need to do so
 * it is a failing of the framework so please tweet at @inuitcss.
 */
/*------------------------------------*    $IMPORTS
\*------------------------------------*/
/**
 * Generic utility styles etc.
 */
/*------------------------------------*    $DEFAULTS
\*------------------------------------*/
/**
 * inuit.css’ default variables. Redefine these in your `_vars.scss` file (found
 * in the inuit.css-web-template) to override them.
 */
/*------------------------------------*    $DEBUG
\*------------------------------------*/
/**
 * Debug mode will visually highlight any potential markup/accessibility quirks
 * in the browser. Set to `true` or `false`.
 */
/*------------------------------------*    $BORDER-BOX
\*------------------------------------*/
/**
 * Do you want all elements to adopt `box-sizing:border-box;` as per
 * paulirish.com/2012/box-sizing-border-box-ftw ?
 */
/*------------------------------------*    $BASE
\*------------------------------------*/
/**
 * Base stuff
 */
/**
 * Base font-family.
 */
/**
 * Default colour for objects’ borders etc.
 */
/*------------------------------------*    $RESPONSIVE
\*------------------------------------*/
/**
 * Responsiveness?
 */
/**
 * Responsiveness for widescreen/high resolution desktop monitors and beyond?
 * Note: `$responsive` variable above must be set to true before enabling this.
 */
/**
 * Responsive push and pull produce a LOT of code, only turn them on if you
 * definitely need them.
 */
/**
 * Note: `$push` variable above must be set to true before enabling these.
 */
/**
 * Note: `$pull` variable above must be set to true before enabling these.
 */
/**
 * Tell inuit.css when breakpoints start.
 */
/*------------------------------------*    $FONT-SIZES
\*------------------------------------*/
/**
 * Font-sizes (in pixels). Refer to relevant sections for their implementations.
 */
/*------------------------------------*    $QUOTES
\*------------------------------------*/
/**
 * English quote marks?
 */
/**
 * If you want English quotes then please do not edit these; they’re only here
 * because Sass needs them.
 */
/**
 * If you need non-English quotes, please alter the following values accordingly:
 */
/*------------------------------------*    $BRAND
\*------------------------------------*/
/**
 * Brand stuff
 */
/**
 * How big would you like round corners to be by default?
 */
/*------------------------------------*    $OBJECTS AND ABSTRACTIONS
\*------------------------------------*/
/**
 * Which objects and abstractions would you like to use?
 */
/*------------------------------------*    $FRAMEWORK
\*------------------------------------*/
/**
 * inuit.css will work these next ones out for use within the framework.
 *
 * Assign our `$base-line-height` to a new spacing var for more transparency.
 */
/*------------------------------------*    $MIXINS
\*------------------------------------*/
/**
 * Create a fully formed type style (sizing and vertical rhythm) by passing in a
 * single value, e.g.:
 *
   `@include font-size(10px);`
 *
 * Thanks to @redclov3r for the `line-height` Sass:
 * twitter.com/redclov3r/status/250301539321798657
 */
/**
 * Style any number of headings in one fell swoop, e.g.:
 *
   .foo{
       @include headings(1, 3){
           color:#BADA55;
       }
    }
 *
 * With thanks to @lar_zzz, @paranoida, @rowanmanning and ultimately
 * @thierrylemoulec for refining and improving my initial mixin.
 */
/**
 * Create vendor-prefixed CSS in one go, e.g.
 *
   `@include vendor(border-radius, 4px);`
 *
 */
/**
 * Create CSS keyframe animations for all vendors in one go, e.g.:
 *
   .foo{
       @include vendor(animation, shrink 3s);
   }

   @include keyframe(shrink){
       from{
           font-size:5em;
       }
   }
 *
 * Courtesy of @integralist: twitter.com/integralist/status/260484115315437569
 */
/**
 * Force overly long spans of text to truncate, e.g.:
 *
   `@include truncate(100%);`
 *
 * Where `$truncation-boundary` is a united measurement.
 */
/**
 * CSS arrows!!! But... before you read on, you might want to grab a coffee...
 *
 * This mixin creates a CSS arrow on a given element. We can have the arrow
 * appear in one of 12 locations, thus:
 *
 *       01    02    03
 *    +------------------+
 * 12 |                  | 04
 *    |                  |
 * 11 |                  | 05
 *    |                  |
 * 10 |                  | 06
 *    +------------------+
 *       09    08    07
 *
 * You pass this position in along with a desired arrow color and optional
 * border color, for example:
 *
 * `@include arrow(top, left, red)`
 *
 * for just a single, red arrow, or:
 *
 * `@include arrow(bottom, center, red, black)`
 *
 * which will create a red triangle with a black border which sits at the bottom
 * center of the element. Call the mixin thus:
 *
   .foo{
       background-color:#BADA55;
       border:1px solid #ACE;
       @include arrow(top, left, #BADA55, #ACE);
   }
 *
 */
/**
 * Media query mixin.
 *
 * It’s not great practice to define solid breakpoints up-front, preferring to
 * modify your design when it needs it, rather than assuming you’ll want a
 * change at ‘mobile’. However, as inuit.css is required to take a hands off
 * approach to design decisions, this is the closest we can get to baked-in
 * responsiveness. It’s flexible enough to allow you to set your own breakpoints
 * but solid enough to be frameworkified.
 *
 * We define some broad breakpoints in our vars file that are picked up here
 * for use in a simple media query mixin. Our options are:
 *
 * palm
 * lap
 * lap-and-up
 * portable
 * desk
 * desk-wide
 *
 * Not using a media query will, naturally, serve styles to all devices.
 *
 * `@include media-query(palm){ [styles here] }`
 *
 * We work out your end points for you:
 */
/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */
/*
 * Correct `block` display not defined in IE 8/9.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block; }

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

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

/*
 * Address styling not present in IE 8/9.
 */
[hidden] {
  display: none; }

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

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

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

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

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

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

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

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

/*
 * Address differences between Firefox and other browsers.
 */
hr {
  -webkit-box-sizing: content-box;
          box-sizing: content-box;
  height: 0; }

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

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

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

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

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

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

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

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

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

/* ==========================================================================
   Figures
   ========================================================================== */
/*
 * Address 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. Correct `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. Correct font family not being inherited in all browsers.
 * 2. Correct font size not being inherited in all browsers.
 * 3. Address 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 */ }

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

/*
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 */
button,
select {
  text-transform: none; }

/*
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/*
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default; }

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

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

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

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

/*
 * 1. Remove default vertical scrollbar in IE 8/9.
 * 2. Improve 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
\*------------------------------------*/
/**
 * A more considered reset; more of a restart...
 * As per: csswizardry.com/2011/10/reset-restarted
 */
/**
    * Let’s make the box model all nice, shall we...?
    */
*, *:before, *:after {
  -webkit-box-sizing: border-box;
  -ms-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box; }

/**
 * The usual...
 */
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
dl, dd, ol, ul,
form, fieldset, legend,
table, th, td, caption,
hr {
  margin: 0;
  padding: 0; }

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

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

/**
 * Apply faux underline via `border-bottom`.
 */
ins {
  border-bottom: 1px solid; }

/**
 * So that `alt` text is visually offset if images don’t load.
 */
img {
  font-style: italic; }

/**
 * Give form elements some cursor interactions...
 */
label,
input,
textarea,
button,
select,
option {
  cursor: pointer; }

.text-input:active,
.text-input:focus,
textarea:active,
textarea:focus {
  cursor: text;
  outline: none; }

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

/*------------------------------------*    $SHARED
\*------------------------------------*/
/**
 * Where `margin-bottom` is concerned, this value will be the same as the
 * base line-height. This allows us to keep a consistent vertical rhythm.
 * As per: csswizardry.com/2012/06/single-direction-margin-declarations
 */
/**
 * Base elements
 */
h1, h2, h3, h4, h5, h6, hgroup,
ul, ol, dl,
blockquote, p, address,
table,
fieldset, figure,
pre,
.form-fields > li,
.media,
.island,
.islet {
  margin-bottom: 15px;
  margin-bottom: 1rem; }
  .islet h1, .islet h2, .islet h3, .islet h4, .islet h5, .islet h6, .islet hgroup, .islet
  ul, .islet ol, .islet dl, .islet
  blockquote, .islet p, .islet address, .islet
  table, .islet
  fieldset, .islet figure, .islet
  pre,
  .islet .form-fields > li, .islet
  .media, .islet
  .island, .islet
  .islet {
    margin-bottom: 7.5px;
    margin-bottom: 0.5rem; }

/**
 * Doubled up `margin-bottom` helper class.
 */
.landmark {
  margin-bottom: 30px;
  margin-bottom: 2rem; }

/**
 * `hr` elements only take up a few pixels, so we need to give them special
 * treatment regarding vertical rhythm.
 */
hr {
  margin-bottom: 13px;
  margin-bottom: 0.86667rem; }

/**
 * Where `margin-left` is concerned we want to try and indent certain elements
 * by a consistent amount. Define that amount once, here.
 */
ul, ol, dd {
  margin-left: 30px;
  margin-left: 2rem; }

/**
 * Base styles; unclassed HTML elements etc.
 */
/*------------------------------------*    $MAIN
\*------------------------------------*/
html {
  font: 0.9375em / 1.33333 Arial, Helvetica, sans-serif;
  overflow-y: scroll;
  min-height: 100%; }

/*------------------------------------*    $HEADINGS
\*------------------------------------*/
/**
 * As per: csswizardry.com/2012/02/pragmatic-practical-font-sizing-in-css
 *
 * When we define a heading we also define a corresponding class to go with it.
 * This allows us to apply, say, `class=alpha` to a `h3`; a double-stranded
 * heading hierarchy.
 */
h1, .alpha {
  font-size: 33px;
  font-size: 2.2rem;
  line-height: 1.21212; }

h2, .beta {
  font-size: 25px;
  font-size: 1.66667rem;
  line-height: 1.6; }

h3, .gamma {
  font-size: 23px;
  font-size: 1.53333rem;
  line-height: 1.73913; }

h4, .delta {
  font-size: 22px;
  font-size: 1.46667rem;
  line-height: 1.81818; }

h5, .epsilon {
  font-size: 16px;
  font-size: 1.06667rem;
  line-height: 1.25; }

h6, .zeta {
  font-size: 15px;
  font-size: 1rem;
  line-height: 1.33333; }

/**
 * Heading groups and generic any-heading class.
 * To target any heading of any level simply apply a class of `.hN`, e.g.:
 *
   <hgroup>
       <h1 class=hN>inuit.css</h1>
       <h2 class=hN>Best. Framework. Ever!</h2>
   </hgroup>
 *
 */
hgroup .hN {
  margin-bottom: 0; }

/**
 * A series of classes for setting massive type; for use in heroes, mastheads,
 * promos, etc.
 */
.giga {
  font-size: 96px;
  font-size: 6.4rem;
  line-height: 1.04167; }

.mega {
  font-size: 72px;
  font-size: 4.8rem;
  line-height: 1.11111; }

.kilo {
  font-size: 48px;
  font-size: 3.2rem;
  line-height: 1.25; }

/*------------------------------------*    $PARAGRAPHS
\*------------------------------------*/
/**
 * The `.lede` class is used to make the introductory text (usually a paragraph)
 * of a document slightly larger.
 */
.lede,
.lead {
  font-size: 16.875px;
  font-size: 1.125rem;
  line-height: 1.18519; }

/*------------------------------------*    $SMALLPRINT
\*------------------------------------*/
/**
 * A series of classes for setting tiny type; for use in smallprint etc.
 */
.smallprint,
.milli {
  font-size: 12px;
  font-size: 0.8rem;
  line-height: 1.66667; }

.micro {
  font-size: 8px;
  font-size: 0.53333rem;
  line-height: 2.5; }

/*------------------------------------*    $QUOTES
\*------------------------------------*/
/**
 * If English quotes are set in `_vars.scss`, define them here.
 */
/**
 * Big up @boblet: html5doctor.com/blockquote-q-cite
 */
/**
 * Inline quotes.
 */
q {
  quotes: "‘" "’" "\\201C " "\\201D "; }
  q:before {
    content: "\2018";
    content: open-quote; }
  q:after {
    content: "\2019";
    content: close-quote; }
  q q:before {
    content: "\201C";
    content: open-quote; }
  q q:after {
    content: "\201D";
    content: close-quote; }

blockquote {
  quotes: "\\201C " "\\201D "; }
  blockquote p:before {
    content: "\\201C ";
    content: open-quote; }
  blockquote p:after {
    content: "";
    content: no-close-quote; }
  blockquote p:last-of-type:after {
    content: "\\201D ";
    content: close-quote; }
  blockquote q:before {
    content: "\2018";
    content: open-quote; }
  blockquote q:after {
    content: "\2019";
    content: close-quote; }

/**
 *
   <blockquote>
       <p>Insanity: doing the same thing over and over again and expecting
       different results.</p>
       <b class=source>Albert Einstein</b>
   </blockquote>
 *
 */
blockquote {
  /**
     * .4em is roughly equal to the width of the opening “ that we wish to hang.
     */
  text-indent: -0.41em; }
  blockquote p:last-of-type {
    margin-bottom: 0; }

.source {
  display: block;
  text-indent: 0; }
  .source:before {
    content: "\2014"; }

/*------------------------------------*    $CODE
\*------------------------------------*/
/**
 * Use an explicit font stack to ensure browsers render correct `line-height`.
 */
pre {
  overflow: auto; }

pre mark {
  background: none;
  border-bottom: 1px solid;
  color: inherit; }

/**
 * Add comments to your code examples, e.g.:
 *
   <code>&lt;/div&gt;<span class=code-comment>&lt;!-- /wrapper --&gt;</span></code>
 *
 */
.code-comment {
  /**
     * Override this setting in your theme stylesheet
     */
  opacity: 0.75;
  filter: alpha(opacity=75); }

/**
 * You can add line numbers to your code examples but be warned, it requires
 * some pretty funky looking markup, e.g.:
 *
   <ol class=line-numbers>
       <li><code>.nav{</code></li>
       <li><code>    list-style:none;</code></li>
       <li><code>    margin-left:0;</code></li>
       <li><code>}</code></li>
       <li><code>    .nav > li,</code></li>
       <li><code>        .nav > li > a{</code></li>
       <li><code>            display:inline-block;</code></li>
       <li><code>           *display:inline-block;</code></li>
       <li><code>            zoom:1;</code></li>
       <li><code>        }</code></li>
   </ol>
 *
 * 1. Make the list look like code.
 * 2. Give the list flush numbers with a leading zero.
 * 3. Make sure lines of code don’t wrap.
 * 4. Give the code form by forcing the `code` to honour white-space.
 */
.line-numbers {
  font-family: monospace, serif;
  /* [1] */
  list-style: decimal-leading-zero inside;
  /* [2] */
  white-space: nowrap;
  /* [3] */
  overflow: auto;
  /* [3] */
  margin-left: 0; }

.line-numbers code {
  white-space: pre;
  /* [4] */ }

/*------------------------------------*    $IMAGES
\*------------------------------------*/
/**
 * Demo: jsfiddle.net/inuitcss/yMtur
 */
/**
 * Fluid images.
 */
img {
  max-width: 100%; }

/**
 * Non-fluid images if you specify `width` and/or `height` attributes.
 */
img[width],
img[height] {
  max-width: none; }

/**
 * Rounded images.
 */
.img--round {
  border-radius: 4px; }

/**
 * Image placement variations.
 */
.img--right {
  float: right;
  margin-bottom: 15px;
  margin-left: 15px; }

.img--left {
  float: left;
  margin-right: 15px;
  margin-bottom: 15px; }

.img--center {
  display: block;
  margin-right: auto;
  margin-bottom: 15px;
  margin-left: auto; }

/**
 * Keep your images on your baseline.
 *
 * Please note, these will not work too nicely with fluid images and will
 * distort when resized below a certain width. Use with caution.
 */
.img--short {
  height: 75px; }

.img--medium {
  height: 150px; }

.img--tall {
  height: 225px; }

/**
 * Images in `figure` elements.
 */
figure > img {
  display: block; }

/*------------------------------------*    $LISTS
\*------------------------------------*/
/**
 * Remove vertical spacing from nested lists.
 */
li > ul,
li > ol {
  margin-bottom: 0; }

/**
 * Have a numbered `ul` without the semantics implied by using an `ol`.
 */
/*ul*/
.numbered-list {
  list-style-type: decimal; }

/*------------------------------------*    $TABLES
\*------------------------------------*/
/**
 * We have a lot at our disposal for making very complex table constructs, e.g.:
 *
   <table class="table--bordered  table--striped  table--data">
       <colgroup>
           <col class=t10>
           <col class=t10>
           <col class=t10>
           <col>
       </colgroup>
       <thead>
           <tr>
               <th colspan=3>Foo</th>
               <th>Bar</th>
           </tr>
           <tr>
               <th>Lorem</th>
               <th>Ipsum</th>
               <th class=numerical>Dolor</th>
               <th>Sit</th>
           </tr>
       </thead>
       <tbody>
           <tr>
               <th rowspan=3>Sit</th>
               <td>Dolor</td>
               <td class=numerical>03.788</td>
               <td>Lorem</td>
           </tr>
           <tr>
               <td>Dolor</td>
               <td class=numerical>32.210</td>
               <td>Lorem</td>
           </tr>
           <tr>
               <td>Dolor</td>
               <td class=numerical>47.797</td>
               <td>Lorem</td>
           </tr>
           <tr>
               <th rowspan=2>Sit</th>
               <td>Dolor</td>
               <td class=numerical>09.640</td>
               <td>Lorem</td>
           </tr>
           <tr>
               <td>Dolor</td>
               <td class=numerical>12.117</td>
               <td>Lorem</td>
           </tr>
       </tbody>
   </table>
 *
 */
table {
  width: 100%; }

th,
td {
  padding: 3.75px;
  text-align: left; }
  @media screen and (min-width: 480px) {
    th,
    td {
      padding: 7.5px; } }

/**
 * Cell alignments
 */
[colspan] {
  text-align: center; }

[colspan="1"] {
  text-align: left; }

[rowspan] {
  vertical-align: middle; }

[rowspan="1"] {
  vertical-align: top; }

.numerical {
  text-align: right; }

/**
 * In the HTML above we see several `col` elements with classes whose numbers
 * represent a percentage width for that column. We leave one column free of a
 * class so that column can soak up the effects of any accidental breakage in
 * the table.
 */
.t5 {
  width: 5%; }

.t10 {
  width: 10%; }

.t12 {
  width: 12.5%; }

/* 1/8 */
.t15 {
  width: 15%; }

.t20 {
  width: 20%; }

.t25 {
  width: 25%; }

/* 1/4 */
.t30 {
  width: 30%; }

.t33 {
  width: 33.333%; }

/* 1/3 */
.t35 {
  width: 35%; }

.t37 {
  width: 37.5%; }

/* 3/8 */
.t40 {
  width: 40%; }

.t45 {
  width: 45%; }

.t50 {
  width: 50%; }

/* 1/2 */
.t55 {
  width: 55%; }

.t60 {
  width: 60%; }

.t62 {
  width: 62.5%; }

/* 5/8 */
.t65 {
  width: 65%; }

.t66 {
  width: 66.666%; }

/* 2/3 */
.t70 {
  width: 70%; }

.t75 {
  width: 75%; }

/* 3/4*/
.t80 {
  width: 80%; }

.t85 {
  width: 85%; }

.t87 {
  width: 87.5%; }

/* 7/8 */
.t90 {
  width: 90%; }

.t95 {
  width: 95%; }

/**
 * Bordered tables
 */
.table--bordered th,
.table--bordered td {
  border: 1px solid #ccc; }
  .table--bordered th:empty,
  .table--bordered td:empty {
    border: none; }

.table--bordered thead tr:last-child th {
  border-bottom-width: 2px; }

.table--bordered tbody tr th:last-of-type {
  border-right-width: 2px; }

/**
 * Striped tables
 */
.table--striped tbody tr:nth-of-type(odd) {
  background-color: #ffc;
  /* Override this color in your theme stylesheet */ }

/**
 * Data table
 */
.table--data {
  font: 12px/1.5 sans-serif; }

/*------------------------------------*    $FORMS
\*------------------------------------*/
/**
 *
 * Demo: jsfiddle.net/inuitcss/MhHHU
 *
 */
fieldset {
  padding: 15px; }

/**
 * Text inputs
 *
 * Instead of a `[type]` selector for each kind of form input, we just use a
 * class to target any/every one, e.g.:
   <input type=text class=text-input>
   <input type=email class=text-input>
   <input type=password class=text-input>
 *
 */
.text-input,
textarea {
  /**
     * Style these via your theme stylesheet.
     */ }

/**
 * Group sets of form fields in a list, e.g.:
 *
   <ul class=form-fields>
       <li>
           <label />
           <input />
       </li>
       <li>
           <label />
           <select />
       </li>
       <li>
           <label />
           <input />
       </li>
   </ul>
 *
 */
.form-fields {
  list-style: none;
  margin: 0; }

.form-fields > li:last-child {
  margin-bottom: 0; }

/**
 * Labels
 *
 * Define a `.label` class as well as a `label` element. This means we can apply
 * label-like styling to meta-labels for groups of options where a `label`
 * element is not suitable, e.g.:
 *
   <li>
       <span class=label>Select an option below:</span>
       <ul class="multi-list  four-cols">
           <li>
               <input /> <label />
           </li>
           <li>
               <input /> <label />
           </li>
           <li>
               <input /> <label />
           </li>
           <li>
               <input /> <label />
           </li>
       </ul>
   </li>
 *
 */
label,
.label {
  display: block; }

/**
     * Extra help text in `label`s, e.g.:
     *
       <label>Card number <small class=additional>No spaces</small></label>
     *
     */
.additional {
  display: block;
  font-weight: normal; }

/*
 * Groups of checkboxes and radios, e.g.:
 *
   <li>
       <ul class=check-list>
           <li>
               <input /> <label />
           </li>
           <li>
               <input /> <label />
           </li>
       </ul>
   </li>
 *
 */
.check-list {
  list-style: none;
  margin: 0; }

/*
     * Labels in check-lists
     */
.check-label,
.check-list label,
.check-list .label {
  display: inline-block; }

/**
 * Spoken forms are for forms that read like spoken word, e.g.:
 *
   <li class=spoken-form>
       Hello, my <label for=spoken-name>name</label> is
       <input type=text class=text-input id=spoken-name>. My home
       <label for=country>country</label> is
       <select id=country>
           <option>UK</option>
           <option>US</option>
           <option>Other</option>
       </select>
   </li>
 *
 */
.spoken-form label {
  display: inline-block;
  font: inherit; }

/**
 * Extra help text displayed after a field when that field is in focus, e.g.:
 *
   <label for=email>Email:</label>
   <input type=email class=text-input id=email>
   <small class=extra-help>.edu emails only</small>
 *
 * We leave the help text in the document flow and merely set it to
 * `visibility:hidden;`. This means that it won’t interfere with anything once
 * it reappears.
 *
 */
/*small*/
.extra-help {
  display: inline-block;
  visibility: hidden; }

.text-input:active + .extra-help,
.text-input:focus + .extra-help {
  visibility: visible; }

/**
 * Objects and abstractions
 */
/*------------------------------------*    $GRIDS
\*------------------------------------*/
/**
 * Fluid and nestable grid system, e.g.:
 *
   <div class="grid">

       <div class="grid__item  one-third">
           <p>One third grid</p>
       </div><!--

    --><div class="grid__item  two-thirds">
           <p>Two thirds grid</p>
       </div><!--

    --><div class="grid__item  one-half">
           <p>One half grid</p>
       </div><!--

    --><div class="grid__item  one-quarter">
           <p>One quarter grid</p>
       </div><!--

    --><div class="grid__item  one-quarter">
           <p>One quarter grid</p>
       </div>

   </div>
 *
 * Demo: jsfiddle.net/inuitcss/CLYUC
 *
 */
/**
 * Grid wrapper
 */
.grid {
  margin-left: -15px;
  list-style: none;
  margin-bottom: 0; }

/**
     * Very infrequently occuring grid wrappers as children of grid wrappers.
     */
.grid > .grid {
  margin-left: 0; }

/**
     * Grid
     */
.grid__item {
  display: inline-block;
  width: 100%;
  padding-left: 15px;
  vertical-align: top; }

/*------------------------------------*    $NAV
\*------------------------------------*/
/**
 * Nav abstraction as per: csswizardry.com/2011/09/the-nav-abstraction
 * When used on an `ol` or `ul`, this class throws the list into horizontal mode
 * e.g.:
 *
   <ul class=nav>
       <li><a href=#>Home</a></li>
       <li><a href=#>About</a></li>
       <li><a href=#>Portfolio</a></li>
       <li><a href=#>Contact</a></li>
   </ul>
 *
 * Demo: jsfiddle.net/inuitcss/Vnph4
 *
 */
.nav {
  list-style: none;
  margin-left: 0; }
  .nav > li,
  .nav > li > a {
    display: inline-block;
    *display: inline;
    zoom: 1; }

/**
 * `.nav--stacked` extends `.nav` and throws the list into vertical mode, e.g.:
 *
   <ul class="nav  nav--stacked">
       <li><a href=#>Home</a></li>
       <li><a href=#>About</a></li>
       <li><a href=#>Portfolio</a></li>
       <li><a href=#>Contact</a></li>
   </ul>
 *
 */
.nav--stacked > li {
  display: list-item; }
  .nav--stacked > li > a {
    display: block; }

/**
 * `.nav--banner` extends `.nav` and centres the list, e.g.:
 *
   <ul class="nav  nav--banner">
       <li><a href=#>Home</a></li>
       <li><a href=#>About</a></li>
       <li><a href=#>Portfolio</a></li>
       <li><a href=#>Contact</a></li>
   </ul>
 *
 */
.nav--banner {
  text-align: center; }

/**
 * Give nav links a big, blocky hit area. Extends `.nav`, e.g.:
 *
   <ul class="nav  nav--block">
       <li><a href=#>Home</a></li>
       <li><a href=#>About</a></li>
       <li><a href=#>Portfolio</a></li>
       <li><a href=#>Contact</a></li>
   </ul>
 *
 */
.nav--block {
  line-height: 1;
  /**
     * Remove whitespace caused by `inline-block`.
     */
  letter-spacing: -0.31em;
  word-spacing: -0.43em;
  white-space: nowrap; }
  .nav--block > li {
    letter-spacing: normal;
    word-spacing: normal; }
    .nav--block > li > a {
      padding: 7.5px; }

/**
 * Force a nav to occupy 100% of the available width of its parent. Extends
 * `.nav`, e.g.:
 *
   <ul class="nav  nav--fit">
       <li><a href=#>Home</a></li>
       <li><a href=#>About</a></li>
       <li><a href=#>Portfolio</a></li>
       <li><a href=#>Contact</a></li>
   </ul>
 *
 * Thanks to @pimpl for this idea!
 */
.nav--fit {
  display: table;
  width: 100%; }
  .nav--fit > li {
    display: table-cell; }
    .nav--fit > li > a {
      display: block; }

/**
 * Make a list of keywords. Extends `.nav`, e.g.:
 *
   `<ul class="nav  nav--keywords>`
 *
 */
.nav--keywords > li:after {
  content: "\002C" "\00A0"; }

.nav--keywords > li:last-child:after {
  display: none; }

/**
 * Style trumps; helper and brand classes
 */
/*------------------------------------*    $WIDTHS
\*------------------------------------*/
/**
 * Sizes in human readable format. These are used in conjunction with other
 * objects and abstractions found in inuit.css, most commonly the grid system
 * and faux flexbox.
 *
 * We have a mixin to generate our widths and their breakpoint-specific
 * variations.
 */
/**
    * Whole
    */
.one-whole {
  width: 100%; }

/**
    * Halves
    */
.one-half, .two-quarters, .three-sixths, .four-eighths, .five-tenths, .six-twelfths {
  width: 50%; }

/**
    * Thirds
    */
.one-third, .two-sixths, .four-twelfths {
  width: 33.333%; }

.two-thirds, .four-sixths, .eight-twelfths {
  width: 66.666%; }

/**
    * Quarters
    */
.one-quarter, .two-eighths, .three-twelfths {
  width: 25%; }

.three-quarters, .six-eighths, .nine-twelfths {
  width: 75%; }

/**
    * Fifths
    */
.one-fifth, .two-tenths {
  width: 20%; }

.two-fifths, .four-tenths {
  width: 40%; }

.three-fifths, .six-tenths {
  width: 60%; }

.four-fifths, .eight-tenths {
  width: 80%; }

/**
    * Sixths
    */
.one-sixth, .two-twelfths {
  width: 16.666%; }

.five-sixths, .ten-twelfths {
  width: 83.333%; }

/**
    * Eighths
    */
.one-eighth {
  width: 12.5%; }

.three-eighths {
  width: 37.5%; }

.five-eighths {
  width: 62.5%; }

.seven-eighths {
  width: 87.5%; }

/**
    * Tenths
    */
.one-tenth {
  width: 10%; }

.three-tenths {
  width: 30%; }

.seven-tenths {
  width: 70%; }

.nine-tenths {
  width: 90%; }

/**
    * Twelfths
    */
.one-twelfth {
  width: 8.333%; }

.five-twelfths {
  width: 41.666%; }

.seven-twelfths {
  width: 58.333%; }

.eleven-twelfths {
  width: 91.666%; }

/**
 * If you have set `$responsive` to ‘true’ in `_vars.scss` then you now have
 * access to these classes. You can define at which breakpoint you’d like an
 * element to be a certain size, e.g.:
 *
 * `<div class="g  one-quarter  lap-one-half  palm-one-whole"> ... </div>`
 *
 * This would create a `div` that, at ‘desktop’ sizes, takes up a quarter of the
 * horizontal space, a half of that space at ‘tablet’ sizes, and goes full width
 * at ‘mobile’ sizes.
 *
 * Demo: jsfiddle.net/inuitcss/WS4Ge
 *
 */
@media only screen and (max-width: 767px) {
  /**
    * Whole
    */
  .palm-one-whole {
    width: 100%; }
  /**
    * Halves
    */
  .palm-one-half, .palm-two-quarters, .palm-three-sixths, .palm-four-eighths, .palm-five-tenths, .palm-six-twelfths {
    width: 50%; }
  /**
    * Thirds
    */
  .palm-one-third, .palm-two-sixths, .palm-four-twelfths {
    width: 33.333%; }
  .palm-two-thirds, .palm-four-sixths, .palm-eight-twelfths {
    width: 66.666%; }
  /**
    * Quarters
    */
  .palm-one-quarter, .palm-two-eighths, .palm-three-twelfths {
    width: 25%; }
  .palm-three-quarters, .palm-six-eighths, .palm-nine-twelfths {
    width: 75%; }
  /**
    * Fifths
    */
  .palm-one-fifth, .palm-two-tenths {
    width: 20%; }
  .palm-two-fifths, .palm-four-tenths {
    width: 40%; }
  .palm-three-fifths, .palm-six-tenths {
    width: 60%; }
  .palm-four-fifths, .palm-eight-tenths {
    width: 80%; }
  /**
    * Sixths
    */
  .palm-one-sixth, .palm-two-twelfths {
    width: 16.666%; }
  .palm-five-sixths, .palm-ten-twelfths {
    width: 83.333%; }
  /**
    * Eighths
    */
  .palm-one-eighth {
    width: 12.5%; }
  .palm-three-eighths {
    width: 37.5%; }
  .palm-five-eighths {
    width: 62.5%; }
  .palm-seven-eighths {
    width: 87.5%; }
  /**
    * Tenths
    */
  .palm-one-tenth {
    width: 10%; }
  .palm-three-tenths {
    width: 30%; }
  .palm-seven-tenths {
    width: 70%; }
  .palm-nine-tenths {
    width: 90%; }
  /**
    * Twelfths
    */
  .palm-one-twelfth {
    width: 8.333%; }
  .palm-five-twelfths {
    width: 41.666%; }
  .palm-seven-twelfths {
    width: 58.333%; }
  .palm-eleven-twelfths {
    width: 91.666%; } }

@media only screen and (min-width: 768px) and (max-width: 1024px) {
  /**
    * Whole
    */
  .lap-one-whole {
    width: 100%; }
  /**
    * Halves
    */
  .lap-one-half, .lap-two-quarters, .lap-three-sixths, .lap-four-eighths, .lap-five-tenths, .lap-six-twelfths {
    width: 50%; }
  /**
    * Thirds
    */
  .lap-one-third, .lap-two-sixths, .lap-four-twelfths {
    width: 33.333%; }
  .lap-two-thirds, .lap-four-sixths, .lap-eight-twelfths {
    width: 66.666%; }
  /**
    * Quarters
    */
  .lap-one-quarter, .lap-two-eighths, .lap-three-twelfths {
    width: 25%; }
  .lap-three-quarters, .lap-six-eighths, .lap-nine-twelfths {
    width: 75%; }
  /**
    * Fifths
    */
  .lap-one-fifth, .lap-two-tenths {
    width: 20%; }
  .lap-two-fifths, .lap-four-tenths {
    width: 40%; }
  .lap-three-fifths, .lap-six-tenths {
    width: 60%; }
  .lap-four-fifths, .lap-eight-tenths {
    width: 80%; }
  /**
    * Sixths
    */
  .lap-one-sixth, .lap-two-twelfths {
    width: 16.666%; }
  .lap-five-sixths, .lap-ten-twelfths {
    width: 83.333%; }
  /**
    * Eighths
    */
  .lap-one-eighth {
    width: 12.5%; }
  .lap-three-eighths {
    width: 37.5%; }
  .lap-five-eighths {
    width: 62.5%; }
  .lap-seven-eighths {
    width: 87.5%; }
  /**
    * Tenths
    */
  .lap-one-tenth {
    width: 10%; }
  .lap-three-tenths {
    width: 30%; }
  .lap-seven-tenths {
    width: 70%; }
  .lap-nine-tenths {
    width: 90%; }
  /**
    * Twelfths
    */
  .lap-one-twelfth {
    width: 8.333%; }
  .lap-five-twelfths {
    width: 41.666%; }
  .lap-seven-twelfths {
    width: 58.333%; }
  .lap-eleven-twelfths {
    width: 91.666%; } }

@media only screen and (min-width: 768px) {
  /**
    * Whole
    */
  .lap-and-up-one-whole {
    width: 100%; }
  /**
    * Halves
    */
  .lap-and-up-one-half, .lap-and-up-two-quarters, .lap-and-up-three-sixths, .lap-and-up-four-eighths, .lap-and-up-five-tenths, .lap-and-up-six-twelfths {
    width: 50%; }
  /**
    * Thirds
    */
  .lap-and-up-one-third, .lap-and-up-two-sixths, .lap-and-up-four-twelfths {
    width: 33.333%; }
  .lap-and-up-two-thirds, .lap-and-up-four-sixths, .lap-and-up-eight-twelfths {
    width: 66.666%; }
  /**
    * Quarters
    */
  .lap-and-up-one-quarter, .lap-and-up-two-eighths, .lap-and-up-three-twelfths {
    width: 25%; }
  .lap-and-up-three-quarters, .lap-and-up-six-eighths, .lap-and-up-nine-twelfths {
    width: 75%; }
  /**
    * Fifths
    */
  .lap-and-up-one-fifth, .lap-and-up-two-tenths {
    width: 20%; }
  .lap-and-up-two-fifths, .lap-and-up-four-tenths {
    width: 40%; }
  .lap-and-up-three-fifths, .lap-and-up-six-tenths {
    width: 60%; }
  .lap-and-up-four-fifths, .lap-and-up-eight-tenths {
    width: 80%; }
  /**
    * Sixths
    */
  .lap-and-up-one-sixth, .lap-and-up-two-twelfths {
    width: 16.666%; }
  .lap-and-up-five-sixths, .lap-and-up-ten-twelfths {
    width: 83.333%; }
  /**
    * Eighths
    */
  .lap-and-up-one-eighth {
    width: 12.5%; }
  .lap-and-up-three-eighths {
    width: 37.5%; }
  .lap-and-up-five-eighths {
    width: 62.5%; }
  .lap-and-up-seven-eighths {
    width: 87.5%; }
  /**
    * Tenths
    */
  .lap-and-up-one-tenth {
    width: 10%; }
  .lap-and-up-three-tenths {
    width: 30%; }
  .lap-and-up-seven-tenths {
    width: 70%; }
  .lap-and-up-nine-tenths {
    width: 90%; }
  /**
    * Twelfths
    */
  .lap-and-up-one-twelfth {
    width: 8.333%; }
  .lap-and-up-five-twelfths {
    width: 41.666%; }
  .lap-and-up-seven-twelfths {
    width: 58.333%; }
  .lap-and-up-eleven-twelfths {
    width: 91.666%; } }

@media only screen and (max-width: 1024px) {
  /**
    * Whole
    */
  .portable-one-whole {
    width: 100%; }
  /**
    * Halves
    */
  .portable-one-half, .portable-two-quarters, .portable-three-sixths, .portable-four-eighths, .portable-five-tenths, .portable-six-twelfths {
    width: 50%; }
  /**
    * Thirds
    */
  .portable-one-third, .portable-two-sixths, .portable-four-twelfths {
    width: 33.333%; }
  .portable-two-thirds, .portable-four-sixths, .portable-eight-twelfths {
    width: 66.666%; }
  /**
    * Quarters
    */
  .portable-one-quarter, .portable-two-eighths, .portable-three-twelfths {
    width: 25%; }
  .portable-three-quarters, .portable-six-eighths, .portable-nine-twelfths {
    width: 75%; }
  /**
    * Fifths
    */
  .portable-one-fifth, .portable-two-tenths {
    width: 20%; }
  .portable-two-fifths, .portable-four-tenths {
    width: 40%; }
  .portable-three-fifths, .portable-six-tenths {
    width: 60%; }
  .portable-four-fifths, .portable-eight-tenths {
    width: 80%; }
  /**
    * Sixths
    */
  .portable-one-sixth, .portable-two-twelfths {
    width: 16.666%; }
  .portable-five-sixths, .portable-ten-twelfths {
    width: 83.333%; }
  /**
    * Eighths
    */
  .portable-one-eighth {
    width: 12.5%; }
  .portable-three-eighths {
    width: 37.5%; }
  .portable-five-eighths {
    width: 62.5%; }
  .portable-seven-eighths {
    width: 87.5%; }
  /**
    * Tenths
    */
  .portable-one-tenth {
    width: 10%; }
  .portable-three-tenths {
    width: 30%; }
  .portable-seven-tenths {
    width: 70%; }
  .portable-nine-tenths {
    width: 90%; }
  /**
    * Twelfths
    */
  .portable-one-twelfth {
    width: 8.333%; }
  .portable-five-twelfths {
    width: 41.666%; }
  .portable-seven-twelfths {
    width: 58.333%; }
  .portable-eleven-twelfths {
    width: 91.666%; } }

@media only screen and (min-width: 1025px) {
  /**
    * Whole
    */
  .desk-one-whole {
    width: 100%; }
  /**
    * Halves
    */
  .desk-one-half, .desk-two-quarters, .desk-three-sixths, .desk-four-eighths, .desk-five-tenths, .desk-six-twelfths {
    width: 50%; }
  /**
    * Thirds
    */
  .desk-one-third, .desk-two-sixths, .desk-four-twelfths {
    width: 33.333%; }
  .desk-two-thirds, .desk-four-sixths, .desk-eight-twelfths {
    width: 66.666%; }
  /**
    * Quarters
    */
  .desk-one-quarter, .desk-two-eighths, .desk-three-twelfths {
    width: 25%; }
  .desk-three-quarters, .desk-six-eighths, .desk-nine-twelfths {
    width: 75%; }
  /**
    * Fifths
    */
  .desk-one-fifth, .desk-two-tenths {
    width: 20%; }
  .desk-two-fifths, .desk-four-tenths {
    width: 40%; }
  .desk-three-fifths, .desk-six-tenths {
    width: 60%; }
  .desk-four-fifths, .desk-eight-tenths {
    width: 80%; }
  /**
    * Sixths
    */
  .desk-one-sixth, .desk-two-twelfths {
    width: 16.666%; }
  .desk-five-sixths, .desk-ten-twelfths {
    width: 83.333%; }
  /**
    * Eighths
    */
  .desk-one-eighth {
    width: 12.5%; }
  .desk-three-eighths {
    width: 37.5%; }
  .desk-five-eighths {
    width: 62.5%; }
  .desk-seven-eighths {
    width: 87.5%; }
  /**
    * Tenths
    */
  .desk-one-tenth {
    width: 10%; }
  .desk-three-tenths {
    width: 30%; }
  .desk-seven-tenths {
    width: 70%; }
  .desk-nine-tenths {
    width: 90%; }
  /**
    * Twelfths
    */
  .desk-one-twelfth {
    width: 8.333%; }
  .desk-five-twelfths {
    width: 41.666%; }
  .desk-seven-twelfths {
    width: 58.333%; }
  .desk-eleven-twelfths {
    width: 91.666%; } }

/**
 * If you have set the additional `$responsive-extra` variable to ‘true’ in
 * `_vars.scss` then you now have access to the following class available to
 * accomodate much larger screen resolutions.
 */
/* endif */
/*------------------------------------*    $PUSH
\*------------------------------------*/
/**
 * Push classes, to move grid items over to the right by certain amounts.
 */
/*------------------------------------*    $PULL
\*------------------------------------*/
/**
 * Pull classes, to move grid items over to the right by certain amounts.
 */
/*------------------------------------*    $BRAND
\*------------------------------------*/
/**
 * `.brand` is a quick and simple way to apply your brand face and/or color to
 * any element using a handy helper class.
 */
.brand {
  font-family: "Helvetica Neue", sans-serif!important;
  color: #00ce5e!important; }

.brand-face {
  font-family: "Helvetica Neue", sans-serif!important; }

.brand-color,
.brand-colour {
  color: #00ce5e!important; }

/*------------------------------------*    $HELPER
\*------------------------------------*/
/**
 * A series of helper classes to use arbitrarily. Only use a helper class if an
 * element/component doesn’t already have a class to which you could apply this
 * styling, e.g. if you need to float `.main-nav` left then add `float:left;` to
 * that ruleset as opposed to adding the `.float--left` class to the markup.
 *
 * A lot of these classes carry `!important` as you will always want them to win
 * out over other selectors.
 */
/**
 * Add/remove floats
 */
.float--right {
  float: right !important; }

.float--left {
  float: left !important; }

.float--none {
  float: none !important; }

/**
 * Text alignment
 */
.text--left {
  text-align: left  !important; }

.text--center {
  text-align: center !important; }

.text--right {
  text-align: right !important; }

/**
 * Font weights
 */
.weight--light {
  font-weight: 300 !important; }

.weight--normal {
  font-weight: 400 !important; }

.weight--semibold {
  font-weight: 600 !important; }

/**
 * Add/remove margins
 */
.push {
  margin: 15px !important; }

.push--top {
  margin-top: 15px !important; }

.push--right {
  margin-right: 15px !important; }

.push--bottom {
  margin-bottom: 15px !important; }

.push--left {
  margin-left: 15px !important; }

.push--ends {
  margin-top: 15px !important;
  margin-bottom: 15px !important; }

.push--sides {
  margin-right: 15px !important;
  margin-left: 15px !important; }

.push-half {
  margin: 7.5px !important; }

.push-half--top {
  margin-top: 7.5px !important; }

.push-half--right {
  margin-right: 7.5px !important; }

.push-half--bottom {
  margin-bottom: 7.5px !important; }

.push-half--left {
  margin-left: 7.5px !important; }

.push-half--ends {
  margin-top: 7.5px !important;
  margin-bottom: 7.5px !important; }

.push-half--sides {
  margin-right: 7.5px !important;
  margin-left: 7.5px !important; }

.flush {
  margin: 0 !important; }

.flush--top {
  margin-top: 0 !important; }

.flush--right {
  margin-right: 0 !important; }

.flush--bottom {
  margin-bottom: 0 !important; }

.flush--left {
  margin-left: 0 !important; }

.flush--ends {
  margin-top: 0 !important;
  margin-bottom: 0 !important; }

.flush--sides {
  margin-right: 0 !important;
  margin-left: 0 !important; }

/**
 * Add/remove paddings
 */
.soft {
  padding: 15px !important; }

.soft--top {
  padding-top: 15px !important; }

.soft--right {
  padding-right: 15px !important; }

.soft--bottom {
  padding-bottom: 15px !important; }

.soft--left {
  padding-left: 15px !important; }

.soft--ends {
  padding-top: 15px !important;
  padding-bottom: 15px !important; }

.soft--sides {
  padding-right: 15px !important;
  padding-left: 15px !important; }

.soft-half {
  padding: 7.5px !important; }

.soft-half--top {
  padding-top: 7.5px !important; }

.soft-half--right {
  padding-right: 7.5px !important; }

.soft-half--bottom {
  padding-bottom: 7.5px !important; }

.soft-half--left {
  padding-left: 7.5px !important; }

.soft-half--ends {
  padding-top: 7.5px !important;
  padding-bottom: 7.5px !important; }

.soft-half--sides {
  padding-right: 7.5px !important;
  padding-left: 7.5px !important; }

.hard {
  padding: 0 !important; }

.hard--top {
  padding-top: 0 !important; }

.hard--right {
  padding-right: 0 !important; }

.hard--bottom {
  padding-bottom: 0 !important; }

.hard--left {
  padding-left: 0 !important; }

.hard--ends {
  padding-top: 0 !important;
  padding-bottom: 0 !important; }

.hard--sides {
  padding-right: 0 !important;
  padding-left: 0 !important; }

/**
 * Pull items full width of `.island` parents.
 */
.full-bleed {
  margin-right: -15px !important;
  margin-left: -15px !important; }
  .islet .full-bleed {
    margin-right: -7.5px !important;
    margin-left: -7.5px !important; }

/**
 * Add a help cursor to any element that gives the user extra information on
 * `:hover`.
 */
.informative {
  cursor: help !important; }

/**
 * Mute an object by reducing its opacity.
 */
.muted {
  opacity: 0.5 !important;
  filter: alpha(opacity=50) !important; }

/**
 * Align items to the right where they imply progression/movement forward, e.g.:
 *
   <p class=proceed><a href=#>Read more...</a></p>
 *
 */
.proceed {
  text-align: right !important; }

/**
 * Add a right-angled quote to links that imply movement, e.g.:
 *
   <a href=# class=go>Read more</a>
 *
 */
.go:after {
  content: " " "»" !important; }

/**
 * Apply capital case to an element (usually a `strong`).
 */
.caps {
  text-transform: uppercase !important; }

/**
 * Hide content off-screen without resorting to `display:none;`, also provide
 * breakpoint specific hidden elements.
 */
.accessibility,
.visuallyhidden {
  border: 0 !important;
  clip: rect(0 0 0 0) !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  width: 1px !important; }

@media only screen and (max-width: 767px) {
  .accessibility--palm,
  .visuallyhidden--palm {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

@media only screen and (min-width: 768px) and (max-width: 1024px) {
  .accessibility--lap,
  .visuallyhidden--lap {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

@media only screen and (min-width: 768px) {
  .accessibility--lap-and-up,
  .visuallyhidden--lap-and-up {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

@media only screen and (max-width: 1024px) {
  .accessibility--portable,
  .visuallyhidden--portable {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

@media only screen and (min-width: 1025px) {
  .accessibility--desk,
  .visuallyhidden--desk {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

@media only screen and (min-width: 1440px) {
  .accessibility--desk-wide,
  .visuallyhidden--desk-wide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important; } }

/* endif */
.font--base, body {
  font-family: Arial, Helvetica, sans-serif;
  font-style: normal;
  font-size: 15px;
  line-height: 20px; }

.font--base--important {
  font-family: Arial, Helvetica, sans-serif !important; }

.font--bold {
  font-weight: bold; }

.font--normal {
  font-weight: normal !important; }

.font--italic {
  font-style: italic; }

/*
.font--brand {
	font-family: 'actopolisregular'!important;
}
*/
/* H's */
h2, .beta {
  line-height: 1; }

.font--positive {
  color: #000; }

.font--negative {
  color: #fff; }

.uppercase {
  text-transform: uppercase; }

.text-align--center {
  text-align: center; }

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

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

@media only screen and (max-width: 767px) {
  .hide--palm {
    display: none !important; } }

@media only screen and (min-width: 1025px) {
  .hide--desk {
    display: none !important; } }

@media only screen and (min-width: 768px) and (max-width: 1024px) {
  .hide--lap {
    display: none !important; } }

.sprite--inline-block, .svg-icon, .flex-next, .flex-prev {
  vertical-align: middle;
  display: inline-block; }

.icon--rounded {
  border-radius: 50%;
  border: 2px solid #44c8f5;
  background-color: #fff !important; }

.svg-icon-download {
  margin-top: 4px;
  font-size: 0 !important; }

.bg-wires {
  position: absolute;
  width: 100%; }

@media screen and (max-width: 767px) and (orientation: landscape) {
  .bg-wires--palm-port {
    display: none !important; } }

@media screen and (max-width: 767px) and (orientation: landscape) {
  .bg-wires--palm-land {
    display: block !important; } }

.rotated--90, .pg-module-box__footer__btn.closed > * {
  -webkit-transform: rotate(90deg);
      -ms-transform: rotate(90deg);
          transform: rotate(90deg); }

.rotated--180 {
  -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
          transform: rotate(180deg); }

.rotated--270, .pg-module-box__footer__btn.open > *, .pg-module-box--open .pg-module-box__footer__btn > * {
  -webkit-transform: rotate(270deg);
      -ms-transform: rotate(270deg);
          transform: rotate(270deg); }

#wrapTyp4 {
  min-width: inherit;
  overflow: visible;
  margin-bottom: 30px; }
  @media only screen and (max-width: 767px) {
    #wrapTyp4 {
      border-width: 5px;
      top: 0; } }

@media only screen and (max-width: 767px) {
  #content > .artikeluschrift, #content > .artikeltext {
    padding-left: 15px;
    padding-right: 15px; } }

.bu {
  display: block;
  font-size: 9px;
  line-height: 12px;
  margin-top: 5px; }

h3, .gamma {
  line-height: 1.1em !important; }

.element-description {
  margin-top: 30px;
  border-top: 1px solid #000;
  padding-top: 30px;
  padding-bottom: 30px; }

.artikeltext {
  overflow: visible;
  background-color: #fff;
  min-width: inherit; }

.navi-footer {
  position: absolute;
  bottom: -1px;
  z-index: 10000;
  height: 26px;
  background-color: #fff;
  left: 50px;
  right: 50px;
  border: 2px solid #00caf2;
  border-radius: 7px;
  color: #000;
  line-height: 23px !important;
  font-size: 12px !important; }

.navi-footer a {
  color: #000; }

div.gi-lightbox {
  background-color: white;
  border: 5px none #fff;
  border-radius: 34px; }

#fancybox-outer {
  background-color: transparent !important; }

.svg-arrow-down, .sprachdropdown:after, .svg-icon-abschluss, .svg-icon-arrow--ci-second, .flex-next, .flex-prev, .svg-icon-arrow--negative, .svg-icon-arrow--positive, .svg-icon-ausstellung, .svg-icon-banderole, .pg-slider__band, .svg-icon-bildung, .svg-icon-download, .svg-icon-energie, .svg-icon-forschung, .svg-icon-horizont, .svg-icon-informatik, .svg-icon-kommunikation, .svg-icon-kreuz, #fancybox-close, .svg-icon-logo-erfinderland, .svg-icon-lupe, .svg-icon-marker-gruen, .svg-icon-marker-violet, .svg-icon-marker-violet--left, .svg-icon-material, .svg-icon-medizin, .svg-icon-mobilitaet, .svg-icon-nobel, .svg-icon-optik, .svg-icon-praxis, .svg-icon-sprache-de, .svg-icon-sprache-en, .svg-icon-sprachen, .svg-icon-studieren, .svg-icon-violet-mask, .pg-module-map__flag__info:before {
  background: url(svg/sprite.css-111f71bc.svg) no-repeat; }

.svg-arrow-down, .sprachdropdown:after {
  background-position: 88.46175793658342% 74.86789299114643%;
  width: 9.843px;
  height: 8.524px; }

.svg-icon-abschluss {
  background-position: 99.91612090680101% 45.026178010471206%;
  width: 86px;
  height: 86px; }

.svg-icon-arrow--ci-second, .flex-next, .flex-prev {
  background-position: 88.90446013819074% 78.85355555555556%;
  width: 11.333px;
  height: 18px; }

.svg-icon-arrow--negative {
  background-position: 86.50170565250485% 78.85355555555556%;
  width: 11.333px;
  height: 18px; }

.svg-icon-arrow--positive {
  background-position: 84.09895116681898% 78.85355555555556%;
  width: 11.333px;
  height: 18px; }

.svg-icon-ausstellung {
  background-position: 43.32493702770781% 54.79947643979058%;
  width: 86px;
  height: 86px; }

.svg-icon-banderole, .pg-slider__band {
  background-position: 50.33631123919309% 0;
  width: 136px;
  height: 129px; }

.svg-icon-bildung {
  background-position: 78.25365239294712% 22.513089005235603%;
  width: 86px;
  height: 86px; }

.svg-icon-download {
  background-position: 86.02549533294008% 75.24734282820638%;
  width: 21.896px;
  height: 10.841px; }

.svg-icon-energie {
  background-position: 0 77.31256544502618%;
  width: 86px;
  height: 86px; }

.svg-icon-forschung {
  background-position: 21.662468513853906% 77.31256544502618%;
  width: 86px;
  height: 86px; }

.svg-icon-horizont {
  background-position: 21.662468513853906% 99.82565445026178%;
  width: 86px;
  height: 86px; }

.svg-icon-informatik {
  background-position: 64.98740554156171% 77.31256544502618%;
  width: 86px;
  height: 86px; }

.svg-icon-kommunikation {
  background-position: 99.91612090680101% 0;
  width: 86px;
  height: 86px; }

.svg-icon-kreuz, #fancybox-close {
  background-position: 74.72708803611738% 89.09672897196262%;
  width: 40px;
  height: 40px; }

.svg-icon-logo-erfinderland {
  background-position: 0 0;
  width: 174.667px;
  height: 209.334px; }

.svg-icon-lupe {
  background-position: 79.44572748267899% 70.65406698564594%;
  width: 50px;
  height: 50px; }

.svg-icon-marker-gruen {
  background-position: 40.56996077450886% 97.85924716944334%;
  width: 59.041px;
  height: 78.324px; }

.svg-icon-marker-violet {
  background-position: 41.19903103837871% 33.10442521479383%;
  width: 59.041px;
  height: 78.324px; }

.svg-icon-marker-violet--left {
  background-position: 55.12514181795881% 33.10442521479383%;
  width: 59.041px;
  height: 78.324px; }

.svg-icon-material {
  background-position: 0 99.82565445026178%;
  width: 86px;
  height: 86px; }

.svg-icon-medizin {
  background-position: 78.25365239294712% 0;
  width: 86px;
  height: 86px; }

.svg-icon-mobilitaet {
  background-position: 99.91612090680101% 67.53926701570681%;
  width: 86px;
  height: 86px; }

.svg-icon-nobel {
  background-position: 99.91612090680101% 22.513089005235603%;
  width: 86px;
  height: 86px; }

.svg-icon-optik {
  background-position: 78.25365239294712% 45.026178010471206%;
  width: 86px;
  height: 86px; }

.svg-icon-praxis {
  background-position: 21.662468513853906% 54.79947643979058%;
  width: 86px;
  height: 86px; }

.svg-icon-sprache-de {
  background-position: 53.3581986143187% 89.09672897196262%;
  width: 50px;
  height: 40px; }

.svg-icon-sprache-en {
  background-position: 64.9055427251732% 89.09672897196262%;
  width: 50px;
  height: 40px; }

.svg-icon-sprachen {
  background-position: 0 54.79947643979058%;
  width: 86px;
  height: 86px; }

.svg-icon-studieren {
  background-position: 43.32493702770781% 77.31256544502618%;
  width: 86px;
  height: 86px; }

.svg-icon-violet-mask, .pg-module-map__flag__info:before {
  background-position: 56.73708956323437% 53.42483583399902%;
  width: 28.271px;
  height: 76.171px; }

.pg-module, .pg-module--unpadded {
  padding: 15px;
  line-height: 20px; }

@media only screen and (min-width: 1025px) {
  .pg-module--unpadded {
    padding-left: 0;
    padding-right: 0; } }

.pg-img {
  margin-bottom: 15px;
  padding-top: 3px;
  position: relative;
  overflow: hidden; }
  .pg-img > img {
    width: 100%;
    height: auto;
    margin-bottom: 7.5px; }
  .pg-img > .pg-img__desc {
    color: #44c8f5; }

.svg-icon-lupe {
  margin-top: -61px;
  position: relative;
  float: right; }

.pg-module-map {
  position: relative; }
  .pg-module-map > img {
    width: 100%;
    height: auto; }

.pg-video > * {
  width: 100%; }

.pg-module-map__flag__active {
  display: none;
  position: absolute;
  bottom: 1px;
  left: 5px; }
  .pg-module-map__flag__active > .svg-icon, .pg-module-map__flag__active > .flex-next, .pg-module-map__flag__active > .flex-prev {
    position: absolute;
    bottom: 0; }

.pg-module-map__flag__marker {
  position: absolute;
  bottom: 0; }

.pg-module-map__flag {
  position: absolute;
  cursor: pointer;
  width: 1px;
  height: 1px; }
  .pg-module-map__flag:hover {
    z-index: 966; }
    .pg-module-map__flag:hover > .pg-module-map__flag__active {
      display: block; }
    .pg-module-map__flag:hover > .pg-module-map__flag__marker {
      display: none; }

.pg-module-map__flag__info {
  color: #fff;
  padding-right: 5px;
  line-height: 1;
  height: auto;
  position: absolute;
  top: -77px;
  left: 37px;
  overflow: hidden;
  padding-left: 22px; }
  .pg-module-map__flag__info:before {
    content: "";
    display: block;
    position: absolute;
    left: -7px; }
  .pg-module-map__flag__info > div {
    padding-top: 7px;
    padding-bottom: 7px;
    padding-right: 7px;
    margin-left: -1px;
    background: #6F2160; }

.fancy-bg {
  display: none; }

.pg-lightbox-content {
  padding: 37.5px 15px 15px 15px;
  max-width: 510px; }
  .pg-lightbox-content.image-only {
    max-width: 800px; }
  @media only screen and (max-width: 767px) {
    .pg-lightbox-content {
      padding: 7.5px; } }
  .pg-lightbox-content img {
    width: 100%;
    height: auto; }
    @media only screen and (max-width: 767px) {
      .pg-lightbox-content img {
        margin-top: 15px; } }

.pg-module-box {
  position: relative;
  margin-bottom: 15px; }
  .pg-module-box.pg-module-box--icon-offset {
    margin-top: 40px;
    margin-bottom: 0; }
  .pg-module-box .icon--rounded {
    position: absolute;
    top: -30px;
    right: 15px; }
    @media only screen and (max-width: 767px) {
      .pg-module-box .icon--rounded {
        -webkit-transform-origin: right;
            -ms-transform-origin: right;
                transform-origin: right;
        -webkit-transform: scale(0.8);
            -ms-transform: scale(0.8);
                transform: scale(0.8); } }

.pg-module-box__head {
  overflow: visible;
  /*
	> h2 {
		color: $color-ci-2nd;
		margin-top: 1em;
		padding-top: $base-spacing-unit;
	}
*/ }
  .pg-module-box__head .grid {
    margin-left: -30px; }
    .pg-module-box__head .grid > * {
      padding-left: 30px; }
  .pg-module-box--icon-offset > .pg-module-box__head {
    margin-top: -40px; }
    .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt {
      padding-top: 40px; }
      @media only screen and (max-width: 767px) {
        .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt {
          margin-bottom: 15px; } }
      .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt > * {
        padding-right: 85px; }
      @media only screen and (max-width: 767px) {
        .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt > h1, .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt > h2, .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt > h3, .pg-module-box--icon-offset > .pg-module-box__head .pg-module-box__head__txt > h4 {
          font-size: 1.3em; } }
  .pg-module-box--fixed-height > .pg-module-box__head {
    height: 200px; }

.pg-module-box__inner {
  -webkit-transition: height 0.3s;
          transition: height 0.3s;
  height: 0;
  overflow: hidden; }
  .pg-module-box--open .pg-module-box__inner {
    height: inherit; }

.pg-module-box__content {
  padding-bottom: 15px; }

.pg-module-box__content__headline {
  border-bottom: 2px solid #44c8f5;
  margin-bottom: 7.5px; }
  .pg-module-box__content__headline > * {
    margin-bottom: 0; }

.pg-module-box__footer {
  margin-top: 15px;
  border-bottom: 2px solid #44c8f5; }
  .pg-module-box__footer.align--right {
    text-align: right; }

.pg-module-box__footer__btn {
  cursor: pointer;
  display: inline-block;
  width: 70px;
  height: 20px;
  background: #44c8f5;
  margin-bottom: -12px;
  text-align: center;
  overflow: hidden; }
  .pg-module-box__footer__btn * {
    font-size: 16px;
    color: #fff; }
    .pg-module-box__footer__btn *:hover {
      color: #fff;
      text-decoration: underline; }

/*
 * jQuery FlexSlider v1.8
 * http://www.woothemes.com/flexslider/
 *
 * Copyright 2012 WooThemes
 * Free to use under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
/* Browser Resets */
.flex-container a:active,
.flexslider a:active,
.flex-container a:focus,
.flexslider a:focus {
  outline: none; }

.slides,
.flex-control-nav,
.flex-direction-nav {
  margin: 0;
  padding: 0;
  list-style: none; }

/* FlexSlider Necessary Styles
*********************************/
.flexslider {
  margin: 0;
  padding: 0; }

.flexslider .slides > li {
  display: none;
  -webkit-backface-visibility: hidden; }

/* Hide the slides before the JS is loaded. Avoids image jumping */
.flexslider .slides img {
  max-width: 100%;
  display: block; }

.flex-pauseplay span {
  text-transform: capitalize; }

/* Clearfix for the .slides element */
.slides:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0; }

html[xmlns] .slides {
  display: block; }

* html .slides {
  height: 1%; }

/* No JavaScript Fallback */
/* If you are not using another script, such as Modernizr, make sure you
 * include js that eliminates this class on page load */
.no-js .slides > li:first-child {
  display: block; }

/* FlexSlider Default Theme
*********************************/
.flexslider {
  background: #fff;
  border: 4px solid #fff;
  position: relative;
  border-radius: 5px;
  zoom: 1; }

.flexslider .slides {
  zoom: 1; }

.flexslider .slides > li {
  position: relative;
  overflow: hidden; }

/* Suggested container for "Slide" animation setups. Can replace this with your own, if you wish */
.flex-container {
  zoom: 1;
  position: relative; }

/* Caption style */
/* IE rgba() hack */
.flex-caption {
  background: none;
  -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);
  zoom: 1; }

.flex-caption {
  width: 96%;
  padding: 2%;
  margin: 0;
  position: absolute;
  left: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.3);
  color: #fff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
  font-size: 14px;
  line-height: 18px; }

/* Direction Nav */
.flex-direction-nav {
  height: 0; }

.flex-direction-nav li a {
  width: 52px;
  height: 52px;
  margin: -13px 0 0;
  display: block;
  background: url(theme/bg_direction_nav.png) no-repeat;
  position: absolute;
  top: 50%;
  cursor: pointer;
  text-indent: -999em; }

.flex-direction-nav li .next {
  background-position: -52px 0;
  right: -21px; }

.flex-direction-nav li .prev {
  left: -20px; }

.flex-direction-nav li .disabled {
  opacity: .3;
  filter: alpha(opacity=30);
  cursor: default; }

/* Control Nav */
.flex-control-nav {
  width: 100%;
  position: absolute;
  bottom: -30px;
  text-align: center; }

.flex-control-nav li {
  margin: 0 0 0 5px;
  display: inline-block;
  zoom: 1;
  *display: inline; }

.flex-control-nav li:first-child {
  margin: 0; }

.flex-control-nav li a {
  width: 13px;
  height: 13px;
  display: block;
  background: url(theme/bg_control_nav.png) no-repeat;
  cursor: pointer;
  text-indent: -999em; }

.flex-control-nav li a:hover {
  background-position: 0 -13px; }

.flex-control-nav li a.active {
  background-position: 0 -26px;
  cursor: default; }

.flexslider {
  margin-bottom: 15px;
  border: none;
  border-radius: 0; }

.flex-control-nav {
  position: inherit; }

.pg-slider {
  position: relative;
  margin-bottom: 15px; }

.pg-slider-navigation {
  text-align: center;
  padding-top: 7.5px;
  padding-bottom: 7.5px;
  border-top: 1px solid #96c93f;
  border-bottom: 1px solid #96c93f; }

.pg-slider-controls-container {
  display: inline-block;
  vertical-align: middle;
  padding: 0 40px 0 40px;
  max-width: 80%; }
  @media only screen and (max-width: 767px) {
    .pg-slider-controls-container {
      padding: 0; } }
  .pg-slider-controls-container > .flex-control-nav > * {
    width: auto !important;
    min-width: inherit !important;
    float: none !important; }
    .pg-slider-controls-container > .flex-control-nav > * > a {
      border: 1px solid #fff;
      padding: 5px;
      border-radius: 50%;
      display: block;
      width: 27px;
      height: 27px;
      font-size: 0; }
      .pg-slider-controls-container > .flex-control-nav > * > a.active {
        border-color: #96c93f; }
        .pg-slider-controls-container > .flex-control-nav > * > a.active:before {
          background-color: #96c93f; }
      .pg-slider-controls-container > .flex-control-nav > * > a:before {
        content: "";
        display: block;
        width: 15px;
        height: 15px;
        border-radius: 50%;
        background: #44c8f5; }

.flex-next, .flex-prev {
  font-size: 0;
  cursor: pointer; }
  @media only screen and (max-width: 767px) {
    .flex-next, .flex-prev {
      display: none; } }

.flex-prev {
  -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
          transform: rotate(180deg); }

.flex-caption {
  width: 100%;
  padding: 7.5px;
  left: 60%;
  height: 100%;
  width: 40%;
  right: 0;
  bottom: 0;
  background: #44c8f5;
  color: #fff;
  font-size: 14px;
  text-shadow: none;
  line-height: 18px; }
  .flex-caption * {
    color: #fff !important;
    margin-bottom: 0; }
  @media only screen and (max-width: 767px) {
    .flex-caption {
      display: none; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    .flex-caption {
      display: none; } }

#fancybox-close {
  width: 40px !important;
  height: 40px !important;
  top: 5px !important;
  right: -21px !important;
  width: 30px !important;
  -webkit-transform: scale(0.8);
      -ms-transform: scale(0.8);
          transform: scale(0.8); }

div.gi-lightbox {
  padding: 20px;
  display: none;
  background-color: white; }

.flex-caption.flex-caption--mobile {
  left: 0 !important;
  height: inherit !important;
  width: 100%; }
  @media only screen and (max-width: 767px) {
    .flex-caption.flex-caption--mobile {
      display: block !important;
      position: inherit;
      padding: 8px;
      float: left; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    .flex-caption.flex-caption--mobile {
      display: block !important;
      position: static; } }
  @media only screen and (min-width: 1025px) {
    .flex-caption.flex-caption--mobile {
      display: none !important; } }

.slides > * > img {
  width: 100%;
  height: auto; }

.pg-slider__band {
  position: absolute;
  z-index: 9000;
  right: -12px;
  top: 18px; }
  @media only screen and (max-width: 767px) {
    .pg-slider__band {
      -webkit-transform-origin: right;
          -ms-transform-origin: right;
              transform-origin: right;
      -webkit-transform: scale(0.5);
          -ms-transform: scale(0.5);
              transform: scale(0.5); } }

.pg-slider__band__icon {
  padding-top: 24px;
  padding-left: 15px; }

.logo {
  position: absolute;
  display: block;
  right: 137px;
  border: 2px solid #44c8f5;
  border-radius: 10px;
  padding: 15px;
  text-align: center;
  background-color: #fff; }
  @media only screen and (max-width: 767px) {
    .logo {
      float: none;
      margin: 15px 7.5px;
      position: inherit;
      padding: 0; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    .logo {
      width: 33%;
      bottom: 0;
      right: 16px; } }

.obereNaviTyp4 {
  right: 12px;
  top: 30px; }
  @media only screen and (max-width: 767px) {
    .obereNaviTyp4 {
      right: 20px;
      top: 1px; } }

.sprachdropdown {
  padding: 5px;
  background: #44c8f5;
  border-radius: 10px;
  margin-top: -4px;
  -webkit-transform: scale(0.85);
      -ms-transform: scale(0.85);
          transform: scale(0.85);
  position: relative; }
  .sprachdropdown:after {
    content: "";
    display: block;
    position: absolute;
    right: 13px;
    top: 20px; }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    .sprachdropdown {
      margin-top: 0;
      margin-right: 0; } }
  @media only screen and (max-width: 767px) {
    .sprachdropdown {
      margin-right: -19px;
      margin-top: -7px;
      background: none;
      overflow: visible; }
      .sprachdropdown:after {
        display: none; } }

@media only screen and (max-width: 767px) {
  .languageselectorForm {
    display: block;
    position: relative;
    width: 54.153px;
    height: 49.811px; } }

.languageselectorForm:after {
  content: "";
  display: block;
  margin-top: -100%; }
  @media only screen and (min-width: 768px) {
    .languageselectorForm:after {
      display: none; } }

.languageselectorSelect {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  width: 108px;
  height: 40px;
  border: 1px solid #44c8f5; }
  @media only screen and (max-width: 767px) {
    .languageselectorSelect {
      opacity: 0;
      width: 50px;
      height: 50px; } }

#wrapcontentTyp4 {
  overflow: visible; }

#headerTyp4 {
  margin: 0 auto;
  max-width: 980px;
  width: 100%;
  position: inherit;
  margin-top: 30px; }
  @media only screen and (max-width: 767px) {
    #headerTyp4 {
      position: relative;
      top: 0;
      margin-top: 0; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    #headerTyp4 {
      position: relative;
      top: 0;
      padding: 0 15px 0 15px; } }

.hauptnaviJoker2 {
  background: url(../images/logo-erfinderland.png) no-repeat;
  width: 175px;
  height: 209px;
  display: inline-block;
  vertical-align: middle;
  position: relative;
  z-index: 9000;
  cursor: pointer; }
  @media only screen and (max-width: 767px) {
    .hauptnaviJoker2 {
      display: none; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    .hauptnaviJoker2 {
      vertical-align: bottom; } }

.logoJoker1 {
  background: url(../images/logo-erfinderland.png) no-repeat;
  width: 175px;
  height: 209px;
  display: none;
  margin: 20px auto;
  cursor: pointer; }
  @media only screen and (max-width: 767px) {
    .logoJoker1 {
      display: block; } }

.hauptnaviJoker3 {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5000;
  display: none; }
  .hauptnaviJoker3.active {
    display: block; }

#hauptnavi {
  position: inherit;
  float: none;
  display: inline-block;
  margin-left: 0;
  max-width: inherit;
  left: inherit;
  z-index: 7000; }
  @media only screen and (max-width: 767px) {
    #hauptnavi {
      min-height: inherit;
      position: absolute;
      width: 100%; } }
  @media only screen and (min-width: 768px) and (max-width: 1024px) {
    #hauptnavi {
      position: relative;
      width: 33%;
      vertical-align: bottom; } }
  #hauptnavi > ul {
    float: none;
    border-bottom: 2px solid #44c8f5;
    position: absolute;
    right: 0;
    left: 17%;
    top: 160px;
    text-align: right; }
    @media only screen and (min-width: 768px) and (max-width: 1024px) {
      #hauptnavi > ul {
        bottom: 0;
        border-radius: 10px;
        overflow: hidden;
        top: auto; } }
    @media only screen and (max-width: 767px) {
      #hauptnavi > ul {
        height: 33px;
        width: 48px;
        padding-top: 20px;
        overflow: hidden;
        background-position-x: 8px;
        background-position-y: 8px;
        border-radius: 10px;
        margin-left: 8px;
        z-index: 7000;
        left: 0;
        top: auto; }
        #hauptnavi > ul.active {
          height: inherit;
          width: 100%;
          left: 0;
          margin-top: -20px;
          margin-left: 0;
          background-image: none;
          border-top-left-radius: 30px;
          border-top-right-radius: 30px;
          border-bottom-right-radius: 0;
          border-bottom-left-radius: 0; }
          #hauptnavi > ul.active > li {
            display: block !important; } }
    @media only screen and (max-width: 767px) {
      #hauptnavi > ul:hover li {
        display: none; } }
    #hauptnavi > ul > li {
      display: none;
      overflow: auto;
      padding: 0 8px 0 8px;
      margin-right: 15px;
      line-height: 2; }
      @media only screen and (max-width: 767px) {
        #hauptnavi > ul > li {
          display: none !important; } }
      @media only screen and (min-width: 768px) and (max-width: 1024px) {
        #hauptnavi > ul > li {
          display: block;
          background-color: #44c8f5;
          line-height: 1.6;
          margin-right: 0; }
          #hauptnavi > ul > li > a {
            line-height: 1.6 !important;
            text-align: left; }
          #hauptnavi > ul > li.active {
            margin-right: 0 !important;
            margin-bottom: 0 !important; } }
      @media only screen and (min-width: 1025px) {
        #hauptnavi > ul > li {
          display: inline-block;
          margin-bottom: -18px;
          border-radius: 10px;
          background-color: #44c8f5;
          vertical-align: middle; } }
      #hauptnavi > ul > li:hover {
        color: #fff;
        background: #96c93f; }
      #hauptnavi > ul > li.active {
        clear: left;
        float: none;
        padding: 0 8px 0 8px;
        margin-right: 15px;
        color: #fff;
        text-align: left;
        font-weight: normal; }
        @media only screen and (min-width: 768px) {
          #hauptnavi > ul > li.active {
            margin-bottom: -18px;
            background: #96c93f; } }
        #hauptnavi > ul > li.active > a, #hauptnavi > ul > li.active > a:hover {
          color: #fff; }
      #hauptnavi > ul > li > a {
        line-height: 2;
        padding: 0 !important;
        font-weight: normal;
        color: #fff; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXQuY3NzIiwiY29uZmlnL19zZXR0aW5ncy5zY3NzIiwiaW51aXQvX2RlZmF1bHRzLnNjc3MiLCJpbnVpdC9faW51aXQuc2NzcyIsImludWl0L2dlbmVyaWMvX21peGlucy5zY3NzIiwiaW51aXQvZ2VuZXJpYy9fbm9ybWFsaXplLnNjc3MiLCJpbnVpdC9nZW5lcmljL19yZXNldC5zY3NzIiwiaW51aXQvZ2VuZXJpYy9fY2xlYXJmaXguc2NzcyIsImludWl0L2dlbmVyaWMvX3NoYXJlZC5zY3NzIiwiaW51aXQvYmFzZS9fbWFpbi5zY3NzIiwiaW51aXQvYmFzZS9faGVhZGluZ3Muc2NzcyIsImludWl0L2Jhc2UvX3BhcmFncmFwaHMuc2NzcyIsImludWl0L2Jhc2UvX3NtYWxscHJpbnQuc2NzcyIsImludWl0L2Jhc2UvX3F1b3Rlcy5zY3NzIiwiaW51aXQvYmFzZS9fY29kZS5zY3NzIiwiaW51aXQvYmFzZS9faW1hZ2VzLnNjc3MiLCJpbnVpdC9iYXNlL19saXN0cy5zY3NzIiwiaW51aXQvYmFzZS9fdGFibGVzLnNjc3MiLCJpbnVpdC9iYXNlL19mb3Jtcy5zY3NzIiwiaW51aXQvb2JqZWN0cy9fZ3JpZHMuc2NzcyIsImludWl0L29iamVjdHMvX25hdi5zY3NzIiwiaW51aXQvZ2VuZXJpYy9fd2lkdGhzLnNjc3MiLCJpbnVpdC9nZW5lcmljL19wdXNoLnNjc3MiLCJpbnVpdC9nZW5lcmljL19wdWxsLnNjc3MiLCJpbnVpdC9nZW5lcmljL19icmFuZC5zY3NzIiwiaW51aXQvZ2VuZXJpYy9faGVscGVyLnNjc3MiLCJpbnVpdC9nZW5lcmljL19kZWJ1Zy5zY3NzIiwibGF5b3V0L19tYWluLnNjc3MiLCJzcHJpdGVzL19zcHJpdGUuc2NzcyIsImxheW91dC9tb2R1bGVzL21vZHVsZS5zY3NzIiwibGF5b3V0L21vZHVsZXMvdG9nZ2xlLnNjc3MiLCJsYXlvdXQvbW9kdWxlcy9zbGlkZXIuc2NzcyIsImxheW91dC9tb2R1bGVzL25hdmlnYXRpb24uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUNVakI7d0NBRXdDO0FBRXhDOztHQUVHO0FBT0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBaUJIO3dDQUV3QztBQUN4Qzs7R0FFRztBQUlIOztHQUVHO0FBT0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBOEJIO3dDQUV3QztBQUN4Qzs7OztHQUlHO0FBTUg7d0NBRXdDO0FBR3hDOzsyQkFFMkI7QUFzQnZCO0VBQ0UsZUFyQlksRUFzQmI7O0FBQ0o7RUFDSywwQkF4QlksRUF5QmI7O0FBTEQ7RUFDRSxlQXBCZ0IsRUFxQmpCOztBQUNKO0VBQ0ssMEJBdkJnQixFQXdCakI7O0FBTEQ7RUFDRSxZQW5CWSxFQW9CYjs7QUFDSjtFQUNLLHVCQXRCWSxFQXVCYjs7QUFMRDtFQUNFLFlBbEJZLEVBbUJiOztBQUNKO0VBQ0ssdUJBckJZLEVBc0JiOztBQUxEO0VBQ0UsWUFuQlksRUFvQmI7O0FBQ0o7RUFDSyx1QkF0QlksRUF1QmI7O0FBTEQ7RUFDRSxlQWhCbUIsRUFpQnBCOztBQUNKO0VBQ0ssMEJBbkJtQixFQW9CcEI7O0FBTEQ7RUFDRSxlQWZvQixFQWdCckI7O0FBQ0o7RUFDSywwQkFsQm9CLEVBbUJyQjs7QUNqSkw7d0NBRXdDO0FBQ3hDOzs7R0FHRztBQU1IO3dDQUV3QztBQUN4Qzs7O0dBR0c7QUFPSDt3Q0FFd0M7QUFDeEM7OztHQUdHO0FBT0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBSUg7O0dBRUc7QUFHSDs7R0FFRztBQU9IO3dDQUV3QztBQUN4Qzs7R0FFRztBQUdIOzs7R0FHRztBQUdIOzs7R0FHRztBQUVIOztHQUVHO0FBUUg7O0dBRUc7QUFPSDs7R0FFRztBQVNIO3dDQUV3QztBQUN4Qzs7R0FFRztBQW1CSDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUFHSDs7O0dBR0c7QUFJSDs7R0FFRztBQVVIO3dDQUV3QztBQUN4Qzs7R0FFRztBQUlIOztHQUVHO0FBT0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBOEJIO3dDQUV3QztBQUN4Qzs7OztHQUlHO0FDN05IO3dDQUV3QztBQUN4Qzs7OztHQUlHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBTUg7d0NBRXdDO0FBQ3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFERztBQU1IO3dDQUV3QztBQUN4Qzs7Ozs7Ozs7Ozs7R0FXRztBQU1IO3dDQUV3QztBQUN4Qzs7R0FFRztBRDlJSDt3Q0FFd0M7QUFDeEM7OztHQUdHO0FBTUg7d0NBRXdDO0FBQ3hDOzs7R0FHRztBQU9IO3dDQUV3QztBQUN4Qzs7O0dBR0c7QUFPSDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUFJSDs7R0FFRztBQUdIOztHQUVHO0FBT0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBR0g7OztHQUdHO0FBR0g7OztHQUdHO0FBRUg7O0dBRUc7QUFRSDs7R0FFRztBQU9IOztHQUVHO0FBU0g7d0NBRXdDO0FBQ3hDOztHQUVHO0FBbUJIO3dDQUV3QztBQUN4Qzs7R0FFRztBQUdIOzs7R0FHRztBQUlIOztHQUVHO0FBVUg7d0NBRXdDO0FBQ3hDOztHQUVHO0FBSUg7O0dBRUc7QUFPSDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUE4Qkg7d0NBRXdDO0FBQ3hDOzs7O0dBSUc7QUU3Tkg7d0NBRXdDO0FBQ3hDOzs7Ozs7OztHQVFHO0FBVUg7Ozs7Ozs7Ozs7O0dBV0c7QUFnQkg7Ozs7O0dBS0c7QUFVSDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQXdCSDs7Ozs7O0dBTUc7QUFTSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQThHSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQzdSSCw0REFBNEQ7QUFFNUQ7O2dGQUVnRjtBQUVoRjs7R0FFRztBQUVIOzs7Ozs7Ozs7Ozs7RUFZSSxlQUFlLEVBQ2xCOztBQUVEOztHQUVHO0FBRUg7OztFQUdJLHNCQUFzQixFQUN6Qjs7QUFFRDs7O0dBR0c7QUFFSDtFQUNJLGNBQWM7RUFDZCxVQUFVLEVBQ2I7O0FBRUQ7O0dBRUc7QUxtZUg7RUtoZUksY0FBYyxFQUNqQjs7QUFFRDs7Z0ZBRWdGO0FBRWhGOzs7O0dBSUc7QUFFSDtFQUNJLHdCQUF3QjtFQUFFLE9BQU87RUFDakMsK0JBQStCO0VBQUUsT0FBTztFQUN4QywyQkFBMkI7RUFBRSxPQUFPLEVBQ3ZDOztBQUVEOztHQUVHO0FBRUg7RUFDSSxVQUFVLEVBQ2I7O0FBRUQ7O2dGQUVnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0kscUJBQXFCLEVBQ3hCOztBQUVEOztHQUVHO0FBRUg7O0VBRUksV0FBVyxFQUNkOztBQUVEOztnRkFFZ0Y7QUFFaEY7OztHQUdHO0FBRUg7RUFDSSxlQUFlO0VBQ2YsaUJBQWlCLEVBQ3BCOztBQUVEOztHQUVHO0FBRUg7RUFDSSwwQkFBMEIsRUFDN0I7O0FBRUQ7O0dBRUc7QUFFSDs7RUFFSSxrQkFBa0IsRUFDckI7O0FBRUQ7O0dBRUc7QUFFSDtFQUNJLG1CQUFtQixFQUN0Qjs7QUFFRDs7R0FFRztBQUVIO0VBRUksZ0NBQXdCO1VBQXhCLHdCQUF3QjtFQUN4QixVQUFVLEVBQ2I7O0FBRUQ7O0dBRUc7QUFFSDtFQUNJLGlCQUFpQjtFQUNqQixZQUFZLEVBQ2Y7O0FBRUQ7O0dBRUc7QUFFSDs7OztFQUlJLDhCQUE4QjtFQUM5QixlQUFlLEVBQ2xCOztBQUVEOztHQUVHO0FBRUg7RUFDSSxzQkFBc0IsRUFDekI7O0FBRUQ7O0dBRUc7QUFFSDtFQUNJLHdDQUF3QyxFQUMzQzs7QUFFRDs7R0FFRztBQUVIO0VBQ0ksZUFBZSxFQUNsQjs7QUFFRDs7R0FFRztBQUVIOztFQUVJLGVBQWU7RUFDZixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLHlCQUF5QixFQUM1Qjs7QUFFRDtFQUNJLFlBQVksRUFDZjs7QUFFRDtFQUNJLGdCQUFnQixFQUNuQjs7QUFFRDs7Z0ZBRWdGO0FBRWhGOztHQUVHO0FBRUg7RUFDSSxVQUFVLEVBQ2I7O0FBRUQ7O0dBRUc7QUFFSDtFQUNJLGlCQUFpQixFQUNwQjs7QUFFRDs7Z0ZBRWdGO0FBRWhGOztHQUVHO0FBRUg7RUFDSSxVQUFVLEVBQ2I7O0FBRUQ7O2dGQUVnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0ksMEJBQTBCO0VBQzFCLGNBQWM7RUFDZCwrQkFBK0IsRUFDbEM7O0FBRUQ7OztHQUdHO0FBRUg7RUFDSSxVQUFVO0VBQUUsT0FBTztFQUNuQixXQUFXO0VBQUUsT0FBTyxFQUN2Qjs7QUFFRDs7OztHQUlHO0FBRUg7Ozs7RUFJSSxxQkFBcUI7RUFBRSxPQUFPO0VBQzlCLGdCQUFnQjtFQUFFLE9BQU87RUFDekIsVUFBVTtFQUFFLE9BQU8sRUFDdEI7O0FBRUQ7OztHQUdHO0FBRUg7O0VBRUksb0JBQW9CLEVBQ3ZCOztBQUVEOzs7OztHQUtHO0FBRUg7O0VBRUkscUJBQXFCLEVBQ3hCOztBQUVEOzs7Ozs7R0FNRztBQUVIOzs7O0VBSUksMkJBQTJCO0VBQUUsT0FBTztFQUNwQyxnQkFBZ0I7RUFBRSxPQUFPLEVBQzVCOztBQUVEOztHQUVHO0FBRUg7O0VBRUksZ0JBQWdCLEVBQ25COztBQUVEOzs7R0FHRztBQUVIOztFQUVJLCtCQUF1QjtVQUF2Qix1QkFBdUI7RUFBRSxPQUFPO0VBQ2hDLFdBQVc7RUFBRSxPQUFPLEVBQ3ZCOztBQUVEOzs7O0dBSUc7QUFFSDtFQUNJLDhCQUE4QjtFQUFFLE9BQU87RUFFdkMsZ0NBQWdDO0VBQUUsT0FBTztFQUN6Qyx3QkFBd0IsRUFDM0I7O0FBRUQ7OztHQUdHO0FBRUg7O0VBRUkseUJBQXlCLEVBQzVCOztBQUVEOztHQUVHO0FBRUg7O0VBRUksVUFBVTtFQUNWLFdBQVcsRUFDZDs7QUFFRDs7O0dBR0c7QUFFSDtFQUNJLGVBQWU7RUFBRSxPQUFPO0VBQ3hCLG9CQUFvQjtFQUFFLE9BQU8sRUFDaEM7O0FBRUQ7O2dGQUVnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0ksMEJBQTBCO0VBQzFCLGtCQUFrQixFQUNyQjs7QUMzWUQ7d0NBRXdDO0FBQ3hDOzs7R0FHRztBQUdDOztNQUVFO0FBQ0Y7RUYyQ0EsK0JFdkM4QztFRnlDMUMsMkJFekMwQztFRjBDekMsMEJFMUN5QztFRjJDdEMsdUJFM0NzQyxFQUN6Qzs7QUFJVDs7R0FFRztBQUNIOzs7Ozs7RUFNSSxVQUFTO0VBQ1QsV0FBVSxFQUNiOztBQUVEOztHQUVHO0FBQ0g7RUFDSSxhQUFZLEVBQ2Y7O0FBRUQ7O0dBRUc7QUFDSDtFQUNJLHNCQUFxQixFQUN4Qjs7QUFFRDs7R0FFRztBQUNIO0VBQ0kseUJBQXdCLEVBQzNCOztBQUVEOztHQUVHO0FBQ0g7RUFDSSxtQkFBa0IsRUFDckI7O0FBRUQ7O0dBRUc7QUFDSDs7Ozs7O0VBTUksZ0JBQWUsRUFDbEI7O0FBQ0c7Ozs7RUFJSSxhQUFZO0VBQ1osY0FBYSxFQUNoQjs7QUMvRUw7d0NBRXdDO0FBQ3hDOzs7O0dBSUc7QUFDSDtFQUVRLFlBQVc7RUFDWCxlQUFjO0VBQ2QsWUFBVyxFQUNkOztBQ2JMO3dDQUV3QztBQUN4Qzs7OztHQUlHO0FBQ0g7O0dBRUc7QUFDSDs7Ozs7Ozs7OztFQWFJLG9CUGtGb0I7RU9qRnBCLG9CQUFpQyxFQU1wQztFQUpHOzs7Ozs7Ozs7O0lBQ0kscUJBQWdDO0lBQ2hDLHNCQUFrQyxFQUNyQzs7QUFJTDs7R0FFRztBQUNIO0VBQ0ksb0JBQWU7RUFDZixvQkFBZ0IsRUFDbkI7O0FBR0Q7OztHQUdHO0FBQ0g7RUFDSSxvQkFBZ0M7RUFDaEMsMEJBQWtDLEVBQ3JDOztBQUdEOzs7R0FHRztBQUNIO0VBQ0ksa0JBQWE7RUFDYixrQkFBYyxFQUNqQjs7QUw4RkQ7O0dBRUc7QU01Skg7d0NBRXdDO0FBQ3hDO0VBQ0ksc0RSQzRDO0VRQTVDLG1CQUFrQjtFQUNsQixpQkFBZ0IsRUFDbkI7O0FDUEQ7d0NBRXdDO0FBQ3hDOzs7Ozs7R0FNRztBQUNIO0VOR0ksZ0JIb0JvQjtFR25CcEIsa0JBQXFCO0VBRWpCLHFCQUFnQixFTUp2Qjs7QUFDRDtFTkFJLGdCSHFCb0I7RUdwQnBCLHNCQUFxQjtFQUVqQixpQkFBZ0IsRU1EdkI7O0FBQ0Q7RU5ISSxnQkhzQm9CO0VHckJwQixzQkFBcUI7RUFFakIscUJBQWdCLEVNRXZCOztBQUNEO0VOTkksZ0JIdUJvQjtFR3RCcEIsc0JBQXFCO0VBRWpCLHFCQUFnQixFTUt2Qjs7QUFDRDtFTlRJLGdCSHdCb0I7RUd2QnBCLHNCQUFxQjtFQUVqQixrQkFBZ0IsRU1RdkI7O0FBQ0Q7RU5aSSxnQkh5Qm9CO0VHeEJwQixnQkFBcUI7RUFFakIscUJBQWdCLEVNV3ZCOztBQUdEOzs7Ozs7Ozs7R0FTRztBQUdIO0VBQ0ksaUJBQWdCLEVBQ25COztBQUdEOzs7R0FHRztBQUNIO0VOdENJLGdCSGdCb0I7RUdmcEIsa0JBQXFCO0VBRWpCLHFCQUFnQixFTXFDdkI7O0FBQ0Q7RU56Q0ksZ0JIaUJvQjtFR2hCcEIsa0JBQXFCO0VBRWpCLHFCQUFnQixFTXdDdkI7O0FBQ0Q7RU41Q0ksZ0JIa0JvQjtFR2pCcEIsa0JBQXFCO0VBRWpCLGtCQUFnQixFTTJDdkI7O0FDM0REO3dDQUV3QztBQUN4Qzs7O0dBR0c7QUFDSDs7RVBNSSxvQk9Ka0M7RVBLbEMsb0JBQXFCO0VBRWpCLHFCQUFnQixFT052Qjs7QUNWRDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUFDSDs7RVJPSSxnQkgyQm9CO0VHMUJwQixrQkFBcUI7RUFFakIscUJBQWdCLEVRUHZCOztBQUNEO0VSR0ksZUg0Qm1CO0VHM0JuQixzQkFBcUI7RUFFakIsaUJBQWdCLEVRSnZCOztBQ1pEO3dDQUV3QztBQUN4Qzs7R0FFRztBQU9IOztHQUVHO0FBRUg7O0dBRUc7QUFDSDtFQUNJLG9DQUF3QyxFQUFBO0VBRDVDO0lBSVEsaUJBQWdCO0lBQ2hCLG9CQUFtQixFQUN0QjtFQU5MO0lBUVEsaUJBQWdCO0lBQ2hCLHFCQUFvQixFQUN2QjtFQVZMO0lBYVEsaUJBQWdCO0lBQ2hCLG9CQUFtQixFQUN0QjtFQWZMO0lBaUJRLGlCQUFnQjtJQUNoQixxQkFBb0IsRUFDdkI7O0FBR0w7RUFDSSw0QkFBeUMsRUF1QjVDO0VBeEJEO0lBSVEsbUJBQXdCO0lBQ3hCLG9CQUFtQixFQUN0QjtFQU5MO0lBUVEsWUFBVztJQUNYLHdCQUF1QixFQUMxQjtFQVZMO0lBWVEsbUJBQXlCO0lBQ3pCLHFCQUFvQixFQUN2QjtFQWRMO0lBaUJRLGlCQUFnQjtJQUNoQixvQkFBbUIsRUFDdEI7RUFuQkw7SUFxQlEsaUJBQWdCO0lBQ2hCLHFCQUFvQixFQUN2Qjs7QUFJTDs7Ozs7Ozs7R0FRRztBQUNIO0VBQ0k7O09BRUc7RUFDSCxxQkFBb0IsRUFLdkI7RUFURDtJQU9RLGlCQUFnQixFQUNuQjs7QUFHTDtFQUNJLGVBQWM7RUFDZCxlQUFjLEVBS2pCO0VBUEQ7SUFLUSxpQkFBZ0IsRUFDbkI7O0FDOUZMO3dDQUV3QztBQUN4Qzs7R0FFRztBQUNIO0VBQ0ksZUFBYyxFQUNqQjs7QUFDRztFQUNJLGlCQUFnQjtFQUNoQix5QkFBd0I7RUFDeEIsZUFBYyxFQUNqQjs7QUFHTDs7Ozs7R0FLRztBQUNIO0VBQ0k7O09BRUc7RUFDSCxjQUFhO0VBQ2IsMEJBQVksRUFDZjs7QUFHRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0g7RUFDSSw4QkFBNkI7RUFBWSxTQUFTO0VBQ2xELHdDQUF1QztFQUFFLFNBQVM7RUFDbEQsb0JBQW1CO0VBQXNCLFNBQVM7RUFDbEQsZUFBYztFQUEyQixTQUFTO0VBQ2xELGVBQWMsRUFDakI7O0FBQ0c7RUFDSSxpQkFBZ0I7RUFBcUIsU0FBUyxFQUNqRDs7QUM5REw7d0NBRXdDO0FBQ3hDOztHQUVHO0FBQ0g7O0dBRUc7QUFDSDtFQUNJLGdCQUFlLEVBQ2xCOztBQUdEOztHQUVHO0FBQ0g7O0VBRUksZ0JBQWUsRUFDbEI7O0FBR0Q7O0dBRUc7QUFDSDtFQUFjLG1CZCtCVSxFYy9Cb0I7O0FBRzVDOztHQUVHO0FBQ0g7RUFDSSxhQUFZO0VBQ1osb0Jkd0VvQjtFY3ZFcEIsa0JkdUVvQixFY3RFdkI7O0FBQ0Q7RUFDSSxZQUFXO0VBQ1gsbUJkbUVvQjtFY2xFcEIsb0Jka0VvQixFY2pFdkI7O0FBQ0Q7RUFDSSxlQUFjO0VBQ2QsbUJBQWtCO0VBQ2xCLG9CZDZEb0I7RWM1RHBCLGtCQUFpQixFQUNwQjs7QUFHRDs7Ozs7R0FLRztBQUNIO0VBQ0ksYUFBUSxFQUNYOztBQUNEO0VBQ0ksY0FBUyxFQUNaOztBQUNEO0VBQ0ksY0FBUyxFQUNaOztBQUdEOztHQUVHO0FBQ0g7RUFDSSxlQUFjLEVBQ2pCOztBQ3hFRDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUFDSDs7RUFHUyxpQkFBZ0IsRUFDbkI7O0FBR047O0dBRUc7QUFDSCxNQUFNO0FBQUE7RUFDRix5QkFBd0IsRUFDM0I7O0FDbEJEO3dDQUV3QztBQUN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxREc7QUFDSDtFQUNJLFlBQVcsRUFDZDs7QUFDRDs7RUFFSSxnQkFBMEI7RUFJMUIsaUJBQWdCLEVBQ25CO0VBSkc7SUFISjs7TUFJUSxlaEIyQzhCLEVnQnhDckMsRUFBQTs7QUFHRDs7R0FFRztBakJnd0NIO0VpQjl2Q0ksbUJBQWtCLEVBQ3JCOztBakJnd0NEO0VpQjl2Q0ksaUJBQWdCLEVBQ25COztBakJnd0NEO0VpQjl2Q0ksdUJBQXNCLEVBQ3pCOztBakJnd0NEO0VpQjl2Q0ksb0JBQW1CLEVBQ3RCOztBQUNEO0VBQ0ksa0JBQWlCLEVBQ3BCOztBQUVEOzs7OztHQUtHO0FBQ0g7RUFBVSxVQUFXLEVBQUU7O0FBQ3ZCO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLGFBQWEsRUFBRTs7QUFBSSxTQUFTO0FBQ3RDO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxXQUFXLEVBQUU7O0FBQU0sU0FBUztBQUN0QztFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxlQUFlLEVBQUU7O0FBQUUsU0FBUztBQUN0QztFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxhQUFhLEVBQUU7O0FBQUksU0FBUztBQUN0QztFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxXQUFXLEVBQUU7O0FBQ3ZCO0VBQVUsV0FBVyxFQUFFOztBQUFNLFNBQVM7QUFDdEM7RUFBVSxXQUFXLEVBQUU7O0FBQ3ZCO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLGFBQWEsRUFBRTs7QUFBSSxTQUFTO0FBQ3RDO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLGVBQWUsRUFBRTs7QUFBRSxTQUFTO0FBQ3RDO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLFdBQVcsRUFBRTs7QUFBTSxRQUFRO0FBQ3JDO0VBQVUsV0FBVyxFQUFFOztBQUN2QjtFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxhQUFhLEVBQUU7O0FBQUksU0FBUztBQUN0QztFQUFVLFdBQVcsRUFBRTs7QUFDdkI7RUFBVSxXQUFXLEVBQUU7O0FBR3ZCOztHQUVHO0FBQ0g7O0VBSVEsdUJoQjNIZ0IsRWdCZ0luQjtFQVRMOztJQU9ZLGFBQVksRUFDZjs7QUFSVDtFQVlRLHlCQUF3QixFQUMzQjs7QUFiTDtFQWdCUSx3QkFBdUIsRUFDMUI7O0FBSUw7O0dBRUc7QUFDSDtFQUdRLHVCQUFzQjtFQUFFLGtEQUFrRCxFQUM3RTs7QUFJTDs7R0FFRztBQUNIO0VBQ0ksMEJBQXlCLEVBQzVCOztBQ2xLRDt3Q0FFd0M7QUFDeEM7Ozs7R0FJRztBQUNIO0VBQ0ksY2pCaUdvQixFaUJoR3ZCOztBQUdEOzs7Ozs7Ozs7R0FTRztBQUNIOztFQUVJOztPQUVHLEVBQ047O0FBR0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNIO0VBQ0ksaUJBQWdCO0VBQ2hCLFVBQVMsRUFDWjs7QUFJRztFQUNJLGlCQUFnQixFQUNuQjs7QUFHTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNIOztFQUVJLGVBQWMsRUFDakI7O0FBQ0c7Ozs7O09BS0c7QUFDSDtFQUNJLGVBQWM7RUFDZCxvQkFBbUIsRUFDdEI7O0FBR0w7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSDtFQUNJLGlCQUFnQjtFQUNoQixVQUFTLEVBQ1o7O0FBQ0c7O09BRUc7QUFDSDs7O0VBR0ksc0JBQXFCLEVBQ3hCOztBQUdMOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0g7RUFDSSxzQkFBcUI7RUFDckIsY0FBYSxFQUNoQjs7QUFHRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQVM7QUFBQTtFQUNMLHNCQUFxQjtFQUNyQixtQkFBa0IsRUFDckI7O0FBQ0Q7O0VBRUksb0JBQW1CLEVBQ3RCOztBZkREOztHQUVHO0FnQjVLSDt3Q0FFd0M7QUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBR0g7O0dBRUc7QUFDSDtFQUNJLG1CbEJpRW9CO0VrQmhFcEIsaUJBQWdCO0VBQ2hCLGlCQUFnQixFQUNuQjs7QUFHRzs7T0FFRztBQUNIO0VBQ0ksZUFBYyxFQUNqQjs7QUFHRDs7T0FFRztBQUNIO0VBQ0ksc0JBQXFCO0VBQ3JCLFlBQVc7RUFDWCxtQmxCNkNnQjtFa0I1Q2hCLG9CQUFtQixFQUl0Qjs7QUNoRUw7d0NBRXdDO0FBQ3hDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0g7RUFDSSxpQkFBZ0I7RUFDaEIsZUFBYyxFQVlqQjtFQWREOztJQVNZLHNCQUFxQjtLQUN0QixnQkFBZ0I7SUFDZixRQUFPLEVBQ1Y7O0FBS1Q7Ozs7Ozs7Ozs7R0FVRztBQUNIO0VBR1EsbUJBQWtCLEVBS3JCO0VBUkw7SUFNWSxlQUFjLEVBQ2pCOztBQUtUOzs7Ozs7Ozs7O0dBVUc7QUFDSDtFQUNJLG1CQUFrQixFQUNyQjs7QUFHRDs7Ozs7Ozs7OztHQVVHO0FBQ0g7RUFDSSxlQUFjO0VBQ2Q7O09BRUc7RUFDSCx3QkFBdUI7RUFDdkIsc0JBQXFCO0VBQ3JCLG9CQUFtQixFQVV0QjtFQWpCRDtJQVVRLHVCQUFzQjtJQUN0QixxQkFBb0IsRUFLdkI7SUFoQkw7TUFjWSxlbkJNMEIsRW1CTDdCOztBQUtUOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIO0VBQ0ksZUFBYztFQUNkLFlBQVcsRUFTZDtFQVhEO0lBS1Esb0JBQW1CLEVBS3RCO0lBVkw7TUFRWSxlQUFjLEVBQ2pCOztBQUtUOzs7OztHQUtHO0FBQ0g7RUFLWSx5QkFBd0IsRUFDM0I7O0FBTlQ7RUFTWSxjQUFhLEVBQ2hCOztBakJzRFQ7O0dBRUc7QWtCOU1IO3dDQUV3QztBQUN4Qzs7Ozs7OztHQU9HO0FBR0M7O01BRUU7QUFDRjtFQUFFLFlBQVcsRUFBSTs7QUFHakI7O01BRUU7QUFDRjtFQUFFLFdBQVUsRUFBSTs7QUFHaEI7O01BRUU7QUFDRjtFQUFFLGVBQWMsRUFBSTs7QUFDcEI7RUFBRSxlQUFjLEVBQUk7O0FBR3BCOztNQUVFO0FBQ0Y7RUFBRSxXQUFVLEVBQUk7O0FBRWhCO0VBQUUsV0FBVSxFQUFJOztBQUdoQjs7TUFFRTtBQUNGO0VBQUUsV0FBVSxFQUFJOztBQUNoQjtFQUFFLFdBQVUsRUFBSTs7QUFDaEI7RUFBRSxXQUFVLEVBQUk7O0FBQ2hCO0VBQUUsV0FBVSxFQUFJOztBQUdoQjs7TUFFRTtBQUNGO0VBQUUsZUFBYyxFQUFJOztBQUlwQjtFQUFFLGVBQWMsRUFBSTs7QUFHcEI7O01BRUU7QUFDRjtFQUFFLGFBQVksRUFBSTs7QUFFbEI7RUFBRSxhQUFZLEVBQUk7O0FBRWxCO0VBQUUsYUFBWSxFQUFJOztBQUVsQjtFQUFFLGFBQVksRUFBSTs7QUFHbEI7O01BRUU7QUFDRjtFQUFFLFdBQVUsRUFBSTs7QUFFaEI7RUFBRSxXQUFVLEVBQUk7O0FBSWhCO0VBQUUsV0FBVSxFQUFJOztBQUVoQjtFQUFFLFdBQVUsRUFBSTs7QUFHaEI7O01BRUU7QUFDRjtFQUFFLGNBQWEsRUFBSTs7QUFJbkI7RUFBRSxlQUFlLEVBQUU7O0FBRW5CO0VBQUUsZUFBYyxFQUFJOztBQUlwQjtFQUFFLGVBQWMsRUFBSTs7QUFPeEI7Ozs7Ozs7Ozs7Ozs7R0FhRztBakIrS0s7RWlCeFJKOztNQUVFO0VBQ0Y7SUFBRSxZQUFXLEVBQUk7RUFHakI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBQ3BCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxXQUFVLEVBQUk7RUFFaEI7SUFBRSxXQUFVLEVBQUk7RUFHaEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFHbEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUloQjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsY0FBYSxFQUFJO0VBSW5CO0lBQUUsZUFBZSxFQUFFO0VBRW5CO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJLEVBQUE7O0FqQnlNaEI7RWlCOVJKOztNQUVFO0VBQ0Y7SUFBRSxZQUFXLEVBQUk7RUFHakI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBQ3BCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxXQUFVLEVBQUk7RUFFaEI7SUFBRSxXQUFVLEVBQUk7RUFHaEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFHbEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUloQjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsY0FBYSxFQUFJO0VBSW5CO0lBQUUsZUFBZSxFQUFFO0VBRW5CO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJLEVBQUE7O0FqQitNaEI7RWlCcFNKOztNQUVFO0VBQ0Y7SUFBRSxZQUFXLEVBQUk7RUFHakI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBQ3BCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxXQUFVLEVBQUk7RUFFaEI7SUFBRSxXQUFVLEVBQUk7RUFHaEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFHbEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUloQjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsY0FBYSxFQUFJO0VBSW5CO0lBQUUsZUFBZSxFQUFFO0VBRW5CO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJLEVBQUE7O0FqQnFOaEI7RWlCMVNKOztNQUVFO0VBQ0Y7SUFBRSxZQUFXLEVBQUk7RUFHakI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBQ3BCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxXQUFVLEVBQUk7RUFFaEI7SUFBRSxXQUFVLEVBQUk7RUFHaEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFHbEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUloQjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsY0FBYSxFQUFJO0VBSW5CO0lBQUUsZUFBZSxFQUFFO0VBRW5CO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJLEVBQUE7O0FqQjJOaEI7RWlCaFRKOztNQUVFO0VBQ0Y7SUFBRSxZQUFXLEVBQUk7RUFHakI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBQ3BCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxXQUFVLEVBQUk7RUFFaEI7SUFBRSxXQUFVLEVBQUk7RUFHaEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUNoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJO0VBR3BCOztNQUVFO0VBQ0Y7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFFbEI7SUFBRSxhQUFZLEVBQUk7RUFHbEI7O01BRUU7RUFDRjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUloQjtJQUFFLFdBQVUsRUFBSTtFQUVoQjtJQUFFLFdBQVUsRUFBSTtFQUdoQjs7TUFFRTtFQUNGO0lBQUUsY0FBYSxFQUFJO0VBSW5CO0lBQUUsZUFBZSxFQUFFO0VBRW5CO0lBQUUsZUFBYyxFQUFJO0VBSXBCO0lBQUUsZUFBYyxFQUFJLEVBQUE7O0FBNkN4Qjs7OztHQUlHO0FBVUQsV0FBVztBQzdKYjt3Q0FFd0M7QUFDeEM7O0dBRUc7QUNMSDt3Q0FFd0M7QUFDeEM7O0dBRUc7QUNMSDt3Q0FFd0M7QUFDeEM7OztHQUdHO0FBQ0g7RUFDSSxvRHZCNENnQztFdUIzQ2hDLHlCdkIwQ3VCLEV1QnpDMUI7O0FBQ0Q7RUFDSSxvRHZCd0NnQyxFdUJ2Q25DOztBQUNEOztFQUVJLHlCdkJtQ3VCLEV1QmxDMUI7O0FDakJEO3dDQUV3QztBQUN4Qzs7Ozs7Ozs7R0FRRztBQUdIOztHQUVHO0FBQ0g7RUFBa0Isd0JBQXFCLEVBQUk7O0FBQzNDO0VBQWtCLHVCQUFzQixFQUFJOztBQUM1QztFQUFrQix1QkFBc0IsRUFBSTs7QUFHNUM7O0dBRUc7QUFDSDtFQUFrQiw2QkFBNEIsRUFBSTs7QUFDbEQ7RUFBa0IsOEJBQTJCLEVBQUk7O0FBQ2pEO0VBQWtCLDZCQUE0QixFQUFJOztBQUdsRDs7R0FFRztBQUNIO0VBQXNCLDRCQUF5QixFQUFJOztBQUNuRDtFQUFzQiw0QkFBeUIsRUFBSTs7QUFDbkQ7RUFBc0IsNEJBQXlCLEVBQUk7O0FBR25EOztHQUVHO0FBQ0g7RUFBa0Isd0JBQTBDLEVBQUk7O0FBQ2hFO0VBQWtCLDRCQUEwQyxFQUFJOztBQUNoRTtFQUFrQiw4QkFBMEMsRUFBSTs7QUFDaEU7RUFBa0IsK0JBQTBDLEVBQUk7O0FBQ2hFO0VBQWtCLDZCQUEwQyxFQUFJOztBQUNoRTtFQUFrQiw0QkFBMEM7RUFBRSwrQkFBMEMsRUFBSTs7QUFDNUc7RUFBa0IsOEJBQTBDO0VBQUUsNkJBQTBDLEVBQUk7O0FBRTVHO0VBQXNCLHlCQUEwQyxFQUFJOztBQUNwRTtFQUFzQiw2QkFBMEMsRUFBSTs7QUFDcEU7RUFBc0IsK0JBQTBDLEVBQUk7O0FBQ3BFO0VBQXNCLGdDQUEwQyxFQUFJOztBQUNwRTtFQUFzQiw4QkFBMEMsRUFBSTs7QUFDcEU7RUFBc0IsNkJBQTBDO0VBQUUsZ0NBQTBDLEVBQUk7O0FBQ2hIO0VBQXNCLCtCQUEwQztFQUFFLDhCQUEwQyxFQUFJOztBQUVoSDtFQUFrQixxQkFBeUIsRUFBSTs7QUFDL0M7RUFBa0IseUJBQXlCLEVBQUk7O0FBQy9DO0VBQWtCLDJCQUF5QixFQUFJOztBQUMvQztFQUFrQiw0QkFBeUIsRUFBSTs7QUFDL0M7RUFBa0IsMEJBQXlCLEVBQUk7O0FBQy9DO0VBQWtCLHlCQUF5QjtFQUFFLDRCQUF5QixFQUFJOztBQUMxRTtFQUFrQiwyQkFBeUI7RUFBRSwwQkFBeUIsRUFBSTs7QUFHMUU7O0dBRUc7QUFDSDtFQUFrQix5QkFBMkMsRUFBSTs7QUFDakU7RUFBa0IsNkJBQTJDLEVBQUk7O0FBQ2pFO0VBQWtCLCtCQUEyQyxFQUFJOztBQUNqRTtFQUFrQixnQ0FBMkMsRUFBSTs7QUFDakU7RUFBa0IsOEJBQTJDLEVBQUk7O0FBQ2pFO0VBQWtCLDZCQUEyQztFQUFFLGdDQUEyQyxFQUFJOztBQUM5RztFQUFrQiwrQkFBMkM7RUFBRSw4QkFBMkMsRUFBSTs7QUFFOUc7RUFBdUIsMEJBQTJDLEVBQUk7O0FBQ3RFO0VBQXVCLDhCQUEyQyxFQUFJOztBQUN0RTtFQUF1QixnQ0FBMkMsRUFBSTs7QUFDdEU7RUFBdUIsaUNBQTJDLEVBQUk7O0FBQ3RFO0VBQXVCLCtCQUEyQyxFQUFJOztBQUN0RTtFQUF1Qiw4QkFBMkM7RUFBRSxpQ0FBMkMsRUFBSTs7QUFDbkg7RUFBdUIsZ0NBQTJDO0VBQUUsK0JBQTJDLEVBQUk7O0FBRW5IO0VBQWtCLHNCQUEwQixFQUFJOztBQUNoRDtFQUFrQiwwQkFBMEIsRUFBSTs7QUFDaEQ7RUFBa0IsNEJBQTBCLEVBQUk7O0FBQ2hEO0VBQWtCLDZCQUEwQixFQUFJOztBQUNoRDtFQUFrQiwyQkFBMEIsRUFBSTs7QUFDaEQ7RUFBa0IsMEJBQTBCO0VBQUUsNkJBQTBCLEVBQUk7O0FBQzVFO0VBQWtCLDRCQUEwQjtFQUFFLDJCQUEwQixFQUFJOztBQUc1RTs7R0FFRztBQUNIO0VBQ0ksK0JBQTBDO0VBQzFDLDhCQUEwQyxFQU03QztFQUpHO0lBQ0ksZ0NBQTRDO0lBQzVDLCtCQUE0QyxFQUMvQzs7QUFJTDs7O0dBR0c7QUFDSDtFQUNJLHdCQUFxQixFQUN4Qjs7QUFHRDs7R0FFRztBQUNIO0VBQ0ksd0JBQXFCO0VBQ3JCLHFDQUFvQyxFQUN2Qzs7QUFHRDs7Ozs7R0FLRztBQUNIO0VBQ0ksNkJBQTBCLEVBQzdCOztBQUdEOzs7OztHQUtHO0FBQ0g7RUFDSSw0QkFBdUIsRUFBVTs7QUFJckM7O0dBRUc7QUFDSDtFQUNJLHFDQUFrQyxFQUNyQzs7QUFHRDs7O0dBR0c7QUFXSDs7RUFUSSxxQkFBa0I7RUFDbEIsK0JBQTRCO0VBQzVCLHVCQUFvQjtFQUNwQix3QkFBcUI7RUFDckIsNEJBQXlCO0VBQ3pCLHNCQUFtQjtFQUNuQiw4QkFBNEI7RUFDNUIsc0JBQW1CLEVBS3RCOztBckJ3SE87RXFCcEhJOztJQWhCUixxQkFBa0I7SUFDbEIsK0JBQTRCO0lBQzVCLHVCQUFvQjtJQUNwQix3QkFBcUI7SUFDckIsNEJBQXlCO0lBQ3pCLHNCQUFtQjtJQUNuQiw4QkFBNEI7SUFDNUIsc0JBQW1CLEVBV1YsRUFBQTs7QXJCd0hMO0VxQjFISTs7SUFoQlIscUJBQWtCO0lBQ2xCLCtCQUE0QjtJQUM1Qix1QkFBb0I7SUFDcEIsd0JBQXFCO0lBQ3JCLDRCQUF5QjtJQUN6QixzQkFBbUI7SUFDbkIsOEJBQTRCO0lBQzVCLHNCQUFtQixFQVdWLEVBQUE7O0FyQjhITDtFcUJoSUk7O0lBaEJSLHFCQUFrQjtJQUNsQiwrQkFBNEI7SUFDNUIsdUJBQW9CO0lBQ3BCLHdCQUFxQjtJQUNyQiw0QkFBeUI7SUFDekIsc0JBQW1CO0lBQ25CLDhCQUE0QjtJQUM1QixzQkFBbUIsRUFXVixFQUFBOztBckJvSUw7RXFCdElJOztJQWhCUixxQkFBa0I7SUFDbEIsK0JBQTRCO0lBQzVCLHVCQUFvQjtJQUNwQix3QkFBcUI7SUFDckIsNEJBQXlCO0lBQ3pCLHNCQUFtQjtJQUNuQiw4QkFBNEI7SUFDNUIsc0JBQW1CLEVBV1YsRUFBQTs7QXJCMElMO0VxQjVJSTs7SUFoQlIscUJBQWtCO0lBQ2xCLCtCQUE0QjtJQUM1Qix1QkFBb0I7SUFDcEIsd0JBQXFCO0lBQ3JCLDRCQUF5QjtJQUN6QixzQkFBbUI7SUFDbkIsOEJBQTRCO0lBQzVCLHNCQUFtQixFQVdWLEVBQUE7O0FyQmdKTDtFcUJsSkk7O0lBaEJSLHFCQUFrQjtJQUNsQiwrQkFBNEI7SUFDNUIsdUJBQW9CO0lBQ3BCLHdCQUFxQjtJQUNyQiw0QkFBeUI7SUFDekIsc0JBQW1CO0lBQ25CLDhCQUE0QjtJQUM1QixzQkFBbUIsRUFXVixFQUFBOztBQ1paLFdBQVc7QUN2S1o7RUFDQywwQzFCSStDO0UwQkgvQyxtQkFBbUI7RUFDbkIsZ0IxQkR1QjtFMEJFdkIsa0IxQkR1QixFMEJFdkI7O0FBRUQ7RUFDQyxxREFBd0MsRUFDeEM7O0FBRUQ7RUFDQyxrQkFBa0IsRUFDbEI7O0FBRUQ7RUFDQywrQkFBNkIsRUFDN0I7O0FBRUQ7RUFDQyxtQkFBbUIsRUFDbkI7O0FBRUQ7Ozs7RUFJRTtBQUVGLFNBQVM7QUFLVDtFQUNDLGVBQWUsRUFDZjs7QUFFRDtFQUNDLFkxQm1GaUIsRTBCbEZqQjs7QUFFRDtFQUNDLFkxQmdGaUIsRTBCL0VqQjs7QUFFRDtFQUNDLDBCQUEwQixFQUMxQjs7QUFFRDtFQUNDLG1CQUFtQixFQUNuQjs7QUFFRDtFQUNDLGtCQUFrQixFQUNsQjs7QUFFRDtFQUNDLHNCQUFzQixFQUN0Qjs7QXZCeU9PO0V1QnZPUjtJQUVFLHlCQUF1QixFQUV4QixFQUFBOztBdkIyUE87RXVCelBSO0lBRUUseUJBQXVCLEVBRXhCLEVBQUE7O0F2Qm1PTztFdUJqT1I7SUFFRSx5QkFBdUIsRUFFeEIsRUFBQTs7QUFFRDtFQUNDLHVCQUF1QjtFQUN2QixzQkFBc0IsRUFDdEI7O0FBRUQ7RUFDQyxtQkFBbUI7RUFDbkIsMEIxQmlDaUI7RTBCaENqQixrQ0FBd0MsRUFDeEM7O0FBRUQ7RUFDQyxnQkFBZ0I7RUFDaEIsd0JBQXNCLEVBQ3RCOztBQUVEO0VBQ0MsbUJBQW1CO0VBQ25CLFlBQVksRUFDWjs7QUFJQTtFQUZEO0lBSUUseUJBQXVCLEVBR3hCLEVBQUE7O0FBSUE7RUFGRDtJQUlFLDBCQUF3QixFQUl6QixFQUFBOztBQUVEO0VBQ0MsaUNBQWlCO01BQWpCLDZCQUFpQjtVQUFqQix5QkFBaUIsRUFDakI7O0FBRUQ7RUFDQyxrQ0FBaUI7TUFBakIsOEJBQWlCO1VBQWpCLDBCQUFpQixFQUNqQjs7QUFFRDtFQUNDLGtDQUFpQjtNQUFqQiw4QkFBaUI7VUFBakIsMEJBQWlCLEVBQ2pCOztBQUVEO0VBQ0MsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNqQixvQkFBb0IsRUFLckI7RXZCeUpPO0l1QmpLUjtNQUtFLGtCQUFrQjtNQUNsQixPQUFPLEVBRVIsRUFBQTs7QXZCeUpPO0V1QmxKUjtJQUlHLG1CMUI3Q3FCO0kwQjhDckIsb0IxQjlDcUIsRTBCZ0R0QixFQUFBOztBQUtGO0VBQ0ksZUFBZTtFQUNmLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsZ0JBQWdCLEVBQ25COztBQUVEO0VBQ0ksOEJBQThCLEVBQ2pDOztBQUVEO0VBQ0MsaUJBQThCO0VBQzlCLDJCQUEyQjtFQUMzQixrQkFBK0I7RUFDL0IscUJBQWtDLEVBRWxDOztBQUVEO0VBQ0Msa0JBQWtCO0VBQ2xCLHVCQUF1QjtFQUN2QixtQkFBbUIsRUFDbkI7O0FBRUQ7RUFDRyxtQkFBbUI7RUFDbkIsYUFBYTtFQUNiLGVBQWU7RUFDZixhQUFhO0VBQ2IsdUJBQXVCO0VBQ3ZCLFdBQVc7RUFDWCxZQUFZO0VBQ1osMEJBQTBCO0VBQzFCLG1CQUFtQjtFQUNuQixZQUFZO0VBQ1osNkJBQTJCO0VBQzNCLDJCQUF5QixFQUMzQjs7QUFFRDtFQUNHLFlBQVksRUFDZDs7QUFFRDtFQUNJLHdCQUF3QjtFQUN4QixzQkFBc0I7RUFDdEIsb0JBQW9CLEVBQUU7O0FBRTFCO0VBQWlCLHlDQUF5QyxFQUFHOztBQzVNN0Q7RUFIQyx1REFBc0QsRUFDdEQ7O0FBRUQ7RUFFQywyREFBMkQ7RUFDM0QsZUFBZTtFQUNmLGdCQUFnQixFQUNoQjs7QUFFRDtFQUVDLDREQUE0RDtFQUM1RCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELGdCQUFnQjtFQUNoQixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywyREFBMkQ7RUFDM0QsZ0JBQWdCO0VBQ2hCLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDJEQUEyRDtFQUMzRCxnQkFBZ0I7RUFDaEIsYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywwQ0FBMEM7RUFDMUMsYUFBYTtFQUNiLGNBQWMsRUFDZDs7QUFFRDtFQUVDLDREQUE0RDtFQUM1RCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELGdCQUFnQjtFQUNoQixpQkFBaUIsRUFDakI7O0FBRUQ7RUFFQywwQ0FBMEM7RUFDMUMsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDREQUE0RDtFQUM1RCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsNERBQTREO0VBQzVELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywyREFBMkQ7RUFDM0QsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDBDQUEwQztFQUMxQyxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQyx5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLGtCQUFrQixFQUNsQjs7QUFFRDtFQUVDLDJEQUEyRDtFQUMzRCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELGdCQUFnQjtFQUNoQixpQkFBaUIsRUFDakI7O0FBRUQ7RUFFQywyREFBMkQ7RUFDM0QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUNqQjs7QUFFRDtFQUVDLDJEQUEyRDtFQUMzRCxnQkFBZ0I7RUFDaEIsaUJBQWlCLEVBQ2pCOztBQUVEO0VBRUMsMENBQTBDO0VBQzFDLFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywwQ0FBMEM7RUFDMUMsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDJEQUEyRDtFQUMzRCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsNERBQTREO0VBQzVELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQyw0REFBNEQ7RUFDNUQsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDREQUE0RDtFQUM1RCxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMERBQTBEO0VBQzFELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywwREFBMEQ7RUFDMUQsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLDBDQUEwQztFQUMxQyxZQUFZO0VBQ1osYUFBYSxFQUNiOztBQUVEO0VBRUMsMkRBQTJEO0VBQzNELFlBQVk7RUFDWixhQUFhLEVBQ2I7O0FBRUQ7RUFFQywyREFBMkQ7RUFDM0QsZ0JBQWdCO0VBQ2hCLGlCQUFpQixFQUNqQjs7QUMxTkQ7RUFDQyxjNUJ3R3VCO0U0QnZHdkIsa0I1QkF1QixFNEJFdkI7O0F6QndUTztFeUJ0VFI7SUFFRSxnQkFBZ0I7SUFDaEIsaUJBQWlCLEVBRWxCLEVBQUE7O0FBRUQ7RUFDQyxvQjVCMkZ1QjtFNEIxRnZCLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsaUJBQWlCLEVBY2pCO0VBbEJEO0lBT0UsWUFBWTtJQUNaLGFBQWE7SUFDYixxQjVCb0ZvQyxFNEJuRnBDO0VBVkY7SUFlRSxlNUIyRmdCLEU0QjFGaEI7O0FBSUY7RUFDRyxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGFBQWEsRUFDZjs7QUFFRDtFQUNDLG1CQUFtQixFQU1uQjtFQVBEO0lBSUUsWUFBWTtJQUNaLGFBQWEsRUFDYjs7QUFHRjtFQUVFLFlBQVksRUFDWjs7QUFHRjtFQUNDLGNBQWM7RUFDZCxtQkFBbUI7RUFDbkIsWUFBWTtFQUNaLFVBQVUsRUFRVjtFQVpEO0lBT0ksbUJBQW1CO0lBQ25CLFVBQVUsRUFDWjs7QUFLRjtFQUNDLG1CQUFtQjtFQUNuQixVQUFVLEVBQ1Y7O0FBRUQ7RUFDQyxtQkFBbUI7RUFDbkIsZ0JBQWdCO0VBQ2hCLFdBQVc7RUFDWCxZQUFZLEVBY1o7RUFsQkQ7SUFPRSxhQUFhLEVBVWI7SUFqQkY7TUFVRyxlQUNBLEVBQUM7SUFYSjtNQWNHLGNBQWMsRUFDZDs7QUFLSDtFQUNFLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIsZUFBZTtFQUNmLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsV0FBVztFQUNYLFdBQVc7RUFDWCxpQkFBaUI7RUFDakIsbUJBQW1CLEVBa0JwQjtFQTNCRDtJQWFJLFlBQVk7SUFDWixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLFdBQVcsRUFDYjtFQWpCRjtJQW9CSyxpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUN0QixrQkFBa0I7SUFDaEIsb0JBQW9CLEVBQ3JCOztBQUlIO0VBQ0MsY0FBYyxFQUNkOztBQUVEO0VBQ0MsK0I1QnRCdUI7RTRCdUJ2QixpQkFBaUIsRUFvQmpCO0VBdEJEO0lBS0UsaUJBQWlCLEVBQ2pCO0V6QmdLTTtJeUJ0S1I7TUFTRSxlNUI3Qm9DLEU0QjBDckMsRUFBQTtFQXRCRDtJQWNFLFlBQVk7SUFDWixhQUFhLEVBTWI7SXpCaUpNO015QnRLUjtRQWtCRyxpQjVCdkNxQixFNEIwQ3RCLEVBQUE7O0FDcEpGO0VBQ0MsbUJBQW1CO0VBQ25CLG9CN0J3R3VCLEU2QnZGdkI7RUFuQkQ7SUFLRSxpQkFBaUI7SUFDakIsaUJBQWlCLEVBQ2pCO0VBUEY7SUFVRSxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLFk3QjhGc0IsRTZCeEZ0QjtJMUJtUk07TTBCclNSO1FBZUcsZ0NBQXdCO1lBQXhCLDRCQUF3QjtnQkFBeEIsd0JBQXdCO1FBQ3hCLDhCQUFnQjtZQUFoQiwwQkFBZ0I7Z0JBQWhCLHNCQUFnQixFQUVqQixFQUFBOztBQUdGO0VBQ0Msa0JBQWtCO0VBeUNuQjs7Ozs7O0VBTUUsRUFDRDtFQWpERDtJQUlFLG1CQUFtQixFQUluQjtJQVJGO01BTUcsbUJBQW1CLEVBQ25CO0VBR0E7SUFDRSxrQkFBa0IsRUF3QnJCO0lBekJDO01BSUEsa0JBQWtCLEVBbUJsQjtNMUIrT0s7UTBCdFFMO1VBT0Msb0I3Qm9Fb0IsRTZCcERyQixFQUFBO01BdkJBO1FBV0Msb0JBQW9CLEVBRXBCO00xQnlQSTtRMEJ0UUw7VUFrQkUsaUJBQWlCLEVBRWxCLEVBQUE7RUFPSDtJQUNDLGNBQWMsRUFDZDs7QUFZRjtFQUNDLGdDQUF3QjtVQUF4Qix3QkFBd0I7RUFDeEIsVUFBVTtFQUNWLGlCQUFpQixFQUtqQjtFQUhBO0lBQ0MsZ0JBQWdCLEVBQ2hCOztBQUdGO0VBQ0MscUI3QnVCdUIsRTZCdEJ2Qjs7QUFFRDtFQUNDLGlDN0JpQ2lCO0U2QmhDakIscUI3Qm1CcUMsRTZCZHJDO0VBUEQ7SUFLRSxpQkFBaUIsRUFDakI7O0FBR0Y7RUFDQyxpQjdCVXVCO0U2QlR2QixpQzdCdUJpQixFNkJsQmpCO0VBUEQ7SUFLRSxrQkFBa0IsRUFDbEI7O0FBYUY7RUFDQyxnQkFBZ0I7RUFDaEIsc0JBQXNCO0VBQ3RCLFlBQVk7RUFDWixhQUFhO0VBQ2Isb0I3QkNpQjtFNkJBakIscUJBQXFCO0VBQ3JCLG1CQUFtQjtFQUNuQixpQkFBaUIsRUF1QmpCO0VBL0JEO0lBNEJFLGdCN0J6R3NCO0k2QjBHdEIsWTdCcEJnQixFNkJxQmhCO0lBOUJGO01Bd0JHLFk3QmZlO002QmdCZiwyQkFBMkIsRUFDM0I7O0FDNUlIOzs7Ozs7O0dBT0c7QUFFSCxvQkFBb0I7QUFDcEI7Ozs7RUFHc0IsY0FBYyxFQUFHOztBQUN2Qzs7O0VBRXFCLFVBQVU7RUFBRSxXQUFXO0VBQUUsaUJBQWlCLEVBQUc7O0FBRWxFO2tDQUNrQztBQUNsQztFQUFhLFVBQVU7RUFBRSxXQUFXLEVBQUc7O0FBQ3ZDO0VBQTBCLGNBQWM7RUFBRSxvQ0FBb0MsRUFBRzs7QUFBQSxtRUFBbUU7QUFDcEo7RUFBeUIsZ0JBQWdCO0VBQUUsZUFBZSxFQUFHOztBQUM3RDtFQUFzQiwyQkFBMkIsRUFBRzs7QUFFcEQsc0NBQXNDO0FBQ3RDO0VBQWUsYUFBYTtFQUFFLGVBQWU7RUFBRSxZQUFZO0VBQUUsbUJBQW1CO0VBQUUsZUFBZTtFQUFFLFVBQVUsRUFBRzs7QUFDaEg7RUFBcUIsZUFBZSxFQUFHOztBQUN2QztFQUFnQixXQUFXLEVBQUc7O0FBRTlCLDRCQUE0QjtBQUM1Qjt3REFDd0Q7QUFDeEQ7RUFBaUMsZUFBZSxFQUFHOztBQUduRDtrQ0FDa0M7QUFDbEM7RUFBYSxpQkFBaUI7RUFBRSx1QkFBdUI7RUFBRSxtQkFBbUI7RUFBaUYsbUJBQW1CO0VBQUUsUUFBUSxFQUFHOztBQUM3TDtFQUFxQixRQUFRLEVBQUc7O0FBQ2hDO0VBQTBCLG1CQUFtQjtFQUFFLGlCQUFpQixFQUFFOztBQUNsRSxtR0FBbUc7QUFDbkc7RUFBaUIsUUFBUTtFQUFFLG1CQUFtQixFQUFHOztBQUVqRCxtQkFBbUI7QUFDbkIsb0JBQW9CO0FBQ3BCO0VBQWUsaUJBQWdCO0VBQUUsc0dBQW9HO0VBQ3JJLGtHQUFnRztFQUFFLFFBQVEsRUFBRTs7QUFDNUc7RUFBZSxXQUFXO0VBQUUsWUFBWTtFQUFFLFVBQVU7RUFBRSxtQkFBbUI7RUFBRSxRQUFRO0VBQUUsVUFBVTtFQUFFLCtCQUFnQjtFQUFZLFlBQVk7RUFBRSx5Q0FBMEI7RUFBWSxnQkFBZ0I7RUFBRSxrQkFBa0IsRUFBRzs7QUFFeE4sbUJBQW1CO0FBQ25CO0VBQXNCLFVBQVUsRUFBSTs7QUFDcEM7RUFBMEIsWUFBWTtFQUFFLGFBQWE7RUFBRSxrQkFBa0I7RUFBRSxlQUFlO0VBQUUsc0RBQXFEO0VBQUUsbUJBQW1CO0VBQUUsU0FBUztFQUFFLGdCQUFnQjtFQUFFLG9CQUFvQixFQUFHOztBQUM1TjtFQUE4Qiw2QkFBNkI7RUFBRSxhQUFhLEVBQUc7O0FBQzdFO0VBQThCLFlBQVksRUFBRzs7QUFDN0M7RUFBa0MsWUFBWTtFQUFFLDBCQUFZO0VBQWMsZ0JBQWdCLEVBQUc7O0FBRTdGLGlCQUFpQjtBQUNqQjtFQUFtQixZQUFZO0VBQUUsbUJBQW1CO0VBQUUsY0FBYztFQUFFLG1CQUFtQixFQUFHOztBQUM1RjtFQUFzQixrQkFBa0I7RUFBRSxzQkFBc0I7RUFBRSxRQUFRO0dBQUUsZ0JBQWlCLEVBQUc7O0FBQ2hHO0VBQWtDLFVBQVUsRUFBRzs7QUFDL0M7RUFBd0IsWUFBWTtFQUFFLGFBQWE7RUFBRSxlQUFlO0VBQUUsb0RBQW1EO0VBQUUsZ0JBQWdCO0VBQUUsb0JBQW9CLEVBQUc7O0FBQ3BLO0VBQThCLDZCQUE2QixFQUFHOztBQUM5RDtFQUErQiw2QkFBNkI7RUFBRSxnQkFBZ0IsRUFBRzs7QUFHakY7RUFDQyxvQjlCdUN1QjtFOEJ0Q3ZCLGFBQWE7RUFDYixpQkFBaUIsRUFDakI7O0FBRUQ7RUFDQyxrQkFBa0IsRUFDbEI7O0FBRUQ7RUFDQyxtQkFBbUI7RUFDbkIsb0I5QjRCdUIsRThCM0J2Qjs7QUFFRDtFQUNDLG1CQUFtQjtFQUNuQixtQjlCd0JxQztFOEJ2QnJDLHNCOUJ1QnFDO0U4QnRCckMsOEI5Qm9DcUI7RThCbkNyQixpQzlCbUNxQixFOEJsQ3JCOztBQUVEO0VBRUMsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsZUFBZSxFQStDZjtFM0J3Sk87STJCNU1SO01BUUUsV0FBVyxFQTRDWixFQUFBO0VBcEREO0lBY0csdUJBQXFCO0lBQ3JCLDhCQUE0QjtJQUM1Qix1QkFBcUIsRUFnQ3JCO0lBaERIO01Bb0JJLHVCOUJjYztNOEJiZCxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLGVBQWU7TUFDZixZQUFZO01BQ1osYUFBYTtNQUNiLGFBQWEsRUFvQmI7TUE5Q0o7UUE2Qkssc0I5QkdpQixFOEJHakI7UUFuQ0w7VUFnQ00sMEI5QkFnQixFOEJFaEI7TUFsQ047UUFzQ0ssWUFBWTtRQUNaLGVBQWU7UUFDZixZQUFZO1FBQ1osYUFBYTtRQUNiLG1CQUFtQjtRQUNuQixvQjlCWmEsRThCYWI7O0FBVUw7RUFDQyxhQUFhO0VBR2IsZ0JBQWdCLEVBS2hCO0UzQjZJTztJMkJ0SlI7TUFPRSxjQUFjLEVBRWYsRUFBQTs7QUFFRDtFQUNDLGtDQUFpQjtNQUFqQiw4QkFBaUI7VUFBakIsMEJBQWlCLEVBQ2pCOztBQUdEO0VBQ0UsWUFBWTtFQUNaLGU5QnREb0M7RThCdURwQyxVQUFVO0VBQ1YsYUFBYTtFQUNiLFdBQVc7RUFDWCxTQUFTO0VBQ1QsVUFBVTtFQUNWLG9COUIvQ2dCO0U4QmdEaEIsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsa0JBQWtCLEVBZW5CO0VBM0JEO0lBZUcsdUJBQTZCO0lBQzdCLGlCQUFpQixFQUNqQjtFM0JxSEs7STJCdElSO01Bb0JHLGNBQWMsRUFPaEIsRUFBQTtFM0JpSE87STJCNUlSO01Bd0JHLGNBQWMsRUFHaEIsRUFBQTs7QUFFRDtFQUtDLHVCQUFxQjtFQUNyQix3QkFBc0I7RUFDdEIsb0JBQWtCO0VBQ2xCLHdCQUFzQjtFQUN0Qix1QkFBcUI7RUFDckIsOEJBQWdCO01BQWhCLDBCQUFnQjtVQUFoQixzQkFBZ0IsRUFDaEI7O0FBR0Q7RUFDRSxjQUFjO0VBQUUsY0FBYztFQUFFLHdCQUFxQixFQUN0RDs7QUFFRDtFQUNDLG1CQUFpQjtFQUNqQiwyQkFBeUI7RUFDekIsWUFBWSxFQWtCWjtFM0JrRU87STJCdkZSO01BTUUsMEJBQXdCO01BQ3hCLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsWUFBWSxFQVliLEVBQUE7RTNCd0VPO0kyQjdGUjtNQWFFLDBCQUF3QjtNQUN4QixpQkFBaUIsRUFPbEIsRUFBQTtFM0IwRk87STJCL0dSO01Ba0JFLHlCQUF1QixFQUd4QixFQUFBOztBQUdEO0VBQ0MsWUFBWTtFQUNaLGFBQWEsRUFDYjs7QUFFRDtFQUVDLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsYUFBYTtFQUNiLFVBQVUsRUFNVjtFM0IrQ087STJCMURSO01BUUksZ0NBQXdCO1VBQXhCLDRCQUF3QjtjQUF4Qix3QkFBd0I7TUFDeEIsOEJBQWdCO1VBQWhCLDBCQUFnQjtjQUFoQixzQkFBZ0IsRUFFbkIsRUFBQTs7QUFFRDtFQUNDLGtCQUFrQjtFQUNsQixtQkFBbUIsRUFDbkI7O0FDMVBEO0VBQ0MsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixhQUFhO0VBQ2IsMEIvQm1IaUI7RStCbEhqQixvQkFBb0I7RUFDcEIsYy9CbUd1QjtFK0JsR3ZCLG1CQUFtQjtFQUNuQix1QkFBdUIsRUFldkI7RTVCNlFPO0k0QnBTUjtNQVdFLFlBQVk7TUFDWixtQi9COEZvQztNK0I3RnBDLGtCQUFrQjtNQUNsQixXQUFVLEVBU1gsRUFBQTtFNUJtUk87STRCMVNSO01Ba0JFLFdBQVc7TUFDWCxVQUFVO01BQ1YsWUFDQSxFQUVELEVBQUE7O0FBRUQ7RUFDQyxZQUFZO0VBQ1osVUFBVSxFQU1WO0U1Qm1RTztJNEIzUVI7TUFLSSxZQUFZO01BQ1osU0FBUyxFQUVaLEVBQUE7O0FBRUQ7RUFDQyxhQUFhO0VBQ2Isb0IvQmtGaUI7RStCakZqQixvQkFBb0I7RUFDcEIsaUJBQWlCO0VBQ2pCLCtCQUFnQjtNQUFoQiwyQkFBZ0I7VUFBaEIsdUJBQWdCO0VBQ2hCLG1CQUFtQixFQTJCbkI7RUFqQ0Q7SUFTRSxZQUFZO0lBRVosZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osVUFBVSxFQUNWO0U1QndQTTtJNEJ2UVI7TUFrQkUsY0FBYztNQUNkLGdCQUFnQixFQWNqQixFQUFBO0U1QmdPTztJNEJqUVI7TUF1QkUsb0JBQW9CO01BQ3BCLGlCQUFpQjtNQUNqQixpQkFBaUI7TUFDakIsa0JBQWtCLEVBT25CO01BakNEO1FBNkJHLGNBQWMsRUFDZCxFQUFBOztBNUJtT0s7RTRCOU5SO0lBR0UsZUFBZTtJQUNmLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDZixpQkFBaUIsRUFjbkIsRUFBQTs7QUFwQkQ7RUFVRSxZQUFZO0VBQ1osZUFBZTtFQUVmLGtCQUFrQixFQU1sQjtFNUJ1Tk07STRCMU9SO01BZ0JHLGNBQWMsRUFHZixFQUFBOztBQUdGO0VBQ0MseUJBQWlCO0tBQWpCLHNCQUFpQjtVQUFqQixpQkFBaUI7RUFDakIsYUFBYTtFQUNiLGFBQWE7RUFDYiwwQkFBMEIsRUFPMUI7RTVCNkxPO0k0QnhNUjtNQU9FLFdBQVc7TUFDWCxZQUFZO01BQ1osYUFBYSxFQUVkLEVBQUE7O0FBRUQ7RUFDQyxrQkFBa0IsRUFFbEI7O0FBRUQ7RUFDRSxlQUFlO0VBQ2YsaUJBQWlCO0VBQ2pCLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsaUJBQThCLEVBZS9CO0U1QmtLTztJNEJ0TFI7TUFTRyxtQkFBbUI7TUFDbkIsT0FBTztNQUNSLGNBQWMsRUFTZixFQUFBO0U1QndLTztJNEI1TFI7TUFlRSxtQkFBbUI7TUFDbkIsT0FBTztNQUNQLHVCL0J0QnNCLEUrQnlCdkIsRUFBQTs7QUFFRDtFQUdDLDJEQUEwRDtFQUMxRCxhQUFhO0VBQ2IsY0FBYztFQUNkLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxnQkFBZ0IsRUFTaEI7RTVCNklPO0k0QmhLUjtNQWFFLGNBQWMsRUFNZixFQUFBO0U1Qm1KTztJNEJ0S1I7TUFpQkUsdUJBQXVCLEVBRXhCLEVBQUE7O0FBRUQ7RUFFQywyREFBMEQ7RUFFMUQsYUFBYTtFQUNiLGNBQWM7RUFDZCxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGdCQUFnQixFQUtoQjtFNUI4SE87STRCM0lSO01BV0UsZUFBZSxFQUVoQixFQUFBOztBQUVEO0VBQ0MsZ0JBQWdCO0VBQ2hCLE9BQU87RUFDUCxRQUFRO0VBQ1IsU0FBUztFQUNULFVBQVU7RUFDVixjQUFjO0VBQ2QsY0FBYyxFQU1kO0VBYkQ7SUFVRSxlQUFlLEVBQ2Y7O0FBTUY7RUFDQyxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLHNCQUFzQjtFQUN0QixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxjQUFjLEVBdUlkO0U1Qm5DTztJNEIzR1I7TUFVRSxvQkFBb0I7TUFDcEIsbUJBQW1CO01BQ25CLFlBQVksRUFrSWIsRUFBQTtFNUI3Qk87STRCakhSO01BZ0JFLG1CQUFtQjtNQUNuQixXQUFXO01BQ1gsdUJBQXVCLEVBNEh4QixFQUFBO0VBOUlEO0lBc0JFLFlBQVk7SUFDWixpQy9CekZnQjtJK0IwRmhCLG1CQUFtQjtJQUNuQixTQUFTO0lBQ1QsVUFBVTtJQUNWLFdBQVc7SUFDWCxrQkFBa0IsRUFpSGxCO0k1QjVCTTtNNEJqSFI7UUErQkcsVUFBVTtRQUNWLG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsVUFBVSxFQTJHWCxFQUFBO0k1QmxDTTtNNEIzR1I7UUFzQ0csYUFBYTtRQUNiLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLDJCQUEyQjtRQUMzQiwyQkFBMkI7UUFDM0Isb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsUUFBUTtRQUNSLFVBQVUsRUE2Rlg7UUE3SUY7VUFtREksZ0JBQWdCO1VBQ2hCLFlBQVk7VUFDWixRQUFRO1VBQ1Isa0JBQWtCO1VBQ2xCLGVBQWU7VUFDZix1QkFBdUI7VUFDdkIsNkJBQTZCO1VBQzdCLDhCQUE4QjtVQUM5Qiw4QkFBOEI7VUFDOUIsNkJBQTZCLEVBSzdCO1VBakVKO1lBK0RLLDBCQUF3QixFQUN4QixFQUFBO0k1QjJDRztNNEIzR1I7UUFzRUksY0FBYyxFQUVmLEVBQUE7SUF4RUg7TUEyRUcsY0FBYztNQUNkLGVBQWU7TUFDZixxQkFBcUI7TUFDckIsbUIvQjlKcUI7TStCK0pyQixlQUFlLEVBNkRmO001QmpDSztRNEIzR1I7VUFrRkkseUJBQXVCLEVBMER4QixFQUFBO001QjNCSztRNEJqSFI7VUFzRkksZUFBZTtVQUNmLDBCL0J6SmM7VStCMEpkLGlCQUFpQjtVQUNqQixnQkFBZ0IsRUFtRGpCO1VBNUlIO1lBNEZLLDRCQUEwQjtZQUMxQixpQkFBaUIsRUFDakI7VUE5Rkw7WUFpR0ssMkJBQXlCO1lBQ3pCLDRCQUEwQixFQUMxQixFQUFBO001QmdDRztRNEJuSVI7VUF1R0ksc0JBQXNCO1VBQ3RCLHFCQUFxQjtVQUNyQixvQkFBb0I7VUFDcEIsMEIvQjVLYztVK0I2S2QsdUJBQXVCLEVBaUN4QixFQUFBO01BNUlIO1FBK0dJLFkvQjlLYztRK0IrS2Qsb0IvQmpMa0IsRStCa0xsQjtNQWpISjtRQW9ISSxZQUFZO1FBQ1osWUFBWTtRQUNaLHFCQUFxQjtRQUNyQixtQi9Cdk1vQjtRK0J3TXBCLFkvQnZMYztRK0J3TGQsaUJBQWlCO1FBQ2pCLG9CQUFvQixFQVVwQjtRNUJiSTtVNEJ2SFI7WUE2SEsscUJBQXFCO1lBQ3JCLG9CL0IvTGlCLEUrQnFNbEIsRUFBQTtRQXBJSjtVQWtJSyxZL0JqTWEsRStCa01iO01BbklMO1FBdUlJLGVBQWU7UUFDZixzQkFBb0I7UUFDcEIsb0JBQW9CO1FBQ3BCLFkvQnpNYyxFK0IwTWQiLCJmaWxlIjoic3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkUkVTUE9OU0lWRVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogVGVsbCBpbnVpdC5jc3Mgd2hlbiBicmVha3BvaW50cyBzdGFydC5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRGT05ULVNJWkVTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBGb250LXNpemVzIChpbiBwaXhlbHMpLiBSZWZlciB0byByZWxldmFudCBzZWN0aW9ucyBmb3IgdGhlaXIgaW1wbGVtZW50YXRpb25zLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJEJSQU5EXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBCcmFuZCBzdHVmZlxuICovXG4vKipcbiAqIEhvdyBiaWcgd291bGQgeW91IGxpa2Ugcm91bmQgY29ybmVycyB0byBiZSBieSBkZWZhdWx0P1xuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJE9CSkVDVFMgQU5EIEFCU1RSQUNUSU9OU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2hpY2ggb2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT9cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRGUkFNRVdPUktcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGludWl0LmNzcyB3aWxsIHdvcmsgdGhlc2UgbmV4dCBvbmVzIG91dCBmb3IgdXNlIHdpdGhpbiB0aGUgZnJhbWV3b3JrLlxuICpcbiAqIEFzc2lnbiBvdXIgYCRiYXNlLWxpbmUtaGVpZ2h0YCB0byBhIG5ldyBzcGFjaW5nIHZhciBmb3IgbW9yZSB0cmFuc3BhcmVuY3kuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICBMT0NBTCBWQVJTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKipcbiogQ09MT1JTXG4qKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi5jLS1jaSB7XG4gIGNvbG9yOiAjNDRjOGY1OyB9XG5cbi5iZy1jLS1jaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NGM4ZjU7IH1cblxuLmMtLWNpLTJuZCB7XG4gIGNvbG9yOiAjOTZjOTNmOyB9XG5cbi5iZy1jLS1jaS0ybmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTZjOTNmOyB9XG5cbi5jLS1ibGFjayB7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi5iZy1jLS1ibGFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7IH1cblxuLmMtLXdoaXRlIHtcbiAgY29sb3I6ICNmZmY7IH1cblxuLmJnLWMtLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG4uYy0tdHh0IHtcbiAgY29sb3I6ICMwMDA7IH1cblxuLmJnLWMtLXR4dCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7IH1cblxuLmMtLWhpZ2hsaWdodCB7XG4gIGNvbG9yOiAjNzkxNjY3OyB9XG5cbi5iZy1jLS1oaWdobGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzkxNjY3OyB9XG5cbi5jLS1ncmV5LWxpZ2h0IHtcbiAgY29sb3I6ICNlNGU2ZTc7IH1cblxuLmJnLWMtLWdyZXktbGlnaHQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlNmU3OyB9XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkREVGQVVMVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGludWl0LmNzc+KAmSBkZWZhdWx0IHZhcmlhYmxlcy4gUmVkZWZpbmUgdGhlc2UgaW4geW91ciBgX3ZhcnMuc2Nzc2AgZmlsZSAoZm91bmRcbiAqIGluIHRoZSBpbnVpdC5jc3Mtd2ViLXRlbXBsYXRlKSB0byBvdmVycmlkZSB0aGVtLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJERFQlVHXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBEZWJ1ZyBtb2RlIHdpbGwgdmlzdWFsbHkgaGlnaGxpZ2h0IGFueSBwb3RlbnRpYWwgbWFya3VwL2FjY2Vzc2liaWxpdHkgcXVpcmtzXG4gKiBpbiB0aGUgYnJvd3Nlci4gU2V0IHRvIGB0cnVlYCBvciBgZmFsc2VgLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJEJPUkRFUi1CT1hcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIERvIHlvdSB3YW50IGFsbCBlbGVtZW50cyB0byBhZG9wdCBgYm94LXNpemluZzpib3JkZXItYm94O2AgYXMgcGVyXG4gKiBwYXVsaXJpc2guY29tLzIwMTIvYm94LXNpemluZy1ib3JkZXItYm94LWZ0dyA/XG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkQkFTRVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogQmFzZSBzdHVmZlxuICovXG4vKipcbiAqIEJhc2UgZm9udC1mYW1pbHkuXG4gKi9cbi8qKlxuICogRGVmYXVsdCBjb2xvdXIgZm9yIG9iamVjdHPigJkgYm9yZGVycyBldGMuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkUkVTUE9OU0lWRVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogUmVzcG9uc2l2ZW5lc3M/XG4gKi9cbi8qKlxuICogUmVzcG9uc2l2ZW5lc3MgZm9yIHdpZGVzY3JlZW4vaGlnaCByZXNvbHV0aW9uIGRlc2t0b3AgbW9uaXRvcnMgYW5kIGJleW9uZD9cbiAqIE5vdGU6IGAkcmVzcG9uc2l2ZWAgdmFyaWFibGUgYWJvdmUgbXVzdCBiZSBzZXQgdG8gdHJ1ZSBiZWZvcmUgZW5hYmxpbmcgdGhpcy5cbiAqL1xuLyoqXG4gKiBSZXNwb25zaXZlIHB1c2ggYW5kIHB1bGwgcHJvZHVjZSBhIExPVCBvZiBjb2RlLCBvbmx5IHR1cm4gdGhlbSBvbiBpZiB5b3VcbiAqIGRlZmluaXRlbHkgbmVlZCB0aGVtLlxuICovXG4vKipcbiAqIE5vdGU6IGAkcHVzaGAgdmFyaWFibGUgYWJvdmUgbXVzdCBiZSBzZXQgdG8gdHJ1ZSBiZWZvcmUgZW5hYmxpbmcgdGhlc2UuXG4gKi9cbi8qKlxuICogTm90ZTogYCRwdWxsYCB2YXJpYWJsZSBhYm92ZSBtdXN0IGJlIHNldCB0byB0cnVlIGJlZm9yZSBlbmFibGluZyB0aGVzZS5cbiAqL1xuLyoqXG4gKiBUZWxsIGludWl0LmNzcyB3aGVuIGJyZWFrcG9pbnRzIHN0YXJ0LlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJEZPTlQtU0laRVNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEZvbnQtc2l6ZXMgKGluIHBpeGVscykuIFJlZmVyIHRvIHJlbGV2YW50IHNlY3Rpb25zIGZvciB0aGVpciBpbXBsZW1lbnRhdGlvbnMuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkUVVPVEVTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBFbmdsaXNoIHF1b3RlIG1hcmtzP1xuICovXG4vKipcbiAqIElmIHlvdSB3YW50IEVuZ2xpc2ggcXVvdGVzIHRoZW4gcGxlYXNlIGRvIG5vdCBlZGl0IHRoZXNlOyB0aGV54oCZcmUgb25seSBoZXJlXG4gKiBiZWNhdXNlIFNhc3MgbmVlZHMgdGhlbS5cbiAqL1xuLyoqXG4gKiBJZiB5b3UgbmVlZCBub24tRW5nbGlzaCBxdW90ZXMsIHBsZWFzZSBhbHRlciB0aGUgZm9sbG93aW5nIHZhbHVlcyBhY2NvcmRpbmdseTpcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRCUkFORFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogQnJhbmQgc3R1ZmZcbiAqL1xuLyoqXG4gKiBIb3cgYmlnIHdvdWxkIHlvdSBsaWtlIHJvdW5kIGNvcm5lcnMgdG8gYmUgYnkgZGVmYXVsdD9cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRPQkpFQ1RTIEFORCBBQlNUUkFDVElPTlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFdoaWNoIG9iamVjdHMgYW5kIGFic3RyYWN0aW9ucyB3b3VsZCB5b3UgbGlrZSB0byB1c2U/XG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkRlJBTUVXT1JLXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBpbnVpdC5jc3Mgd2lsbCB3b3JrIHRoZXNlIG5leHQgb25lcyBvdXQgZm9yIHVzZSB3aXRoaW4gdGhlIGZyYW1ld29yay5cbiAqXG4gKiBBc3NpZ24gb3VyIGAkYmFzZS1saW5lLWhlaWdodGAgdG8gYSBuZXcgc3BhY2luZyB2YXIgZm9yIG1vcmUgdHJhbnNwYXJlbmN5LlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgSU5VSVQuQ1NTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyohKlxuICpcbiAqIGludWl0Y3NzLmNvbSAtLSBAaW51aXRjc3MgLS0gQGNzc3dpemFyZHJ5XG4gKlxuICovXG4vKipcbiAqIGludWl0LmNzcyBhY3RzIGFzIGEgYmFzZSBzdHlsZXNoZWV0IHdoaWNoIHlvdSBzaG91bGQgZXh0ZW5kIHdpdGggeW91ciBvd25cbiAqIHRoZW1lIHN0eWxlc2hlZXQuXG4gKlxuICogaW51aXQuY3NzIGFpbXMgdG8gZG8gdGhlIGhlYXZ5IGxpZnRpbmc7IHNvcnRpbmcgb2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zLFxuICogZGVzaWduIHBhdHRlcm5zIGFuZCBmaWRkbHkgYml0cyBvZiBDU1MsIHdoaWxzdCBsZWF2aW5nIGFzIG11Y2ggZGVzaWduIGFzXG4gKiBwb3NzaWJsZSB0byB5b3UuIGludWl0LmNzcyBpcyB0aGUgc2NhZmZvbGRpbmcgdG8geW91ciBkZWNvcmF0b3IuXG4gKlxuICogVGhpcyBzdHlsZXNoZWV0IGlzIGhlYXZpbHkgZG9jdW1lbnRlZCBhbmQgY29udGFpbnMgbG90cyBvZiBjb21tZW50cywgcGxlYXNlXG4gKiB0YWtlIGNhcmUgdG8gcmVhZCBhbmQgcmVmZXIgdG8gdGhlbSBhcyB5b3UgYnVpbGQuIEZvciBmdXJ0aGVyIHN1cHBvcnQgcGxlYXNlXG4gKiB0d2VldCBhdCBAaW51aXRjc3MuXG4gKlxuICogT3dpbmcgdG8gdGhlIGFtb3VudCBvZiBjb21tZW50cyBwbGVhc2Ugb25seSBldmVyIHVzZSBtaW5pZmllZCBDU1MgaW5cbiAqIHByb2R1Y3Rpb24uIFRoaXMgZmlsZSBpcyBwdXJlbHkgYSBkZXYgZG9jdW1lbnQuXG4gKlxuICogVGhlIHRhYmxlIG9mIGNvbnRlbnRzIGJlbG93IG1hcHMgdG8gc2VjdGlvbiB0aXRsZXMgb2YgdGhlIHNhbWUgbmFtZSwgdG8ganVtcFxuICogdG8gYW55IHNlY3Rpb24gc2ltcGx5IHJ1biBhIGZpbmQgZm9yICRbU0VDVElPTi1USVRMRV0uXG4gKlxuICogTW9zdCBvYmplY3RzIGFuZCBhYnN0cmFjdGlvbnMgY29tZSB3aXRoIGEgY2h1bmsgb2YgbWFya3VwIHRoYXQgeW91IHNob3VsZCBiZVxuICogYWJsZSB0byBwYXN0ZSBpbnRvIGFueSB2aWV3IHRvIHF1aWNrbHkgc2VlIGhvdyB0aGUgQ1NTIHdvcmtzIGluIGNvbmp1bmN0aW9uXG4gKiB3aXRoIHRoZSBjb3JyZWN0IEhUTUwuXG4gKlxuICogaW51aXQuY3NzIGlzIHdyaXR0ZW4gdG8gdGhpcyBzdGFuZGFyZDogZ2l0aHViLmNvbS9jc3N3aXphcmRyeS9DU1MtR3VpZGVsaW5lc1xuICpcbiAqIExJQ0VOU0VcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMyBIYXJyeSBSb2JlcnRzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly9hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiBUaGFuayB5b3UgZm9yIGNob29zaW5nIGludWl0LmNzcy4gTWF5IHlvdXIgd2ViIGZvbnRzIHJlbmRlciBwZXJmZWN0bHkuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIENPTlRFTlRTLi4uLi4uLi4uLi4uWW914oCZcmUgcmVhZGluZyBpdCFcbiAqIFdBUk5JTkcuLi4uLi4uLi4uLi4uSGVyZSBiZSBkcmFnb25zIVxuICogSU1QT1JUUy4uLi4uLi4uLi4uLi5CZWdpbiBpbXBvcnRpbmcgdGhlIHNlY3Rpb25zIGJlbG93XG4gKlxuICogTUlYSU5TLi4uLi4uLi4uLi4uLi5TdXBlci1zaW1wbGUgU2FzcyBzdHVmZlxuICogTk9STUFMSVpFLi4uLi4uLi4uLi5ub3JtYWxpemUuY3NzXG4gKiBSRVNFVC4uLi4uLi4uLi4uLi4uLlNldCBzb21lIGRlZmF1bHRzXG4gKiBDTEVBUkZJWC4uLi4uLi4uLi4uLlxuICogU0hBUkVELi4uLi4uLi4uLi4uLi5TaGFyZWQgZGVjbGFyYXRpb25zXG4gKlxuICogTUFJTi4uLi4uLi4uLi4uLi4uLi5IaWdoLWxldmVsIGVsZW1lbnRzIGxpa2UgYGh0bWxgLCBgYm9keWAsIGV0Yy5cbiAqIEhFQURJTkdTLi4uLi4uLi4uLi4uRG91YmxlLXN0cmFuZGVkIGhlYWRpbmcgaGllcmFyY2h5XG4gKiBQQVJBR1JBUEhTLi4uLi4uLi4uLlxuICogU01BTExQUklOVC4uLi4uLi4uLi5TbWFsbGVyIHRleHQgZWxlbWVudHMgbGlrZSBgc21hbGxgXG4gKiBRVU9URVMuLi4uLi4uLi4uLi4uLlxuICogQ09ERS4uLi4uLi4uLi4uLi4uLi5cbiAqIExJU1RTLi4uLi4uLi4uLi4uLi4uXG4gKiBJTUFHRVMuLi4uLi4uLi4uLi4uLlxuICogVEFCTEVTLi4uLi4uLi4uLi4uLi5cbiAqIEZPUk1TLi4uLi4uLi4uLi4uLi4uXG4gKlxuICogR1JJRFMuLi4uLi4uLi4uLi4uLi5GbHVpZCwgcHJvcG9ydGlvbmFsIGFuZCBuZXN0YWJsZSBncmlkc1xuICogRkxFWEJPWC4uLi4uLi4uLi4uLi5DcnVkZWx5IGVtdWxhdGUgZmxleGJveFxuICogQ09MVU1OUy4uLi4uLi4uLi4uLi5DU1MzIGNvbHVtbnNcbiAqIE5BVi4uLi4uLi4uLi4uLi4uLi4uQSBzaW1wbGUgYWJzdHJhY3Rpb24gdG8gcHV0IGEgbGlzdCBpbiBob3Jpem9udGFsIG5hdiBtb2RlXG4gKiBPUFRJT05TLi4uLi4uLi4uLi4uLkdyb3VwZWQgbmF2IGl0ZW1zXG4gKiBQQUdJTkFUSU9OLi4uLi4uLi4uLlZlcnkgc3RyaXBwZWQgYmFjaywgYmFzaWMgcGFnaW5hdG9yXG4gKiBCUkVBRENSVU1CLi4uLi4uLi4uLlNpbXBsZSBicmVhZGNydW1iIHRyYWlsIG9iamVjdFxuICogTUVESUEuLi4uLi4uLi4uLi4uLi5NZWRpYSBvYmplY3RcbiAqIE1BUkdJTkFMSUEuLi4uLi4uLi4uU2ltcGxlIG1hcmdpbmFsaWEgY29udGVudFxuICogSVNMQU5ELi4uLi4uLi4uLi4uLi5Cb3hlZCBvZmYgY29udGVudFxuICogQkxPQ0stTElTVC4uLi4uLi4uLi5CbG9ja3kgbGlzdHMgb2YgY29udGVudFxuICogTUFUUklYLi4uLi4uLi4uLi4uLi5HcmlkZGVkIGxpc3RzXG4gKiBTUExJVC4uLi4uLi4uLi4uLi4uLkEgc2ltcGxlIHNwbGl0LWluLXR3byBvYmplY3RcbiAqIFRISVMtT1ItVEhJUy4uLi4uLi4uT3B0aW9ucyBvYmplY3RcbiAqIExJTkstQ09NUExFWC4uLi4uLi4uXG4gKiBGTFlPVVQuLi4uLi4uLi4uLi4uLkZseW91dC1vbi1ob3ZlciBvYmplY3RcbiAqIEFSUk9XUy4uLi4uLi4uLi4uLi4uQ1NTIGFycm93c1xuICogU1BSSVRFLi4uLi4uLi4uLi4uLi5HZW5lcmljIHNwcml0aW5nIGVsZW1lbnRcbiAqIElDT04tVEVYVC4uLi4uLi4uLi4uSWNvbiBhbmQgdGV4dCBjb3VwbGluZ3NcbiAqIEJFQVVUT05TLi4uLi4uLi4uLi4uVXNlIHRoZSBiZWF1dG9ucyBtaWNybyBsaWJyYXJ5XG4gKiBMT1pFTkdFUy4uLi4uLi4uLi4uLkJhc2ljIGxvemVuZ2Ugc3R5bGVzXG4gKiBSVUxFUy4uLi4uLi4uLi4uLi4uLkhvcml6b250YWwgcnVsZXNcbiAqIFNUQVRTLi4uLi4uLi4uLi4uLi4uU2ltcGxlIHN0YXRzIG9iamVjdFxuICogR1JFWUJPWC4uLi4uLi4uLi4uLi5XaXJlZnJhbWluZyBzdHlsZXNcbiAqXG4gKiBXSURUSFMuLi4uLi4uLi4uLi4uLldpZHRoIGNsYXNzZXMgZm9yIHVzZSBhbG9uZ3NpZGUgdGhlIGdyaWQgc3lzdGVtIGV0Yy5cbiAqIFBVU0guLi4uLi4uLi4uLi4uLi4uUHVzaCBjbGFzc2VzIGZvciBtYW5pcHVsYXRpbmcgZ3JpZHNcbiAqIFBVTEwuLi4uLi4uLi4uLi4uLi4uUHVsbCBjbGFzc2VzIGZvciBtYW5pcHVsYXRpbmcgZ3JpZHNcbiAqIEJSQU5ELi4uLi4uLi4uLi4uLi4uSGVscGVyIGNsYXNzIHRvIGFwcGx5IGJyYW5kIHRyZWF0bWVudCB0byBlbGVtZW50c1xuICogSEVMUEVSLi4uLi4uLi4uLi4uLi5BIHNlcmllcyBvZiBoZWxwZXIgY2xhc3NlcyB0byB1c2UgYXJiaXRyYXJpbHlcbiAqIERFQlVHLi4uLi4uLi4uLi4uLi4uRW5hYmxlIHRvIGFkZCB2aXN1YWwgZmxhZ3MgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlc1xuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFdBUk5JTkdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKlxuICogaW51aXQuY3NzLCBiZWluZyBhbiBPTyBmcmFtZXdvcmssIHdvcmtzIGluIGtlZXBpbmcgd2l0aCB0aGUgb3Blbi9jbG9zZWRcbiAqIHByaW5jaXBsZS4gVGhlIHZhcmlhYmxlcyB5b3Ugc2V0IHByZXZpb3VzbHkgYXJlIG5vdyBiZWluZyB1c2VkIHRocm91Z2hvdXRcbiAqIGludWl0LmNzcyB0byBzdHlsZSBldmVyeXRoaW5nIHdlIG5lZWQgZm9yIGEgYmFzZS4gQW55IGN1c3RvbSBzdHlsZXMgU0hPVUxEXG4gKiBOT1QgYmUgYWRkZWQgb3IgbW9kaWZpZWQgaW4gaW51aXQuY3NzIGRpcmVjdGx5LCBidXQgYWRkZWQgdmlhIHlvdXIgdGhlbWVcbiAqIHN0eWxlc2hlZXQgYXMgcGVyIHRoZSBvcGVuL2Nsb3NlZCBwcmluY2lwbGU6XG4gKlxuICogY3Nzd2l6YXJkcnkuY29tLzIwMTIvMDYvdGhlLW9wZW4tY2xvc2VkLXByaW5jaXBsZS1hcHBsaWVkLXRvLWNzc1xuICpcbiAqIFRyeSBub3QgdG8gZWRpdCBhbnkgQ1NTIGJleW9uZCB0aGlzIHBvaW50OyBpZiB5b3UgZmluZCB5b3UgbmVlZCB0byBkbyBzb1xuICogaXQgaXMgYSBmYWlsaW5nIG9mIHRoZSBmcmFtZXdvcmsgc28gcGxlYXNlIHR3ZWV0IGF0IEBpbnVpdGNzcy5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRJTVBPUlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBHZW5lcmljIHV0aWxpdHkgc3R5bGVzIGV0Yy5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRERUZBVUxUU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogaW51aXQuY3Nz4oCZIGRlZmF1bHQgdmFyaWFibGVzLiBSZWRlZmluZSB0aGVzZSBpbiB5b3VyIGBfdmFycy5zY3NzYCBmaWxlIChmb3VuZFxuICogaW4gdGhlIGludWl0LmNzcy13ZWItdGVtcGxhdGUpIHRvIG92ZXJyaWRlIHRoZW0uXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkREVCVUdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIERlYnVnIG1vZGUgd2lsbCB2aXN1YWxseSBoaWdobGlnaHQgYW55IHBvdGVudGlhbCBtYXJrdXAvYWNjZXNzaWJpbGl0eSBxdWlya3NcbiAqIGluIHRoZSBicm93c2VyLiBTZXQgdG8gYHRydWVgIG9yIGBmYWxzZWAuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkQk9SREVSLUJPWFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRG8geW91IHdhbnQgYWxsIGVsZW1lbnRzIHRvIGFkb3B0IGBib3gtc2l6aW5nOmJvcmRlci1ib3g7YCBhcyBwZXJcbiAqIHBhdWxpcmlzaC5jb20vMjAxMi9ib3gtc2l6aW5nLWJvcmRlci1ib3gtZnR3ID9cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRCQVNFXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBCYXNlIHN0dWZmXG4gKi9cbi8qKlxuICogQmFzZSBmb250LWZhbWlseS5cbiAqL1xuLyoqXG4gKiBEZWZhdWx0IGNvbG91ciBmb3Igb2JqZWN0c+KAmSBib3JkZXJzIGV0Yy5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRSRVNQT05TSVZFXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBSZXNwb25zaXZlbmVzcz9cbiAqL1xuLyoqXG4gKiBSZXNwb25zaXZlbmVzcyBmb3Igd2lkZXNjcmVlbi9oaWdoIHJlc29sdXRpb24gZGVza3RvcCBtb25pdG9ycyBhbmQgYmV5b25kP1xuICogTm90ZTogYCRyZXNwb25zaXZlYCB2YXJpYWJsZSBhYm92ZSBtdXN0IGJlIHNldCB0byB0cnVlIGJlZm9yZSBlbmFibGluZyB0aGlzLlxuICovXG4vKipcbiAqIFJlc3BvbnNpdmUgcHVzaCBhbmQgcHVsbCBwcm9kdWNlIGEgTE9UIG9mIGNvZGUsIG9ubHkgdHVybiB0aGVtIG9uIGlmIHlvdVxuICogZGVmaW5pdGVseSBuZWVkIHRoZW0uXG4gKi9cbi8qKlxuICogTm90ZTogYCRwdXNoYCB2YXJpYWJsZSBhYm92ZSBtdXN0IGJlIHNldCB0byB0cnVlIGJlZm9yZSBlbmFibGluZyB0aGVzZS5cbiAqL1xuLyoqXG4gKiBOb3RlOiBgJHB1bGxgIHZhcmlhYmxlIGFib3ZlIG11c3QgYmUgc2V0IHRvIHRydWUgYmVmb3JlIGVuYWJsaW5nIHRoZXNlLlxuICovXG4vKipcbiAqIFRlbGwgaW51aXQuY3NzIHdoZW4gYnJlYWtwb2ludHMgc3RhcnQuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkRk9OVC1TSVpFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRm9udC1zaXplcyAoaW4gcGl4ZWxzKS4gUmVmZXIgdG8gcmVsZXZhbnQgc2VjdGlvbnMgZm9yIHRoZWlyIGltcGxlbWVudGF0aW9ucy5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRRVU9URVNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEVuZ2xpc2ggcXVvdGUgbWFya3M/XG4gKi9cbi8qKlxuICogSWYgeW91IHdhbnQgRW5nbGlzaCBxdW90ZXMgdGhlbiBwbGVhc2UgZG8gbm90IGVkaXQgdGhlc2U7IHRoZXnigJlyZSBvbmx5IGhlcmVcbiAqIGJlY2F1c2UgU2FzcyBuZWVkcyB0aGVtLlxuICovXG4vKipcbiAqIElmIHlvdSBuZWVkIG5vbi1FbmdsaXNoIHF1b3RlcywgcGxlYXNlIGFsdGVyIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFjY29yZGluZ2x5OlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJEJSQU5EXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBCcmFuZCBzdHVmZlxuICovXG4vKipcbiAqIEhvdyBiaWcgd291bGQgeW91IGxpa2Ugcm91bmQgY29ybmVycyB0byBiZSBieSBkZWZhdWx0P1xuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJE9CSkVDVFMgQU5EIEFCU1RSQUNUSU9OU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2hpY2ggb2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT9cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRGUkFNRVdPUktcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGludWl0LmNzcyB3aWxsIHdvcmsgdGhlc2UgbmV4dCBvbmVzIG91dCBmb3IgdXNlIHdpdGhpbiB0aGUgZnJhbWV3b3JrLlxuICpcbiAqIEFzc2lnbiBvdXIgYCRiYXNlLWxpbmUtaGVpZ2h0YCB0byBhIG5ldyBzcGFjaW5nIHZhciBmb3IgbW9yZSB0cmFuc3BhcmVuY3kuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkTUlYSU5TXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBDcmVhdGUgYSBmdWxseSBmb3JtZWQgdHlwZSBzdHlsZSAoc2l6aW5nIGFuZCB2ZXJ0aWNhbCByaHl0aG0pIGJ5IHBhc3NpbmcgaW4gYVxuICogc2luZ2xlIHZhbHVlLCBlLmcuOlxuICpcbiAgIGBAaW5jbHVkZSBmb250LXNpemUoMTBweCk7YFxuICpcbiAqIFRoYW5rcyB0byBAcmVkY2xvdjNyIGZvciB0aGUgYGxpbmUtaGVpZ2h0YCBTYXNzOlxuICogdHdpdHRlci5jb20vcmVkY2xvdjNyL3N0YXR1cy8yNTAzMDE1MzkzMjE3OTg2NTdcbiAqL1xuLyoqXG4gKiBTdHlsZSBhbnkgbnVtYmVyIG9mIGhlYWRpbmdzIGluIG9uZSBmZWxsIHN3b29wLCBlLmcuOlxuICpcbiAgIC5mb297XG4gICAgICAgQGluY2x1ZGUgaGVhZGluZ3MoMSwgMyl7XG4gICAgICAgICAgIGNvbG9yOiNCQURBNTU7XG4gICAgICAgfVxuICAgIH1cbiAqXG4gKiBXaXRoIHRoYW5rcyB0byBAbGFyX3p6eiwgQHBhcmFub2lkYSwgQHJvd2FubWFubmluZyBhbmQgdWx0aW1hdGVseVxuICogQHRoaWVycnlsZW1vdWxlYyBmb3IgcmVmaW5pbmcgYW5kIGltcHJvdmluZyBteSBpbml0aWFsIG1peGluLlxuICovXG4vKipcbiAqIENyZWF0ZSB2ZW5kb3ItcHJlZml4ZWQgQ1NTIGluIG9uZSBnbywgZS5nLlxuICpcbiAgIGBAaW5jbHVkZSB2ZW5kb3IoYm9yZGVyLXJhZGl1cywgNHB4KTtgXG4gKlxuICovXG4vKipcbiAqIENyZWF0ZSBDU1Mga2V5ZnJhbWUgYW5pbWF0aW9ucyBmb3IgYWxsIHZlbmRvcnMgaW4gb25lIGdvLCBlLmcuOlxuICpcbiAgIC5mb297XG4gICAgICAgQGluY2x1ZGUgdmVuZG9yKGFuaW1hdGlvbiwgc2hyaW5rIDNzKTtcbiAgIH1cblxuICAgQGluY2x1ZGUga2V5ZnJhbWUoc2hyaW5rKXtcbiAgICAgICBmcm9te1xuICAgICAgICAgICBmb250LXNpemU6NWVtO1xuICAgICAgIH1cbiAgIH1cbiAqXG4gKiBDb3VydGVzeSBvZiBAaW50ZWdyYWxpc3Q6IHR3aXR0ZXIuY29tL2ludGVncmFsaXN0L3N0YXR1cy8yNjA0ODQxMTUzMTU0Mzc1NjlcbiAqL1xuLyoqXG4gKiBGb3JjZSBvdmVybHkgbG9uZyBzcGFucyBvZiB0ZXh0IHRvIHRydW5jYXRlLCBlLmcuOlxuICpcbiAgIGBAaW5jbHVkZSB0cnVuY2F0ZSgxMDAlKTtgXG4gKlxuICogV2hlcmUgYCR0cnVuY2F0aW9uLWJvdW5kYXJ5YCBpcyBhIHVuaXRlZCBtZWFzdXJlbWVudC5cbiAqL1xuLyoqXG4gKiBDU1MgYXJyb3dzISEhIEJ1dC4uLiBiZWZvcmUgeW91IHJlYWQgb24sIHlvdSBtaWdodCB3YW50IHRvIGdyYWIgYSBjb2ZmZWUuLi5cbiAqXG4gKiBUaGlzIG1peGluIGNyZWF0ZXMgYSBDU1MgYXJyb3cgb24gYSBnaXZlbiBlbGVtZW50LiBXZSBjYW4gaGF2ZSB0aGUgYXJyb3dcbiAqIGFwcGVhciBpbiBvbmUgb2YgMTIgbG9jYXRpb25zLCB0aHVzOlxuICpcbiAqICAgICAgIDAxICAgIDAyICAgIDAzXG4gKiAgICArLS0tLS0tLS0tLS0tLS0tLS0tK1xuICogMTIgfCAgICAgICAgICAgICAgICAgIHwgMDRcbiAqICAgIHwgICAgICAgICAgICAgICAgICB8XG4gKiAxMSB8ICAgICAgICAgICAgICAgICAgfCAwNVxuICogICAgfCAgICAgICAgICAgICAgICAgIHxcbiAqIDEwIHwgICAgICAgICAgICAgICAgICB8IDA2XG4gKiAgICArLS0tLS0tLS0tLS0tLS0tLS0tK1xuICogICAgICAgMDkgICAgMDggICAgMDdcbiAqXG4gKiBZb3UgcGFzcyB0aGlzIHBvc2l0aW9uIGluIGFsb25nIHdpdGggYSBkZXNpcmVkIGFycm93IGNvbG9yIGFuZCBvcHRpb25hbFxuICogYm9yZGVyIGNvbG9yLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiBgQGluY2x1ZGUgYXJyb3codG9wLCBsZWZ0LCByZWQpYFxuICpcbiAqIGZvciBqdXN0IGEgc2luZ2xlLCByZWQgYXJyb3csIG9yOlxuICpcbiAqIGBAaW5jbHVkZSBhcnJvdyhib3R0b20sIGNlbnRlciwgcmVkLCBibGFjaylgXG4gKlxuICogd2hpY2ggd2lsbCBjcmVhdGUgYSByZWQgdHJpYW5nbGUgd2l0aCBhIGJsYWNrIGJvcmRlciB3aGljaCBzaXRzIGF0IHRoZSBib3R0b21cbiAqIGNlbnRlciBvZiB0aGUgZWxlbWVudC4gQ2FsbCB0aGUgbWl4aW4gdGh1czpcbiAqXG4gICAuZm9ve1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6I0JBREE1NTtcbiAgICAgICBib3JkZXI6MXB4IHNvbGlkICNBQ0U7XG4gICAgICAgQGluY2x1ZGUgYXJyb3codG9wLCBsZWZ0LCAjQkFEQTU1LCAjQUNFKTtcbiAgIH1cbiAqXG4gKi9cbi8qKlxuICogTWVkaWEgcXVlcnkgbWl4aW4uXG4gKlxuICogSXTigJlzIG5vdCBncmVhdCBwcmFjdGljZSB0byBkZWZpbmUgc29saWQgYnJlYWtwb2ludHMgdXAtZnJvbnQsIHByZWZlcnJpbmcgdG9cbiAqIG1vZGlmeSB5b3VyIGRlc2lnbiB3aGVuIGl0IG5lZWRzIGl0LCByYXRoZXIgdGhhbiBhc3N1bWluZyB5b3XigJlsbCB3YW50IGFcbiAqIGNoYW5nZSBhdCDigJhtb2JpbGXigJkuIEhvd2V2ZXIsIGFzIGludWl0LmNzcyBpcyByZXF1aXJlZCB0byB0YWtlIGEgaGFuZHMgb2ZmXG4gKiBhcHByb2FjaCB0byBkZXNpZ24gZGVjaXNpb25zLCB0aGlzIGlzIHRoZSBjbG9zZXN0IHdlIGNhbiBnZXQgdG8gYmFrZWQtaW5cbiAqIHJlc3BvbnNpdmVuZXNzLiBJdOKAmXMgZmxleGlibGUgZW5vdWdoIHRvIGFsbG93IHlvdSB0byBzZXQgeW91ciBvd24gYnJlYWtwb2ludHNcbiAqIGJ1dCBzb2xpZCBlbm91Z2ggdG8gYmUgZnJhbWV3b3JraWZpZWQuXG4gKlxuICogV2UgZGVmaW5lIHNvbWUgYnJvYWQgYnJlYWtwb2ludHMgaW4gb3VyIHZhcnMgZmlsZSB0aGF0IGFyZSBwaWNrZWQgdXAgaGVyZVxuICogZm9yIHVzZSBpbiBhIHNpbXBsZSBtZWRpYSBxdWVyeSBtaXhpbi4gT3VyIG9wdGlvbnMgYXJlOlxuICpcbiAqIHBhbG1cbiAqIGxhcFxuICogbGFwLWFuZC11cFxuICogcG9ydGFibGVcbiAqIGRlc2tcbiAqIGRlc2std2lkZVxuICpcbiAqIE5vdCB1c2luZyBhIG1lZGlhIHF1ZXJ5IHdpbGwsIG5hdHVyYWxseSwgc2VydmUgc3R5bGVzIHRvIGFsbCBkZXZpY2VzLlxuICpcbiAqIGBAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKXsgW3N0eWxlcyBoZXJlXSB9YFxuICpcbiAqIFdlIHdvcmsgb3V0IHlvdXIgZW5kIHBvaW50cyBmb3IgeW91OlxuICovXG4vKiEgbm9ybWFsaXplLmNzcyB2Mi4xLjAgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqL1xuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKlxuICogQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqL1xuYXVkaW8sXG5jYW52YXMsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4vKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDsgfVxuXG4vKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZSwgd2l0aG91dCBkaXNhYmxpbmdcbiAqICAgIHVzZXIgem9vbS5cbiAqL1xuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqLyB9XG5cbi8qXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cbmJvZHkge1xuICBtYXJnaW46IDA7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZHJlc3MgYG91dGxpbmVgIGluY29uc2lzdGVuY3kgYmV0d2VlbiBDaHJvbWUgYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5hOmZvY3VzIHtcbiAgb3V0bGluZTogdGhpbiBkb3R0ZWQ7IH1cblxuLypcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgd2hlbiBmb2N1c2VkIGFuZCBhbHNvIG1vdXNlIGhvdmVyZWQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUeXBvZ3JhcGh5XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LCBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkOyB9XG5cbi8qXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi8qXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cbmhyIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDsgfVxuXG4vKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qXG4gKiBDb3JyZWN0IGZvbnQgZmFtaWx5IHNldCBvZGRseSBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLlxuICovXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNlcmlmO1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4vKlxuICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBwcmUtZm9ybWF0dGVkIHRleHQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5wcmUge1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cblxuLypcbiAqIFNldCBjb25zaXN0ZW50IHF1b3RlIHR5cGVzLlxuICovXG5xIHtcbiAgcXVvdGVzOiBcIlxcMjAxQ1wiIFwiXFwyMDFEXCIgXCJcXDIwMThcIiBcIlxcMjAxOVwiOyB9XG5cbi8qXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuc21hbGwge1xuICBmb250LXNpemU6IDgwJTsgfVxuXG4vKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS5cbiAqL1xuaW1nIHtcbiAgYm9yZGVyOiAwOyB9XG5cbi8qXG4gKiBDb3JyZWN0IG92ZXJmbG93IGRpc3BsYXllZCBvZGRseSBpbiBJRSA5LlxuICovXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZpZ3VyZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkgNS5cbiAqL1xuZmlndXJlIHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOyB9XG5cbi8qXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLypcbiAqIDEuIENvcnJlY3QgZm9udCBmYW1pbHkgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgc2l6ZSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy5cbiAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7XG4gIC8qIDIgKi9cbiAgbWFyZ2luOiAwO1xuICAvKiAzICovIH1cblxuLypcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5idXR0b24sXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuLypcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIENocm9tZSwgU2FmYXJpIDUrLCBhbmQgSUUgOCsuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3ggNCsgYW5kIE9wZXJhLlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogMyAqLyB9XG5cbi8qXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7IH1cblxuLypcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LlxuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZVxuICogICAgKGluY2x1ZGUgYC1tb3pgIHRvIGZ1dHVyZS1wcm9vZikuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAvKiAyICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9XG5cbi8qXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIDUgYW5kIENocm9tZVxuICogb24gT1MgWC5cbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLypcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLypcbiAqIDEuIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkuXG4gKiAyLiBJbXByb3ZlIHJlYWRhYmlsaXR5IGFuZCBhbGlnbm1lbnQgaW4gYWxsIGJyb3dzZXJzLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIC8qIDIgKi8gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFJFU0VUXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBBIG1vcmUgY29uc2lkZXJlZCByZXNldDsgbW9yZSBvZiBhIHJlc3RhcnQuLi5cbiAqIEFzIHBlcjogY3Nzd2l6YXJkcnkuY29tLzIwMTEvMTAvcmVzZXQtcmVzdGFydGVkXG4gKi9cbi8qKlxuICAgICogTGV04oCZcyBtYWtlIHRoZSBib3ggbW9kZWwgYWxsIG5pY2UsIHNoYWxsIHdlLi4uP1xuICAgICovXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbXMtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW8tYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4vKipcbiAqIFRoZSB1c3VhbC4uLlxuICovXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxucCwgYmxvY2txdW90ZSwgcHJlLFxuZGwsIGRkLCBvbCwgdWwsXG5mb3JtLCBmaWVsZHNldCwgbGVnZW5kLFxudGFibGUsIHRoLCB0ZCwgY2FwdGlvbixcbmhyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuICogR2l2ZSBhIGhlbHAgY3Vyc29yIHRvIGVsZW1lbnRzIHRoYXQgZ2l2ZSBleHRyYSBpbmZvIG9uIGA6aG92ZXJgLlxuICovXG5hYmJyW3RpdGxlXSwgZGZuW3RpdGxlXSB7XG4gIGN1cnNvcjogaGVscDsgfVxuXG4vKipcbiAqIFJlbW92ZSB1bmRlcmxpbmVzIGZyb20gcG90ZW50aWFsbHkgdHJvdWJsZXNvbWUgZWxlbWVudHMuXG4gKi9cbnUsIGlucyB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuXG4vKipcbiAqIEFwcGx5IGZhdXggdW5kZXJsaW5lIHZpYSBgYm9yZGVyLWJvdHRvbWAuXG4gKi9cbmlucyB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDsgfVxuXG4vKipcbiAqIFNvIHRoYXQgYGFsdGAgdGV4dCBpcyB2aXN1YWxseSBvZmZzZXQgaWYgaW1hZ2VzIGRvbuKAmXQgbG9hZC5cbiAqL1xuaW1nIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxuICogR2l2ZSBmb3JtIGVsZW1lbnRzIHNvbWUgY3Vyc29yIGludGVyYWN0aW9ucy4uLlxuICovXG5sYWJlbCxcbmlucHV0LFxudGV4dGFyZWEsXG5idXR0b24sXG5zZWxlY3QsXG5vcHRpb24ge1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuLnRleHQtaW5wdXQ6YWN0aXZlLFxuLnRleHQtaW5wdXQ6Zm9jdXMsXG50ZXh0YXJlYTphY3RpdmUsXG50ZXh0YXJlYTpmb2N1cyB7XG4gIGN1cnNvcjogdGV4dDtcbiAgb3V0bGluZTogbm9uZTsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJENMRUFSRklYXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBNaWNybyBjbGVhcmZpeCwgYXMgcGVyOiBjc3MtMTAxLm9yZy9hcnRpY2xlcy9jbGVhcmZpeC9sYXRlc3QtbmV3LWNsZWFyZml4LXNvLWZhci5waHBcbiAqIEV4dGVuZCB0aGUgY2xlYXJmaXggY2xhc3Mgd2l0aCBTYXNzIHRvIGF2b2lkIHRoZSBgLmNmYCBjbGFzcyBhcHBlYXJpbmcgb3ZlclxuICogYW5kIG92ZXIgaW4geW91ciBtYXJrdXAuXG4gKi9cbi5jZjphZnRlciwgLm5hdjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjbGVhcjogYm90aDsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFNIQVJFRFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2hlcmUgYG1hcmdpbi1ib3R0b21gIGlzIGNvbmNlcm5lZCwgdGhpcyB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZVxuICogYmFzZSBsaW5lLWhlaWdodC4gVGhpcyBhbGxvd3MgdXMgdG8ga2VlcCBhIGNvbnNpc3RlbnQgdmVydGljYWwgcmh5dGhtLlxuICogQXMgcGVyOiBjc3N3aXphcmRyeS5jb20vMjAxMi8wNi9zaW5nbGUtZGlyZWN0aW9uLW1hcmdpbi1kZWNsYXJhdGlvbnNcbiAqL1xuLyoqXG4gKiBCYXNlIGVsZW1lbnRzXG4gKi9cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhncm91cCxcbnVsLCBvbCwgZGwsXG5ibG9ja3F1b3RlLCBwLCBhZGRyZXNzLFxudGFibGUsXG5maWVsZHNldCwgZmlndXJlLFxucHJlLFxuLmZvcm0tZmllbGRzID4gbGksXG4ubWVkaWEsXG4uaXNsYW5kLFxuLmlzbGV0IHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTsgfVxuICAuaXNsZXQgaDEsIC5pc2xldCBoMiwgLmlzbGV0IGgzLCAuaXNsZXQgaDQsIC5pc2xldCBoNSwgLmlzbGV0IGg2LCAuaXNsZXQgaGdyb3VwLCAuaXNsZXRcbiAgdWwsIC5pc2xldCBvbCwgLmlzbGV0IGRsLCAuaXNsZXRcbiAgYmxvY2txdW90ZSwgLmlzbGV0IHAsIC5pc2xldCBhZGRyZXNzLCAuaXNsZXRcbiAgdGFibGUsIC5pc2xldFxuICBmaWVsZHNldCwgLmlzbGV0IGZpZ3VyZSwgLmlzbGV0XG4gIHByZSxcbiAgLmlzbGV0IC5mb3JtLWZpZWxkcyA+IGxpLCAuaXNsZXRcbiAgLm1lZGlhLCAuaXNsZXRcbiAgLmlzbGFuZCwgLmlzbGV0XG4gIC5pc2xldCB7XG4gICAgbWFyZ2luLWJvdHRvbTogNy41cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG5cbi8qKlxuICogRG91YmxlZCB1cCBgbWFyZ2luLWJvdHRvbWAgaGVscGVyIGNsYXNzLlxuICovXG4ubGFuZG1hcmsge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICBtYXJnaW4tYm90dG9tOiAycmVtOyB9XG5cbi8qKlxuICogYGhyYCBlbGVtZW50cyBvbmx5IHRha2UgdXAgYSBmZXcgcGl4ZWxzLCBzbyB3ZSBuZWVkIHRvIGdpdmUgdGhlbSBzcGVjaWFsXG4gKiB0cmVhdG1lbnQgcmVnYXJkaW5nIHZlcnRpY2FsIHJoeXRobS5cbiAqL1xuaHIge1xuICBtYXJnaW4tYm90dG9tOiAxM3B4O1xuICBtYXJnaW4tYm90dG9tOiAwLjg2NjY3cmVtOyB9XG5cbi8qKlxuICogV2hlcmUgYG1hcmdpbi1sZWZ0YCBpcyBjb25jZXJuZWQgd2Ugd2FudCB0byB0cnkgYW5kIGluZGVudCBjZXJ0YWluIGVsZW1lbnRzXG4gKiBieSBhIGNvbnNpc3RlbnQgYW1vdW50LiBEZWZpbmUgdGhhdCBhbW91bnQgb25jZSwgaGVyZS5cbiAqL1xudWwsIG9sLCBkZCB7XG4gIG1hcmdpbi1sZWZ0OiAzMHB4O1xuICBtYXJnaW4tbGVmdDogMnJlbTsgfVxuXG4vKipcbiAqIEJhc2Ugc3R5bGVzOyB1bmNsYXNzZWQgSFRNTCBlbGVtZW50cyBldGMuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkTUFJTlxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmh0bWwge1xuICBmb250OiAwLjkzNzVlbSAvIDEuMzMzMzMgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBtaW4taGVpZ2h0OiAxMDAlOyB9XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkSEVBRElOR1NcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEFzIHBlcjogY3Nzd2l6YXJkcnkuY29tLzIwMTIvMDIvcHJhZ21hdGljLXByYWN0aWNhbC1mb250LXNpemluZy1pbi1jc3NcbiAqXG4gKiBXaGVuIHdlIGRlZmluZSBhIGhlYWRpbmcgd2UgYWxzbyBkZWZpbmUgYSBjb3JyZXNwb25kaW5nIGNsYXNzIHRvIGdvIHdpdGggaXQuXG4gKiBUaGlzIGFsbG93cyB1cyB0byBhcHBseSwgc2F5LCBgY2xhc3M9YWxwaGFgIHRvIGEgYGgzYDsgYSBkb3VibGUtc3RyYW5kZWRcbiAqIGhlYWRpbmcgaGllcmFyY2h5LlxuICovXG5oMSwgLmFscGhhIHtcbiAgZm9udC1zaXplOiAzM3B4O1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjEyMTI7IH1cblxuaDIsIC5iZXRhIHtcbiAgZm9udC1zaXplOiAyNXB4O1xuICBmb250LXNpemU6IDEuNjY2NjdyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY7IH1cblxuaDMsIC5nYW1tYSB7XG4gIGZvbnQtc2l6ZTogMjNweDtcbiAgZm9udC1zaXplOiAxLjUzMzMzcmVtO1xuICBsaW5lLWhlaWdodDogMS43MzkxMzsgfVxuXG5oNCwgLmRlbHRhIHtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBmb250LXNpemU6IDEuNDY2NjdyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjgxODE4OyB9XG5cbmg1LCAuZXBzaWxvbiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC1zaXplOiAxLjA2NjY3cmVtO1xuICBsaW5lLWhlaWdodDogMS4yNTsgfVxuXG5oNiwgLnpldGEge1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzM7IH1cblxuLyoqXG4gKiBIZWFkaW5nIGdyb3VwcyBhbmQgZ2VuZXJpYyBhbnktaGVhZGluZyBjbGFzcy5cbiAqIFRvIHRhcmdldCBhbnkgaGVhZGluZyBvZiBhbnkgbGV2ZWwgc2ltcGx5IGFwcGx5IGEgY2xhc3Mgb2YgYC5oTmAsIGUuZy46XG4gKlxuICAgPGhncm91cD5cbiAgICAgICA8aDEgY2xhc3M9aE4+aW51aXQuY3NzPC9oMT5cbiAgICAgICA8aDIgY2xhc3M9aE4+QmVzdC4gRnJhbWV3b3JrLiBFdmVyITwvaDI+XG4gICA8L2hncm91cD5cbiAqXG4gKi9cbmhncm91cCAuaE4ge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qKlxuICogQSBzZXJpZXMgb2YgY2xhc3NlcyBmb3Igc2V0dGluZyBtYXNzaXZlIHR5cGU7IGZvciB1c2UgaW4gaGVyb2VzLCBtYXN0aGVhZHMsXG4gKiBwcm9tb3MsIGV0Yy5cbiAqL1xuLmdpZ2Ege1xuICBmb250LXNpemU6IDk2cHg7XG4gIGZvbnQtc2l6ZTogNi40cmVtO1xuICBsaW5lLWhlaWdodDogMS4wNDE2NzsgfVxuXG4ubWVnYSB7XG4gIGZvbnQtc2l6ZTogNzJweDtcbiAgZm9udC1zaXplOiA0LjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjExMTExOyB9XG5cbi5raWxvIHtcbiAgZm9udC1zaXplOiA0OHB4O1xuICBmb250LXNpemU6IDMuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjU7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRQQVJBR1JBUEhTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBUaGUgYC5sZWRlYCBjbGFzcyBpcyB1c2VkIHRvIG1ha2UgdGhlIGludHJvZHVjdG9yeSB0ZXh0ICh1c3VhbGx5IGEgcGFyYWdyYXBoKVxuICogb2YgYSBkb2N1bWVudCBzbGlnaHRseSBsYXJnZXIuXG4gKi9cbi5sZWRlLFxuLmxlYWQge1xuICBmb250LXNpemU6IDE2Ljg3NXB4O1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4xODUxOTsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFNNQUxMUFJJTlRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEEgc2VyaWVzIG9mIGNsYXNzZXMgZm9yIHNldHRpbmcgdGlueSB0eXBlOyBmb3IgdXNlIGluIHNtYWxscHJpbnQgZXRjLlxuICovXG4uc21hbGxwcmludCxcbi5taWxsaSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY2NjY3OyB9XG5cbi5taWNybyB7XG4gIGZvbnQtc2l6ZTogOHB4O1xuICBmb250LXNpemU6IDAuNTMzMzNyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjU7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRRVU9URVNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIElmIEVuZ2xpc2ggcXVvdGVzIGFyZSBzZXQgaW4gYF92YXJzLnNjc3NgLCBkZWZpbmUgdGhlbSBoZXJlLlxuICovXG4vKipcbiAqIEJpZyB1cCBAYm9ibGV0OiBodG1sNWRvY3Rvci5jb20vYmxvY2txdW90ZS1xLWNpdGVcbiAqL1xuLyoqXG4gKiBJbmxpbmUgcXVvdGVzLlxuICovXG5xIHtcbiAgcXVvdGVzOiBcIuKAmFwiIFwi4oCZXCIgXCJcXFxcMjAxQyBcIiBcIlxcXFwyMDFEIFwiOyB9XG4gIHE6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAxOFwiO1xuICAgIGNvbnRlbnQ6IG9wZW4tcXVvdGU7IH1cbiAgcTphZnRlciB7XG4gICAgY29udGVudDogXCJcXDIwMTlcIjtcbiAgICBjb250ZW50OiBjbG9zZS1xdW90ZTsgfVxuICBxIHE6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAxQ1wiO1xuICAgIGNvbnRlbnQ6IG9wZW4tcXVvdGU7IH1cbiAgcSBxOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMjAxRFwiO1xuICAgIGNvbnRlbnQ6IGNsb3NlLXF1b3RlOyB9XG5cbmJsb2NrcXVvdGUge1xuICBxdW90ZXM6IFwiXFxcXDIwMUMgXCIgXCJcXFxcMjAxRCBcIjsgfVxuICBibG9ja3F1b3RlIHA6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcXFwyMDFDIFwiO1xuICAgIGNvbnRlbnQ6IG9wZW4tcXVvdGU7IH1cbiAgYmxvY2txdW90ZSBwOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGNvbnRlbnQ6IG5vLWNsb3NlLXF1b3RlOyB9XG4gIGJsb2NrcXVvdGUgcDpsYXN0LW9mLXR5cGU6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFxcXDIwMUQgXCI7XG4gICAgY29udGVudDogY2xvc2UtcXVvdGU7IH1cbiAgYmxvY2txdW90ZSBxOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMThcIjtcbiAgICBjb250ZW50OiBvcGVuLXF1b3RlOyB9XG4gIGJsb2NrcXVvdGUgcTphZnRlciB7XG4gICAgY29udGVudDogXCJcXDIwMTlcIjtcbiAgICBjb250ZW50OiBjbG9zZS1xdW90ZTsgfVxuXG4vKipcbiAqXG4gICA8YmxvY2txdW90ZT5cbiAgICAgICA8cD5JbnNhbml0eTogZG9pbmcgdGhlIHNhbWUgdGhpbmcgb3ZlciBhbmQgb3ZlciBhZ2FpbiBhbmQgZXhwZWN0aW5nXG4gICAgICAgZGlmZmVyZW50IHJlc3VsdHMuPC9wPlxuICAgICAgIDxiIGNsYXNzPXNvdXJjZT5BbGJlcnQgRWluc3RlaW48L2I+XG4gICA8L2Jsb2NrcXVvdGU+XG4gKlxuICovXG5ibG9ja3F1b3RlIHtcbiAgLyoqXG4gICAgICogLjRlbSBpcyByb3VnaGx5IGVxdWFsIHRvIHRoZSB3aWR0aCBvZiB0aGUgb3BlbmluZyDigJwgdGhhdCB3ZSB3aXNoIHRvIGhhbmcuXG4gICAgICovXG4gIHRleHQtaW5kZW50OiAtMC40MWVtOyB9XG4gIGJsb2NrcXVvdGUgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cblxuLnNvdXJjZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWluZGVudDogMDsgfVxuICAuc291cmNlOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXDIwMTRcIjsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJENPREVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFVzZSBhbiBleHBsaWNpdCBmb250IHN0YWNrIHRvIGVuc3VyZSBicm93c2VycyByZW5kZXIgY29ycmVjdCBgbGluZS1oZWlnaHRgLlxuICovXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bzsgfVxuXG5wcmUgbWFyayB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZDtcbiAgY29sb3I6IGluaGVyaXQ7IH1cblxuLyoqXG4gKiBBZGQgY29tbWVudHMgdG8geW91ciBjb2RlIGV4YW1wbGVzLCBlLmcuOlxuICpcbiAgIDxjb2RlPiZsdDsvZGl2Jmd0OzxzcGFuIGNsYXNzPWNvZGUtY29tbWVudD4mbHQ7IS0tIC93cmFwcGVyIC0tJmd0Ozwvc3Bhbj48L2NvZGU+XG4gKlxuICovXG4uY29kZS1jb21tZW50IHtcbiAgLyoqXG4gICAgICogT3ZlcnJpZGUgdGhpcyBzZXR0aW5nIGluIHlvdXIgdGhlbWUgc3R5bGVzaGVldFxuICAgICAqL1xuICBvcGFjaXR5OiAwLjc1O1xuICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NzUpOyB9XG5cbi8qKlxuICogWW91IGNhbiBhZGQgbGluZSBudW1iZXJzIHRvIHlvdXIgY29kZSBleGFtcGxlcyBidXQgYmUgd2FybmVkLCBpdCByZXF1aXJlc1xuICogc29tZSBwcmV0dHkgZnVua3kgbG9va2luZyBtYXJrdXAsIGUuZy46XG4gKlxuICAgPG9sIGNsYXNzPWxpbmUtbnVtYmVycz5cbiAgICAgICA8bGk+PGNvZGU+Lm5hdns8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgIGxpc3Qtc3R5bGU6bm9uZTs8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgIG1hcmdpbi1sZWZ0OjA7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPn08L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgIC5uYXYgPiBsaSw8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgICAgICAubmF2ID4gbGkgPiBhezwvY29kZT48L2xpPlxuICAgICAgIDxsaT48Y29kZT4gICAgICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jazs8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgICAgICAgICAqZGlzcGxheTppbmxpbmUtYmxvY2s7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICAgICAgICAgIHpvb206MTs8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgICAgICB9PC9jb2RlPjwvbGk+XG4gICA8L29sPlxuICpcbiAqIDEuIE1ha2UgdGhlIGxpc3QgbG9vayBsaWtlIGNvZGUuXG4gKiAyLiBHaXZlIHRoZSBsaXN0IGZsdXNoIG51bWJlcnMgd2l0aCBhIGxlYWRpbmcgemVyby5cbiAqIDMuIE1ha2Ugc3VyZSBsaW5lcyBvZiBjb2RlIGRvbuKAmXQgd3JhcC5cbiAqIDQuIEdpdmUgdGhlIGNvZGUgZm9ybSBieSBmb3JjaW5nIHRoZSBgY29kZWAgdG8gaG9ub3VyIHdoaXRlLXNwYWNlLlxuICovXG4ubGluZS1udW1iZXJzIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2VyaWY7XG4gIC8qIFsxXSAqL1xuICBsaXN0LXN0eWxlOiBkZWNpbWFsLWxlYWRpbmctemVybyBpbnNpZGU7XG4gIC8qIFsyXSAqL1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAvKiBbM10gKi9cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC8qIFszXSAqL1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4ubGluZS1udW1iZXJzIGNvZGUge1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICAvKiBbNF0gKi8gfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJElNQUdFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL3lNdHVyXG4gKi9cbi8qKlxuICogRmx1aWQgaW1hZ2VzLlxuICovXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7IH1cblxuLyoqXG4gKiBOb24tZmx1aWQgaW1hZ2VzIGlmIHlvdSBzcGVjaWZ5IGB3aWR0aGAgYW5kL29yIGBoZWlnaHRgIGF0dHJpYnV0ZXMuXG4gKi9cbmltZ1t3aWR0aF0sXG5pbWdbaGVpZ2h0XSB7XG4gIG1heC13aWR0aDogbm9uZTsgfVxuXG4vKipcbiAqIFJvdW5kZWQgaW1hZ2VzLlxuICovXG4uaW1nLS1yb3VuZCB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDsgfVxuXG4vKipcbiAqIEltYWdlIHBsYWNlbWVudCB2YXJpYXRpb25zLlxuICovXG4uaW1nLS1yaWdodCB7XG4gIGZsb2F0OiByaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7IH1cblxuLmltZy0tbGVmdCB7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7IH1cblxuLmltZy0tY2VudGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87IH1cblxuLyoqXG4gKiBLZWVwIHlvdXIgaW1hZ2VzIG9uIHlvdXIgYmFzZWxpbmUuXG4gKlxuICogUGxlYXNlIG5vdGUsIHRoZXNlIHdpbGwgbm90IHdvcmsgdG9vIG5pY2VseSB3aXRoIGZsdWlkIGltYWdlcyBhbmQgd2lsbFxuICogZGlzdG9ydCB3aGVuIHJlc2l6ZWQgYmVsb3cgYSBjZXJ0YWluIHdpZHRoLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG4uaW1nLS1zaG9ydCB7XG4gIGhlaWdodDogNzVweDsgfVxuXG4uaW1nLS1tZWRpdW0ge1xuICBoZWlnaHQ6IDE1MHB4OyB9XG5cbi5pbWctLXRhbGwge1xuICBoZWlnaHQ6IDIyNXB4OyB9XG5cbi8qKlxuICogSW1hZ2VzIGluIGBmaWd1cmVgIGVsZW1lbnRzLlxuICovXG5maWd1cmUgPiBpbWcge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJExJU1RTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBSZW1vdmUgdmVydGljYWwgc3BhY2luZyBmcm9tIG5lc3RlZCBsaXN0cy5cbiAqL1xubGkgPiB1bCxcbmxpID4gb2wge1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qKlxuICogSGF2ZSBhIG51bWJlcmVkIGB1bGAgd2l0aG91dCB0aGUgc2VtYW50aWNzIGltcGxpZWQgYnkgdXNpbmcgYW4gYG9sYC5cbiAqL1xuLyp1bCovXG4ubnVtYmVyZWQtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDsgfVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFRBQkxFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2UgaGF2ZSBhIGxvdCBhdCBvdXIgZGlzcG9zYWwgZm9yIG1ha2luZyB2ZXJ5IGNvbXBsZXggdGFibGUgY29uc3RydWN0cywgZS5nLjpcbiAqXG4gICA8dGFibGUgY2xhc3M9XCJ0YWJsZS0tYm9yZGVyZWQgIHRhYmxlLS1zdHJpcGVkICB0YWJsZS0tZGF0YVwiPlxuICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICAgPGNvbCBjbGFzcz10MTA+XG4gICAgICAgICAgIDxjb2wgY2xhc3M9dDEwPlxuICAgICAgICAgICA8Y29sIGNsYXNzPXQxMD5cbiAgICAgICAgICAgPGNvbD5cbiAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49Mz5Gb288L3RoPlxuICAgICAgICAgICAgICAgPHRoPkJhcjwvdGg+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0aD5Mb3JlbTwvdGg+XG4gICAgICAgICAgICAgICA8dGg+SXBzdW08L3RoPlxuICAgICAgICAgICAgICAgPHRoIGNsYXNzPW51bWVyaWNhbD5Eb2xvcjwvdGg+XG4gICAgICAgICAgICAgICA8dGg+U2l0PC90aD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgICA8L3RoZWFkPlxuICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49Mz5TaXQ8L3RoPlxuICAgICAgICAgICAgICAgPHRkPkRvbG9yPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1udW1lcmljYWw+MDMuNzg4PC90ZD5cbiAgICAgICAgICAgICAgIDx0ZD5Mb3JlbTwvdGQ+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0ZD5Eb2xvcjwvdGQ+XG4gICAgICAgICAgICAgICA8dGQgY2xhc3M9bnVtZXJpY2FsPjMyLjIxMDwvdGQ+XG4gICAgICAgICAgICAgICA8dGQ+TG9yZW08L3RkPlxuICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICA8dGQ+RG9sb3I8L3RkPlxuICAgICAgICAgICAgICAgPHRkIGNsYXNzPW51bWVyaWNhbD40Ny43OTc8L3RkPlxuICAgICAgICAgICAgICAgPHRkPkxvcmVtPC90ZD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49Mj5TaXQ8L3RoPlxuICAgICAgICAgICAgICAgPHRkPkRvbG9yPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1udW1lcmljYWw+MDkuNjQwPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZD5Mb3JlbTwvdGQ+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0ZD5Eb2xvcjwvdGQ+XG4gICAgICAgICAgICAgICA8dGQgY2xhc3M9bnVtZXJpY2FsPjEyLjExNzwvdGQ+XG4gICAgICAgICAgICAgICA8dGQ+TG9yZW08L3RkPlxuICAgICAgICAgICA8L3RyPlxuICAgICAgIDwvdGJvZHk+XG4gICA8L3RhYmxlPlxuICpcbiAqL1xudGFibGUge1xuICB3aWR0aDogMTAwJTsgfVxuXG50aCxcbnRkIHtcbiAgcGFkZGluZzogMy43NXB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogNy41cHg7IH0gfVxuXG4vKipcbiAqIENlbGwgYWxpZ25tZW50c1xuICovXG5bY29sc3Bhbl0ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuW2NvbHNwYW49XCIxXCJdIHtcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG5bcm93c3Bhbl0ge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbltyb3dzcGFuPVwiMVwiXSB7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cblxuLm51bWVyaWNhbCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbi8qKlxuICogSW4gdGhlIEhUTUwgYWJvdmUgd2Ugc2VlIHNldmVyYWwgYGNvbGAgZWxlbWVudHMgd2l0aCBjbGFzc2VzIHdob3NlIG51bWJlcnNcbiAqIHJlcHJlc2VudCBhIHBlcmNlbnRhZ2Ugd2lkdGggZm9yIHRoYXQgY29sdW1uLiBXZSBsZWF2ZSBvbmUgY29sdW1uIGZyZWUgb2YgYVxuICogY2xhc3Mgc28gdGhhdCBjb2x1bW4gY2FuIHNvYWsgdXAgdGhlIGVmZmVjdHMgb2YgYW55IGFjY2lkZW50YWwgYnJlYWthZ2UgaW5cbiAqIHRoZSB0YWJsZS5cbiAqL1xuLnQ1IHtcbiAgd2lkdGg6IDUlOyB9XG5cbi50MTAge1xuICB3aWR0aDogMTAlOyB9XG5cbi50MTIge1xuICB3aWR0aDogMTIuNSU7IH1cblxuLyogMS84ICovXG4udDE1IHtcbiAgd2lkdGg6IDE1JTsgfVxuXG4udDIwIHtcbiAgd2lkdGg6IDIwJTsgfVxuXG4udDI1IHtcbiAgd2lkdGg6IDI1JTsgfVxuXG4vKiAxLzQgKi9cbi50MzAge1xuICB3aWR0aDogMzAlOyB9XG5cbi50MzMge1xuICB3aWR0aDogMzMuMzMzJTsgfVxuXG4vKiAxLzMgKi9cbi50MzUge1xuICB3aWR0aDogMzUlOyB9XG5cbi50Mzcge1xuICB3aWR0aDogMzcuNSU7IH1cblxuLyogMy84ICovXG4udDQwIHtcbiAgd2lkdGg6IDQwJTsgfVxuXG4udDQ1IHtcbiAgd2lkdGg6IDQ1JTsgfVxuXG4udDUwIHtcbiAgd2lkdGg6IDUwJTsgfVxuXG4vKiAxLzIgKi9cbi50NTUge1xuICB3aWR0aDogNTUlOyB9XG5cbi50NjAge1xuICB3aWR0aDogNjAlOyB9XG5cbi50NjIge1xuICB3aWR0aDogNjIuNSU7IH1cblxuLyogNS84ICovXG4udDY1IHtcbiAgd2lkdGg6IDY1JTsgfVxuXG4udDY2IHtcbiAgd2lkdGg6IDY2LjY2NiU7IH1cblxuLyogMi8zICovXG4udDcwIHtcbiAgd2lkdGg6IDcwJTsgfVxuXG4udDc1IHtcbiAgd2lkdGg6IDc1JTsgfVxuXG4vKiAzLzQqL1xuLnQ4MCB7XG4gIHdpZHRoOiA4MCU7IH1cblxuLnQ4NSB7XG4gIHdpZHRoOiA4NSU7IH1cblxuLnQ4NyB7XG4gIHdpZHRoOiA4Ny41JTsgfVxuXG4vKiA3LzggKi9cbi50OTAge1xuICB3aWR0aDogOTAlOyB9XG5cbi50OTUge1xuICB3aWR0aDogOTUlOyB9XG5cbi8qKlxuICogQm9yZGVyZWQgdGFibGVzXG4gKi9cbi50YWJsZS0tYm9yZGVyZWQgdGgsXG4udGFibGUtLWJvcmRlcmVkIHRkIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgfVxuICAudGFibGUtLWJvcmRlcmVkIHRoOmVtcHR5LFxuICAudGFibGUtLWJvcmRlcmVkIHRkOmVtcHR5IHtcbiAgICBib3JkZXI6IG5vbmU7IH1cblxuLnRhYmxlLS1ib3JkZXJlZCB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoIHtcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4OyB9XG5cbi50YWJsZS0tYm9yZGVyZWQgdGJvZHkgdHIgdGg6bGFzdC1vZi10eXBlIHtcbiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAycHg7IH1cblxuLyoqXG4gKiBTdHJpcGVkIHRhYmxlc1xuICovXG4udGFibGUtLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmM7XG4gIC8qIE92ZXJyaWRlIHRoaXMgY29sb3IgaW4geW91ciB0aGVtZSBzdHlsZXNoZWV0ICovIH1cblxuLyoqXG4gKiBEYXRhIHRhYmxlXG4gKi9cbi50YWJsZS0tZGF0YSB7XG4gIGZvbnQ6IDEycHgvMS41IHNhbnMtc2VyaWY7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRGT1JNU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICpcbiAqIERlbW86IGpzZmlkZGxlLm5ldC9pbnVpdGNzcy9NaEhIVVxuICpcbiAqL1xuZmllbGRzZXQge1xuICBwYWRkaW5nOiAxNXB4OyB9XG5cbi8qKlxuICogVGV4dCBpbnB1dHNcbiAqXG4gKiBJbnN0ZWFkIG9mIGEgYFt0eXBlXWAgc2VsZWN0b3IgZm9yIGVhY2gga2luZCBvZiBmb3JtIGlucHV0LCB3ZSBqdXN0IHVzZSBhXG4gKiBjbGFzcyB0byB0YXJnZXQgYW55L2V2ZXJ5IG9uZSwgZS5nLjpcbiAgIDxpbnB1dCB0eXBlPXRleHQgY2xhc3M9dGV4dC1pbnB1dD5cbiAgIDxpbnB1dCB0eXBlPWVtYWlsIGNsYXNzPXRleHQtaW5wdXQ+XG4gICA8aW5wdXQgdHlwZT1wYXNzd29yZCBjbGFzcz10ZXh0LWlucHV0PlxuICpcbiAqL1xuLnRleHQtaW5wdXQsXG50ZXh0YXJlYSB7XG4gIC8qKlxuICAgICAqIFN0eWxlIHRoZXNlIHZpYSB5b3VyIHRoZW1lIHN0eWxlc2hlZXQuXG4gICAgICovIH1cblxuLyoqXG4gKiBHcm91cCBzZXRzIG9mIGZvcm0gZmllbGRzIGluIGEgbGlzdCwgZS5nLjpcbiAqXG4gICA8dWwgY2xhc3M9Zm9ybS1maWVsZHM+XG4gICAgICAgPGxpPlxuICAgICAgICAgICA8bGFiZWwgLz5cbiAgICAgICAgICAgPGlucHV0IC8+XG4gICAgICAgPC9saT5cbiAgICAgICA8bGk+XG4gICAgICAgICAgIDxsYWJlbCAvPlxuICAgICAgICAgICA8c2VsZWN0IC8+XG4gICAgICAgPC9saT5cbiAgICAgICA8bGk+XG4gICAgICAgICAgIDxsYWJlbCAvPlxuICAgICAgICAgICA8aW5wdXQgLz5cbiAgICAgICA8L2xpPlxuICAgPC91bD5cbiAqXG4gKi9cbi5mb3JtLWZpZWxkcyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbjogMDsgfVxuXG4uZm9ybS1maWVsZHMgPiBsaTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4vKipcbiAqIExhYmVsc1xuICpcbiAqIERlZmluZSBhIGAubGFiZWxgIGNsYXNzIGFzIHdlbGwgYXMgYSBgbGFiZWxgIGVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIGFwcGx5XG4gKiBsYWJlbC1saWtlIHN0eWxpbmcgdG8gbWV0YS1sYWJlbHMgZm9yIGdyb3VwcyBvZiBvcHRpb25zIHdoZXJlIGEgYGxhYmVsYFxuICogZWxlbWVudCBpcyBub3Qgc3VpdGFibGUsIGUuZy46XG4gKlxuICAgPGxpPlxuICAgICAgIDxzcGFuIGNsYXNzPWxhYmVsPlNlbGVjdCBhbiBvcHRpb24gYmVsb3c6PC9zcGFuPlxuICAgICAgIDx1bCBjbGFzcz1cIm11bHRpLWxpc3QgIGZvdXItY29sc1wiPlxuICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICA8aW5wdXQgLz4gPGxhYmVsIC8+XG4gICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgIDxpbnB1dCAvPiA8bGFiZWwgLz5cbiAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgPGlucHV0IC8+IDxsYWJlbCAvPlxuICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICA8aW5wdXQgLz4gPGxhYmVsIC8+XG4gICAgICAgICAgIDwvbGk+XG4gICAgICAgPC91bD5cbiAgIDwvbGk+XG4gKlxuICovXG5sYWJlbCxcbi5sYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuICAgICAqIEV4dHJhIGhlbHAgdGV4dCBpbiBgbGFiZWxgcywgZS5nLjpcbiAgICAgKlxuICAgICAgIDxsYWJlbD5DYXJkIG51bWJlciA8c21hbGwgY2xhc3M9YWRkaXRpb25hbD5ObyBzcGFjZXM8L3NtYWxsPjwvbGFiZWw+XG4gICAgICpcbiAgICAgKi9cbi5hZGRpdGlvbmFsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7IH1cblxuLypcbiAqIEdyb3VwcyBvZiBjaGVja2JveGVzIGFuZCByYWRpb3MsIGUuZy46XG4gKlxuICAgPGxpPlxuICAgICAgIDx1bCBjbGFzcz1jaGVjay1saXN0PlxuICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICA8aW5wdXQgLz4gPGxhYmVsIC8+XG4gICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgIDxpbnB1dCAvPiA8bGFiZWwgLz5cbiAgICAgICAgICAgPC9saT5cbiAgICAgICA8L3VsPlxuICAgPC9saT5cbiAqXG4gKi9cbi5jaGVjay1saXN0IHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qXG4gICAgICogTGFiZWxzIGluIGNoZWNrLWxpc3RzXG4gICAgICovXG4uY2hlY2stbGFiZWwsXG4uY2hlY2stbGlzdCBsYWJlbCxcbi5jaGVjay1saXN0IC5sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4vKipcbiAqIFNwb2tlbiBmb3JtcyBhcmUgZm9yIGZvcm1zIHRoYXQgcmVhZCBsaWtlIHNwb2tlbiB3b3JkLCBlLmcuOlxuICpcbiAgIDxsaSBjbGFzcz1zcG9rZW4tZm9ybT5cbiAgICAgICBIZWxsbywgbXkgPGxhYmVsIGZvcj1zcG9rZW4tbmFtZT5uYW1lPC9sYWJlbD4gaXNcbiAgICAgICA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPXRleHQtaW5wdXQgaWQ9c3Bva2VuLW5hbWU+LiBNeSBob21lXG4gICAgICAgPGxhYmVsIGZvcj1jb3VudHJ5PmNvdW50cnk8L2xhYmVsPiBpc1xuICAgICAgIDxzZWxlY3QgaWQ9Y291bnRyeT5cbiAgICAgICAgICAgPG9wdGlvbj5VSzwvb3B0aW9uPlxuICAgICAgICAgICA8b3B0aW9uPlVTPC9vcHRpb24+XG4gICAgICAgICAgIDxvcHRpb24+T3RoZXI8L29wdGlvbj5cbiAgICAgICA8L3NlbGVjdD5cbiAgIDwvbGk+XG4gKlxuICovXG4uc3Bva2VuLWZvcm0gbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQ6IGluaGVyaXQ7IH1cblxuLyoqXG4gKiBFeHRyYSBoZWxwIHRleHQgZGlzcGxheWVkIGFmdGVyIGEgZmllbGQgd2hlbiB0aGF0IGZpZWxkIGlzIGluIGZvY3VzLCBlLmcuOlxuICpcbiAgIDxsYWJlbCBmb3I9ZW1haWw+RW1haWw6PC9sYWJlbD5cbiAgIDxpbnB1dCB0eXBlPWVtYWlsIGNsYXNzPXRleHQtaW5wdXQgaWQ9ZW1haWw+XG4gICA8c21hbGwgY2xhc3M9ZXh0cmEtaGVscD4uZWR1IGVtYWlscyBvbmx5PC9zbWFsbD5cbiAqXG4gKiBXZSBsZWF2ZSB0aGUgaGVscCB0ZXh0IGluIHRoZSBkb2N1bWVudCBmbG93IGFuZCBtZXJlbHkgc2V0IGl0IHRvXG4gKiBgdmlzaWJpbGl0eTpoaWRkZW47YC4gVGhpcyBtZWFucyB0aGF0IGl0IHdvbuKAmXQgaW50ZXJmZXJlIHdpdGggYW55dGhpbmcgb25jZVxuICogaXQgcmVhcHBlYXJzLlxuICpcbiAqL1xuLypzbWFsbCovXG4uZXh0cmEtaGVscCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG5cbi50ZXh0LWlucHV0OmFjdGl2ZSArIC5leHRyYS1oZWxwLFxuLnRleHQtaW5wdXQ6Zm9jdXMgKyAuZXh0cmEtaGVscCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7IH1cblxuLyoqXG4gKiBPYmplY3RzIGFuZCBhYnN0cmFjdGlvbnNcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRHUklEU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRmx1aWQgYW5kIG5lc3RhYmxlIGdyaWQgc3lzdGVtLCBlLmcuOlxuICpcbiAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XG5cbiAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXRoaXJkXCI+XG4gICAgICAgICAgIDxwPk9uZSB0aGlyZCBncmlkPC9wPlxuICAgICAgIDwvZGl2PjwhLS1cblxuICAgIC0tPjxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB0d28tdGhpcmRzXCI+XG4gICAgICAgICAgIDxwPlR3byB0aGlyZHMgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLWhhbGZcIj5cbiAgICAgICAgICAgPHA+T25lIGhhbGYgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXF1YXJ0ZXJcIj5cbiAgICAgICAgICAgPHA+T25lIHF1YXJ0ZXIgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXF1YXJ0ZXJcIj5cbiAgICAgICAgICAgPHA+T25lIHF1YXJ0ZXIgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj5cblxuICAgPC9kaXY+XG4gKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL0NMWVVDXG4gKlxuICovXG4vKipcbiAqIEdyaWQgd3JhcHBlclxuICovXG4uZ3JpZCB7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4vKipcbiAgICAgKiBWZXJ5IGluZnJlcXVlbnRseSBvY2N1cmluZyBncmlkIHdyYXBwZXJzIGFzIGNoaWxkcmVuIG9mIGdyaWQgd3JhcHBlcnMuXG4gICAgICovXG4uZ3JpZCA+IC5ncmlkIHtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cblxuLyoqXG4gICAgICogR3JpZFxuICAgICAqL1xuLmdyaWRfX2l0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICROQVZcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIE5hdiBhYnN0cmFjdGlvbiBhcyBwZXI6IGNzc3dpemFyZHJ5LmNvbS8yMDExLzA5L3RoZS1uYXYtYWJzdHJhY3Rpb25cbiAqIFdoZW4gdXNlZCBvbiBhbiBgb2xgIG9yIGB1bGAsIHRoaXMgY2xhc3MgdGhyb3dzIHRoZSBsaXN0IGludG8gaG9yaXpvbnRhbCBtb2RlXG4gKiBlLmcuOlxuICpcbiAgIDx1bCBjbGFzcz1uYXY+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Ib21lPC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5BYm91dDwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+UG9ydGZvbGlvPC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Db250YWN0PC9hPjwvbGk+XG4gICA8L3VsPlxuICpcbiAqIERlbW86IGpzZmlkZGxlLm5ldC9pbnVpdGNzcy9WbnBoNFxuICpcbiAqL1xuLm5hdiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG4gIC5uYXYgPiBsaSxcbiAgLm5hdiA+IGxpID4gYSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gICAgem9vbTogMTsgfVxuXG4vKipcbiAqIGAubmF2LS1zdGFja2VkYCBleHRlbmRzIGAubmF2YCBhbmQgdGhyb3dzIHRoZSBsaXN0IGludG8gdmVydGljYWwgbW9kZSwgZS5nLjpcbiAqXG4gICA8dWwgY2xhc3M9XCJuYXYgIG5hdi0tc3RhY2tlZFwiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKi9cbi5uYXYtLXN0YWNrZWQgPiBsaSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgfVxuICAubmF2LS1zdGFja2VkID4gbGkgPiBhIHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIGAubmF2LS1iYW5uZXJgIGV4dGVuZHMgYC5uYXZgIGFuZCBjZW50cmVzIHRoZSBsaXN0LCBlLmcuOlxuICpcbiAgIDx1bCBjbGFzcz1cIm5hdiAgbmF2LS1iYW5uZXJcIj5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkhvbWU8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkFib3V0PC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Qb3J0Zm9saW88L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkNvbnRhY3Q8L2E+PC9saT5cbiAgIDwvdWw+XG4gKlxuICovXG4ubmF2LS1iYW5uZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLyoqXG4gKiBHaXZlIG5hdiBsaW5rcyBhIGJpZywgYmxvY2t5IGhpdCBhcmVhLiBFeHRlbmRzIGAubmF2YCwgZS5nLjpcbiAqXG4gICA8dWwgY2xhc3M9XCJuYXYgIG5hdi0tYmxvY2tcIj5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkhvbWU8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkFib3V0PC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Qb3J0Zm9saW88L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPkNvbnRhY3Q8L2E+PC9saT5cbiAgIDwvdWw+XG4gKlxuICovXG4ubmF2LS1ibG9jayB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAvKipcbiAgICAgKiBSZW1vdmUgd2hpdGVzcGFjZSBjYXVzZWQgYnkgYGlubGluZS1ibG9ja2AuXG4gICAgICovXG4gIGxldHRlci1zcGFjaW5nOiAtMC4zMWVtO1xuICB3b3JkLXNwYWNpbmc6IC0wLjQzZW07XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgLm5hdi0tYmxvY2sgPiBsaSB7XG4gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDsgfVxuICAgIC5uYXYtLWJsb2NrID4gbGkgPiBhIHtcbiAgICAgIHBhZGRpbmc6IDcuNXB4OyB9XG5cbi8qKlxuICogRm9yY2UgYSBuYXYgdG8gb2NjdXB5IDEwMCUgb2YgdGhlIGF2YWlsYWJsZSB3aWR0aCBvZiBpdHMgcGFyZW50LiBFeHRlbmRzXG4gKiBgLm5hdmAsIGUuZy46XG4gKlxuICAgPHVsIGNsYXNzPVwibmF2ICBuYXYtLWZpdFwiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKiBUaGFua3MgdG8gQHBpbXBsIGZvciB0aGlzIGlkZWEhXG4gKi9cbi5uYXYtLWZpdCB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTsgfVxuICAubmF2LS1maXQgPiBsaSB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDsgfVxuICAgIC5uYXYtLWZpdCA+IGxpID4gYSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIE1ha2UgYSBsaXN0IG9mIGtleXdvcmRzLiBFeHRlbmRzIGAubmF2YCwgZS5nLjpcbiAqXG4gICBgPHVsIGNsYXNzPVwibmF2ICBuYXYtLWtleXdvcmRzPmBcbiAqXG4gKi9cbi5uYXYtLWtleXdvcmRzID4gbGk6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcMDAyQ1wiIFwiXFwwMEEwXCI7IH1cblxuLm5hdi0ta2V5d29yZHMgPiBsaTpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKipcbiAqIFN0eWxlIHRydW1wczsgaGVscGVyIGFuZCBicmFuZCBjbGFzc2VzXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkV0lEVEhTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQuIFRoZXNlIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3RoZXJcbiAqIG9iamVjdHMgYW5kIGFic3RyYWN0aW9ucyBmb3VuZCBpbiBpbnVpdC5jc3MsIG1vc3QgY29tbW9ubHkgdGhlIGdyaWQgc3lzdGVtXG4gKiBhbmQgZmF1eCBmbGV4Ym94LlxuICpcbiAqIFdlIGhhdmUgYSBtaXhpbiB0byBnZW5lcmF0ZSBvdXIgd2lkdGhzIGFuZCB0aGVpciBicmVha3BvaW50LXNwZWNpZmljXG4gKiB2YXJpYXRpb25zLlxuICovXG4vKipcbiAgICAqIFdob2xlXG4gICAgKi9cbi5vbmUtd2hvbGUge1xuICB3aWR0aDogMTAwJTsgfVxuXG4vKipcbiAgICAqIEhhbHZlc1xuICAgICovXG4ub25lLWhhbGYsIC50d28tcXVhcnRlcnMsIC50aHJlZS1zaXh0aHMsIC5mb3VyLWVpZ2h0aHMsIC5maXZlLXRlbnRocywgLnNpeC10d2VsZnRocyB7XG4gIHdpZHRoOiA1MCU7IH1cblxuLyoqXG4gICAgKiBUaGlyZHNcbiAgICAqL1xuLm9uZS10aGlyZCwgLnR3by1zaXh0aHMsIC5mb3VyLXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDMzLjMzMyU7IH1cblxuLnR3by10aGlyZHMsIC5mb3VyLXNpeHRocywgLmVpZ2h0LXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDY2LjY2NiU7IH1cblxuLyoqXG4gICAgKiBRdWFydGVyc1xuICAgICovXG4ub25lLXF1YXJ0ZXIsIC50d28tZWlnaHRocywgLnRocmVlLXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDI1JTsgfVxuXG4udGhyZWUtcXVhcnRlcnMsIC5zaXgtZWlnaHRocywgLm5pbmUtdHdlbGZ0aHMge1xuICB3aWR0aDogNzUlOyB9XG5cbi8qKlxuICAgICogRmlmdGhzXG4gICAgKi9cbi5vbmUtZmlmdGgsIC50d28tdGVudGhzIHtcbiAgd2lkdGg6IDIwJTsgfVxuXG4udHdvLWZpZnRocywgLmZvdXItdGVudGhzIHtcbiAgd2lkdGg6IDQwJTsgfVxuXG4udGhyZWUtZmlmdGhzLCAuc2l4LXRlbnRocyB7XG4gIHdpZHRoOiA2MCU7IH1cblxuLmZvdXItZmlmdGhzLCAuZWlnaHQtdGVudGhzIHtcbiAgd2lkdGg6IDgwJTsgfVxuXG4vKipcbiAgICAqIFNpeHRoc1xuICAgICovXG4ub25lLXNpeHRoLCAudHdvLXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDE2LjY2NiU7IH1cblxuLmZpdmUtc2l4dGhzLCAudGVuLXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDgzLjMzMyU7IH1cblxuLyoqXG4gICAgKiBFaWdodGhzXG4gICAgKi9cbi5vbmUtZWlnaHRoIHtcbiAgd2lkdGg6IDEyLjUlOyB9XG5cbi50aHJlZS1laWdodGhzIHtcbiAgd2lkdGg6IDM3LjUlOyB9XG5cbi5maXZlLWVpZ2h0aHMge1xuICB3aWR0aDogNjIuNSU7IH1cblxuLnNldmVuLWVpZ2h0aHMge1xuICB3aWR0aDogODcuNSU7IH1cblxuLyoqXG4gICAgKiBUZW50aHNcbiAgICAqL1xuLm9uZS10ZW50aCB7XG4gIHdpZHRoOiAxMCU7IH1cblxuLnRocmVlLXRlbnRocyB7XG4gIHdpZHRoOiAzMCU7IH1cblxuLnNldmVuLXRlbnRocyB7XG4gIHdpZHRoOiA3MCU7IH1cblxuLm5pbmUtdGVudGhzIHtcbiAgd2lkdGg6IDkwJTsgfVxuXG4vKipcbiAgICAqIFR3ZWxmdGhzXG4gICAgKi9cbi5vbmUtdHdlbGZ0aCB7XG4gIHdpZHRoOiA4LjMzMyU7IH1cblxuLmZpdmUtdHdlbGZ0aHMge1xuICB3aWR0aDogNDEuNjY2JTsgfVxuXG4uc2V2ZW4tdHdlbGZ0aHMge1xuICB3aWR0aDogNTguMzMzJTsgfVxuXG4uZWxldmVuLXR3ZWxmdGhzIHtcbiAgd2lkdGg6IDkxLjY2NiU7IH1cblxuLyoqXG4gKiBJZiB5b3UgaGF2ZSBzZXQgYCRyZXNwb25zaXZlYCB0byDigJh0cnVl4oCZIGluIGBfdmFycy5zY3NzYCB0aGVuIHlvdSBub3cgaGF2ZVxuICogYWNjZXNzIHRvIHRoZXNlIGNsYXNzZXMuIFlvdSBjYW4gZGVmaW5lIGF0IHdoaWNoIGJyZWFrcG9pbnQgeW914oCZZCBsaWtlIGFuXG4gKiBlbGVtZW50IHRvIGJlIGEgY2VydGFpbiBzaXplLCBlLmcuOlxuICpcbiAqIGA8ZGl2IGNsYXNzPVwiZyAgb25lLXF1YXJ0ZXIgIGxhcC1vbmUtaGFsZiAgcGFsbS1vbmUtd2hvbGVcIj4gLi4uIDwvZGl2PmBcbiAqXG4gKiBUaGlzIHdvdWxkIGNyZWF0ZSBhIGBkaXZgIHRoYXQsIGF0IOKAmGRlc2t0b3DigJkgc2l6ZXMsIHRha2VzIHVwIGEgcXVhcnRlciBvZiB0aGVcbiAqIGhvcml6b250YWwgc3BhY2UsIGEgaGFsZiBvZiB0aGF0IHNwYWNlIGF0IOKAmHRhYmxldOKAmSBzaXplcywgYW5kIGdvZXMgZnVsbCB3aWR0aFxuICogYXQg4oCYbW9iaWxl4oCZIHNpemVzLlxuICpcbiAqIERlbW86IGpzZmlkZGxlLm5ldC9pbnVpdGNzcy9XUzRHZVxuICpcbiAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAvKipcbiAgICAqIFdob2xlXG4gICAgKi9cbiAgLnBhbG0tb25lLXdob2xlIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAvKipcbiAgICAqIEhhbHZlc1xuICAgICovXG4gIC5wYWxtLW9uZS1oYWxmLCAucGFsbS10d28tcXVhcnRlcnMsIC5wYWxtLXRocmVlLXNpeHRocywgLnBhbG0tZm91ci1laWdodGhzLCAucGFsbS1maXZlLXRlbnRocywgLnBhbG0tc2l4LXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNTAlOyB9XG4gIC8qKlxuICAgICogVGhpcmRzXG4gICAgKi9cbiAgLnBhbG0tb25lLXRoaXJkLCAucGFsbS10d28tc2l4dGhzLCAucGFsbS1mb3VyLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMzMuMzMzJTsgfVxuICAucGFsbS10d28tdGhpcmRzLCAucGFsbS1mb3VyLXNpeHRocywgLnBhbG0tZWlnaHQtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA2Ni42NjYlOyB9XG4gIC8qKlxuICAgICogUXVhcnRlcnNcbiAgICAqL1xuICAucGFsbS1vbmUtcXVhcnRlciwgLnBhbG0tdHdvLWVpZ2h0aHMsIC5wYWxtLXRocmVlLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMjUlOyB9XG4gIC5wYWxtLXRocmVlLXF1YXJ0ZXJzLCAucGFsbS1zaXgtZWlnaHRocywgLnBhbG0tbmluZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDc1JTsgfVxuICAvKipcbiAgICAqIEZpZnRoc1xuICAgICovXG4gIC5wYWxtLW9uZS1maWZ0aCwgLnBhbG0tdHdvLXRlbnRocyB7XG4gICAgd2lkdGg6IDIwJTsgfVxuICAucGFsbS10d28tZmlmdGhzLCAucGFsbS1mb3VyLXRlbnRocyB7XG4gICAgd2lkdGg6IDQwJTsgfVxuICAucGFsbS10aHJlZS1maWZ0aHMsIC5wYWxtLXNpeC10ZW50aHMge1xuICAgIHdpZHRoOiA2MCU7IH1cbiAgLnBhbG0tZm91ci1maWZ0aHMsIC5wYWxtLWVpZ2h0LXRlbnRocyB7XG4gICAgd2lkdGg6IDgwJTsgfVxuICAvKipcbiAgICAqIFNpeHRoc1xuICAgICovXG4gIC5wYWxtLW9uZS1zaXh0aCwgLnBhbG0tdHdvLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMTYuNjY2JTsgfVxuICAucGFsbS1maXZlLXNpeHRocywgLnBhbG0tdGVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogODMuMzMzJTsgfVxuICAvKipcbiAgICAqIEVpZ2h0aHNcbiAgICAqL1xuICAucGFsbS1vbmUtZWlnaHRoIHtcbiAgICB3aWR0aDogMTIuNSU7IH1cbiAgLnBhbG0tdGhyZWUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDM3LjUlOyB9XG4gIC5wYWxtLWZpdmUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDYyLjUlOyB9XG4gIC5wYWxtLXNldmVuLWVpZ2h0aHMge1xuICAgIHdpZHRoOiA4Ny41JTsgfVxuICAvKipcbiAgICAqIFRlbnRoc1xuICAgICovXG4gIC5wYWxtLW9uZS10ZW50aCB7XG4gICAgd2lkdGg6IDEwJTsgfVxuICAucGFsbS10aHJlZS10ZW50aHMge1xuICAgIHdpZHRoOiAzMCU7IH1cbiAgLnBhbG0tc2V2ZW4tdGVudGhzIHtcbiAgICB3aWR0aDogNzAlOyB9XG4gIC5wYWxtLW5pbmUtdGVudGhzIHtcbiAgICB3aWR0aDogOTAlOyB9XG4gIC8qKlxuICAgICogVHdlbGZ0aHNcbiAgICAqL1xuICAucGFsbS1vbmUtdHdlbGZ0aCB7XG4gICAgd2lkdGg6IDguMzMzJTsgfVxuICAucGFsbS1maXZlLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNDEuNjY2JTsgfVxuICAucGFsbS1zZXZlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDU4LjMzMyU7IH1cbiAgLnBhbG0tZWxldmVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogOTEuNjY2JTsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgLyoqXG4gICAgKiBXaG9sZVxuICAgICovXG4gIC5sYXAtb25lLXdob2xlIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAvKipcbiAgICAqIEhhbHZlc1xuICAgICovXG4gIC5sYXAtb25lLWhhbGYsIC5sYXAtdHdvLXF1YXJ0ZXJzLCAubGFwLXRocmVlLXNpeHRocywgLmxhcC1mb3VyLWVpZ2h0aHMsIC5sYXAtZml2ZS10ZW50aHMsIC5sYXAtc2l4LXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNTAlOyB9XG4gIC8qKlxuICAgICogVGhpcmRzXG4gICAgKi9cbiAgLmxhcC1vbmUtdGhpcmQsIC5sYXAtdHdvLXNpeHRocywgLmxhcC1mb3VyLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMzMuMzMzJTsgfVxuICAubGFwLXR3by10aGlyZHMsIC5sYXAtZm91ci1zaXh0aHMsIC5sYXAtZWlnaHQtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA2Ni42NjYlOyB9XG4gIC8qKlxuICAgICogUXVhcnRlcnNcbiAgICAqL1xuICAubGFwLW9uZS1xdWFydGVyLCAubGFwLXR3by1laWdodGhzLCAubGFwLXRocmVlLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMjUlOyB9XG4gIC5sYXAtdGhyZWUtcXVhcnRlcnMsIC5sYXAtc2l4LWVpZ2h0aHMsIC5sYXAtbmluZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDc1JTsgfVxuICAvKipcbiAgICAqIEZpZnRoc1xuICAgICovXG4gIC5sYXAtb25lLWZpZnRoLCAubGFwLXR3by10ZW50aHMge1xuICAgIHdpZHRoOiAyMCU7IH1cbiAgLmxhcC10d28tZmlmdGhzLCAubGFwLWZvdXItdGVudGhzIHtcbiAgICB3aWR0aDogNDAlOyB9XG4gIC5sYXAtdGhyZWUtZmlmdGhzLCAubGFwLXNpeC10ZW50aHMge1xuICAgIHdpZHRoOiA2MCU7IH1cbiAgLmxhcC1mb3VyLWZpZnRocywgLmxhcC1laWdodC10ZW50aHMge1xuICAgIHdpZHRoOiA4MCU7IH1cbiAgLyoqXG4gICAgKiBTaXh0aHNcbiAgICAqL1xuICAubGFwLW9uZS1zaXh0aCwgLmxhcC10d28tdHdlbGZ0aHMge1xuICAgIHdpZHRoOiAxNi42NjYlOyB9XG4gIC5sYXAtZml2ZS1zaXh0aHMsIC5sYXAtdGVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogODMuMzMzJTsgfVxuICAvKipcbiAgICAqIEVpZ2h0aHNcbiAgICAqL1xuICAubGFwLW9uZS1laWdodGgge1xuICAgIHdpZHRoOiAxMi41JTsgfVxuICAubGFwLXRocmVlLWVpZ2h0aHMge1xuICAgIHdpZHRoOiAzNy41JTsgfVxuICAubGFwLWZpdmUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDYyLjUlOyB9XG4gIC5sYXAtc2V2ZW4tZWlnaHRocyB7XG4gICAgd2lkdGg6IDg3LjUlOyB9XG4gIC8qKlxuICAgICogVGVudGhzXG4gICAgKi9cbiAgLmxhcC1vbmUtdGVudGgge1xuICAgIHdpZHRoOiAxMCU7IH1cbiAgLmxhcC10aHJlZS10ZW50aHMge1xuICAgIHdpZHRoOiAzMCU7IH1cbiAgLmxhcC1zZXZlbi10ZW50aHMge1xuICAgIHdpZHRoOiA3MCU7IH1cbiAgLmxhcC1uaW5lLXRlbnRocyB7XG4gICAgd2lkdGg6IDkwJTsgfVxuICAvKipcbiAgICAqIFR3ZWxmdGhzXG4gICAgKi9cbiAgLmxhcC1vbmUtdHdlbGZ0aCB7XG4gICAgd2lkdGg6IDguMzMzJTsgfVxuICAubGFwLWZpdmUtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA0MS42NjYlOyB9XG4gIC5sYXAtc2V2ZW4tdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA1OC4zMzMlOyB9XG4gIC5sYXAtZWxldmVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogOTEuNjY2JTsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLyoqXG4gICAgKiBXaG9sZVxuICAgICovXG4gIC5sYXAtYW5kLXVwLW9uZS13aG9sZSB7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgLyoqXG4gICAgKiBIYWx2ZXNcbiAgICAqL1xuICAubGFwLWFuZC11cC1vbmUtaGFsZiwgLmxhcC1hbmQtdXAtdHdvLXF1YXJ0ZXJzLCAubGFwLWFuZC11cC10aHJlZS1zaXh0aHMsIC5sYXAtYW5kLXVwLWZvdXItZWlnaHRocywgLmxhcC1hbmQtdXAtZml2ZS10ZW50aHMsIC5sYXAtYW5kLXVwLXNpeC10d2VsZnRocyB7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAvKipcbiAgICAqIFRoaXJkc1xuICAgICovXG4gIC5sYXAtYW5kLXVwLW9uZS10aGlyZCwgLmxhcC1hbmQtdXAtdHdvLXNpeHRocywgLmxhcC1hbmQtdXAtZm91ci10d2VsZnRocyB7XG4gICAgd2lkdGg6IDMzLjMzMyU7IH1cbiAgLmxhcC1hbmQtdXAtdHdvLXRoaXJkcywgLmxhcC1hbmQtdXAtZm91ci1zaXh0aHMsIC5sYXAtYW5kLXVwLWVpZ2h0LXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNjYuNjY2JTsgfVxuICAvKipcbiAgICAqIFF1YXJ0ZXJzXG4gICAgKi9cbiAgLmxhcC1hbmQtdXAtb25lLXF1YXJ0ZXIsIC5sYXAtYW5kLXVwLXR3by1laWdodGhzLCAubGFwLWFuZC11cC10aHJlZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDI1JTsgfVxuICAubGFwLWFuZC11cC10aHJlZS1xdWFydGVycywgLmxhcC1hbmQtdXAtc2l4LWVpZ2h0aHMsIC5sYXAtYW5kLXVwLW5pbmUtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA3NSU7IH1cbiAgLyoqXG4gICAgKiBGaWZ0aHNcbiAgICAqL1xuICAubGFwLWFuZC11cC1vbmUtZmlmdGgsIC5sYXAtYW5kLXVwLXR3by10ZW50aHMge1xuICAgIHdpZHRoOiAyMCU7IH1cbiAgLmxhcC1hbmQtdXAtdHdvLWZpZnRocywgLmxhcC1hbmQtdXAtZm91ci10ZW50aHMge1xuICAgIHdpZHRoOiA0MCU7IH1cbiAgLmxhcC1hbmQtdXAtdGhyZWUtZmlmdGhzLCAubGFwLWFuZC11cC1zaXgtdGVudGhzIHtcbiAgICB3aWR0aDogNjAlOyB9XG4gIC5sYXAtYW5kLXVwLWZvdXItZmlmdGhzLCAubGFwLWFuZC11cC1laWdodC10ZW50aHMge1xuICAgIHdpZHRoOiA4MCU7IH1cbiAgLyoqXG4gICAgKiBTaXh0aHNcbiAgICAqL1xuICAubGFwLWFuZC11cC1vbmUtc2l4dGgsIC5sYXAtYW5kLXVwLXR3by10d2VsZnRocyB7XG4gICAgd2lkdGg6IDE2LjY2NiU7IH1cbiAgLmxhcC1hbmQtdXAtZml2ZS1zaXh0aHMsIC5sYXAtYW5kLXVwLXRlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDgzLjMzMyU7IH1cbiAgLyoqXG4gICAgKiBFaWdodGhzXG4gICAgKi9cbiAgLmxhcC1hbmQtdXAtb25lLWVpZ2h0aCB7XG4gICAgd2lkdGg6IDEyLjUlOyB9XG4gIC5sYXAtYW5kLXVwLXRocmVlLWVpZ2h0aHMge1xuICAgIHdpZHRoOiAzNy41JTsgfVxuICAubGFwLWFuZC11cC1maXZlLWVpZ2h0aHMge1xuICAgIHdpZHRoOiA2Mi41JTsgfVxuICAubGFwLWFuZC11cC1zZXZlbi1laWdodGhzIHtcbiAgICB3aWR0aDogODcuNSU7IH1cbiAgLyoqXG4gICAgKiBUZW50aHNcbiAgICAqL1xuICAubGFwLWFuZC11cC1vbmUtdGVudGgge1xuICAgIHdpZHRoOiAxMCU7IH1cbiAgLmxhcC1hbmQtdXAtdGhyZWUtdGVudGhzIHtcbiAgICB3aWR0aDogMzAlOyB9XG4gIC5sYXAtYW5kLXVwLXNldmVuLXRlbnRocyB7XG4gICAgd2lkdGg6IDcwJTsgfVxuICAubGFwLWFuZC11cC1uaW5lLXRlbnRocyB7XG4gICAgd2lkdGg6IDkwJTsgfVxuICAvKipcbiAgICAqIFR3ZWxmdGhzXG4gICAgKi9cbiAgLmxhcC1hbmQtdXAtb25lLXR3ZWxmdGgge1xuICAgIHdpZHRoOiA4LjMzMyU7IH1cbiAgLmxhcC1hbmQtdXAtZml2ZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDQxLjY2NiU7IH1cbiAgLmxhcC1hbmQtdXAtc2V2ZW4tdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA1OC4zMzMlOyB9XG4gIC5sYXAtYW5kLXVwLWVsZXZlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDkxLjY2NiU7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAvKipcbiAgICAqIFdob2xlXG4gICAgKi9cbiAgLnBvcnRhYmxlLW9uZS13aG9sZSB7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgLyoqXG4gICAgKiBIYWx2ZXNcbiAgICAqL1xuICAucG9ydGFibGUtb25lLWhhbGYsIC5wb3J0YWJsZS10d28tcXVhcnRlcnMsIC5wb3J0YWJsZS10aHJlZS1zaXh0aHMsIC5wb3J0YWJsZS1mb3VyLWVpZ2h0aHMsIC5wb3J0YWJsZS1maXZlLXRlbnRocywgLnBvcnRhYmxlLXNpeC10d2VsZnRocyB7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAvKipcbiAgICAqIFRoaXJkc1xuICAgICovXG4gIC5wb3J0YWJsZS1vbmUtdGhpcmQsIC5wb3J0YWJsZS10d28tc2l4dGhzLCAucG9ydGFibGUtZm91ci10d2VsZnRocyB7XG4gICAgd2lkdGg6IDMzLjMzMyU7IH1cbiAgLnBvcnRhYmxlLXR3by10aGlyZHMsIC5wb3J0YWJsZS1mb3VyLXNpeHRocywgLnBvcnRhYmxlLWVpZ2h0LXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNjYuNjY2JTsgfVxuICAvKipcbiAgICAqIFF1YXJ0ZXJzXG4gICAgKi9cbiAgLnBvcnRhYmxlLW9uZS1xdWFydGVyLCAucG9ydGFibGUtdHdvLWVpZ2h0aHMsIC5wb3J0YWJsZS10aHJlZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDI1JTsgfVxuICAucG9ydGFibGUtdGhyZWUtcXVhcnRlcnMsIC5wb3J0YWJsZS1zaXgtZWlnaHRocywgLnBvcnRhYmxlLW5pbmUtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA3NSU7IH1cbiAgLyoqXG4gICAgKiBGaWZ0aHNcbiAgICAqL1xuICAucG9ydGFibGUtb25lLWZpZnRoLCAucG9ydGFibGUtdHdvLXRlbnRocyB7XG4gICAgd2lkdGg6IDIwJTsgfVxuICAucG9ydGFibGUtdHdvLWZpZnRocywgLnBvcnRhYmxlLWZvdXItdGVudGhzIHtcbiAgICB3aWR0aDogNDAlOyB9XG4gIC5wb3J0YWJsZS10aHJlZS1maWZ0aHMsIC5wb3J0YWJsZS1zaXgtdGVudGhzIHtcbiAgICB3aWR0aDogNjAlOyB9XG4gIC5wb3J0YWJsZS1mb3VyLWZpZnRocywgLnBvcnRhYmxlLWVpZ2h0LXRlbnRocyB7XG4gICAgd2lkdGg6IDgwJTsgfVxuICAvKipcbiAgICAqIFNpeHRoc1xuICAgICovXG4gIC5wb3J0YWJsZS1vbmUtc2l4dGgsIC5wb3J0YWJsZS10d28tdHdlbGZ0aHMge1xuICAgIHdpZHRoOiAxNi42NjYlOyB9XG4gIC5wb3J0YWJsZS1maXZlLXNpeHRocywgLnBvcnRhYmxlLXRlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDgzLjMzMyU7IH1cbiAgLyoqXG4gICAgKiBFaWdodGhzXG4gICAgKi9cbiAgLnBvcnRhYmxlLW9uZS1laWdodGgge1xuICAgIHdpZHRoOiAxMi41JTsgfVxuICAucG9ydGFibGUtdGhyZWUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDM3LjUlOyB9XG4gIC5wb3J0YWJsZS1maXZlLWVpZ2h0aHMge1xuICAgIHdpZHRoOiA2Mi41JTsgfVxuICAucG9ydGFibGUtc2V2ZW4tZWlnaHRocyB7XG4gICAgd2lkdGg6IDg3LjUlOyB9XG4gIC8qKlxuICAgICogVGVudGhzXG4gICAgKi9cbiAgLnBvcnRhYmxlLW9uZS10ZW50aCB7XG4gICAgd2lkdGg6IDEwJTsgfVxuICAucG9ydGFibGUtdGhyZWUtdGVudGhzIHtcbiAgICB3aWR0aDogMzAlOyB9XG4gIC5wb3J0YWJsZS1zZXZlbi10ZW50aHMge1xuICAgIHdpZHRoOiA3MCU7IH1cbiAgLnBvcnRhYmxlLW5pbmUtdGVudGhzIHtcbiAgICB3aWR0aDogOTAlOyB9XG4gIC8qKlxuICAgICogVHdlbGZ0aHNcbiAgICAqL1xuICAucG9ydGFibGUtb25lLXR3ZWxmdGgge1xuICAgIHdpZHRoOiA4LjMzMyU7IH1cbiAgLnBvcnRhYmxlLWZpdmUtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA0MS42NjYlOyB9XG4gIC5wb3J0YWJsZS1zZXZlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDU4LjMzMyU7IH1cbiAgLnBvcnRhYmxlLWVsZXZlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDkxLjY2NiU7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjVweCkge1xuICAvKipcbiAgICAqIFdob2xlXG4gICAgKi9cbiAgLmRlc2stb25lLXdob2xlIHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAvKipcbiAgICAqIEhhbHZlc1xuICAgICovXG4gIC5kZXNrLW9uZS1oYWxmLCAuZGVzay10d28tcXVhcnRlcnMsIC5kZXNrLXRocmVlLXNpeHRocywgLmRlc2stZm91ci1laWdodGhzLCAuZGVzay1maXZlLXRlbnRocywgLmRlc2stc2l4LXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNTAlOyB9XG4gIC8qKlxuICAgICogVGhpcmRzXG4gICAgKi9cbiAgLmRlc2stb25lLXRoaXJkLCAuZGVzay10d28tc2l4dGhzLCAuZGVzay1mb3VyLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMzMuMzMzJTsgfVxuICAuZGVzay10d28tdGhpcmRzLCAuZGVzay1mb3VyLXNpeHRocywgLmRlc2stZWlnaHQtdHdlbGZ0aHMge1xuICAgIHdpZHRoOiA2Ni42NjYlOyB9XG4gIC8qKlxuICAgICogUXVhcnRlcnNcbiAgICAqL1xuICAuZGVzay1vbmUtcXVhcnRlciwgLmRlc2stdHdvLWVpZ2h0aHMsIC5kZXNrLXRocmVlLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMjUlOyB9XG4gIC5kZXNrLXRocmVlLXF1YXJ0ZXJzLCAuZGVzay1zaXgtZWlnaHRocywgLmRlc2stbmluZS10d2VsZnRocyB7XG4gICAgd2lkdGg6IDc1JTsgfVxuICAvKipcbiAgICAqIEZpZnRoc1xuICAgICovXG4gIC5kZXNrLW9uZS1maWZ0aCwgLmRlc2stdHdvLXRlbnRocyB7XG4gICAgd2lkdGg6IDIwJTsgfVxuICAuZGVzay10d28tZmlmdGhzLCAuZGVzay1mb3VyLXRlbnRocyB7XG4gICAgd2lkdGg6IDQwJTsgfVxuICAuZGVzay10aHJlZS1maWZ0aHMsIC5kZXNrLXNpeC10ZW50aHMge1xuICAgIHdpZHRoOiA2MCU7IH1cbiAgLmRlc2stZm91ci1maWZ0aHMsIC5kZXNrLWVpZ2h0LXRlbnRocyB7XG4gICAgd2lkdGg6IDgwJTsgfVxuICAvKipcbiAgICAqIFNpeHRoc1xuICAgICovXG4gIC5kZXNrLW9uZS1zaXh0aCwgLmRlc2stdHdvLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogMTYuNjY2JTsgfVxuICAuZGVzay1maXZlLXNpeHRocywgLmRlc2stdGVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogODMuMzMzJTsgfVxuICAvKipcbiAgICAqIEVpZ2h0aHNcbiAgICAqL1xuICAuZGVzay1vbmUtZWlnaHRoIHtcbiAgICB3aWR0aDogMTIuNSU7IH1cbiAgLmRlc2stdGhyZWUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDM3LjUlOyB9XG4gIC5kZXNrLWZpdmUtZWlnaHRocyB7XG4gICAgd2lkdGg6IDYyLjUlOyB9XG4gIC5kZXNrLXNldmVuLWVpZ2h0aHMge1xuICAgIHdpZHRoOiA4Ny41JTsgfVxuICAvKipcbiAgICAqIFRlbnRoc1xuICAgICovXG4gIC5kZXNrLW9uZS10ZW50aCB7XG4gICAgd2lkdGg6IDEwJTsgfVxuICAuZGVzay10aHJlZS10ZW50aHMge1xuICAgIHdpZHRoOiAzMCU7IH1cbiAgLmRlc2stc2V2ZW4tdGVudGhzIHtcbiAgICB3aWR0aDogNzAlOyB9XG4gIC5kZXNrLW5pbmUtdGVudGhzIHtcbiAgICB3aWR0aDogOTAlOyB9XG4gIC8qKlxuICAgICogVHdlbGZ0aHNcbiAgICAqL1xuICAuZGVzay1vbmUtdHdlbGZ0aCB7XG4gICAgd2lkdGg6IDguMzMzJTsgfVxuICAuZGVzay1maXZlLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogNDEuNjY2JTsgfVxuICAuZGVzay1zZXZlbi10d2VsZnRocyB7XG4gICAgd2lkdGg6IDU4LjMzMyU7IH1cbiAgLmRlc2stZWxldmVuLXR3ZWxmdGhzIHtcbiAgICB3aWR0aDogOTEuNjY2JTsgfSB9XG5cbi8qKlxuICogSWYgeW91IGhhdmUgc2V0IHRoZSBhZGRpdGlvbmFsIGAkcmVzcG9uc2l2ZS1leHRyYWAgdmFyaWFibGUgdG8g4oCYdHJ1ZeKAmSBpblxuICogYF92YXJzLnNjc3NgIHRoZW4geW91IG5vdyBoYXZlIGFjY2VzcyB0byB0aGUgZm9sbG93aW5nIGNsYXNzIGF2YWlsYWJsZSB0b1xuICogYWNjb21vZGF0ZSBtdWNoIGxhcmdlciBzY3JlZW4gcmVzb2x1dGlvbnMuXG4gKi9cbi8qIGVuZGlmICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSogICAgJFBVU0hcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFB1c2ggY2xhc3NlcywgdG8gbW92ZSBncmlkIGl0ZW1zIG92ZXIgdG8gdGhlIHJpZ2h0IGJ5IGNlcnRhaW4gYW1vdW50cy5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICAgICRQVUxMXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBQdWxsIGNsYXNzZXMsIHRvIG1vdmUgZ3JpZCBpdGVtcyBvdmVyIHRvIHRoZSByaWdodCBieSBjZXJ0YWluIGFtb3VudHMuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkQlJBTkRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGAuYnJhbmRgIGlzIGEgcXVpY2sgYW5kIHNpbXBsZSB3YXkgdG8gYXBwbHkgeW91ciBicmFuZCBmYWNlIGFuZC9vciBjb2xvciB0b1xuICogYW55IGVsZW1lbnQgdXNpbmcgYSBoYW5keSBoZWxwZXIgY2xhc3MuXG4gKi9cbi5icmFuZCB7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWYhaW1wb3J0YW50O1xuICBjb2xvcjogIzAwY2U1ZSFpbXBvcnRhbnQ7IH1cblxuLmJyYW5kLWZhY2Uge1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmIWltcG9ydGFudDsgfVxuXG4uYnJhbmQtY29sb3IsXG4uYnJhbmQtY29sb3VyIHtcbiAgY29sb3I6ICMwMGNlNWUhaW1wb3J0YW50OyB9XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKiAgICAkSEVMUEVSXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBBIHNlcmllcyBvZiBoZWxwZXIgY2xhc3NlcyB0byB1c2UgYXJiaXRyYXJpbHkuIE9ubHkgdXNlIGEgaGVscGVyIGNsYXNzIGlmIGFuXG4gKiBlbGVtZW50L2NvbXBvbmVudCBkb2VzbuKAmXQgYWxyZWFkeSBoYXZlIGEgY2xhc3MgdG8gd2hpY2ggeW91IGNvdWxkIGFwcGx5IHRoaXNcbiAqIHN0eWxpbmcsIGUuZy4gaWYgeW91IG5lZWQgdG8gZmxvYXQgYC5tYWluLW5hdmAgbGVmdCB0aGVuIGFkZCBgZmxvYXQ6bGVmdDtgIHRvXG4gKiB0aGF0IHJ1bGVzZXQgYXMgb3Bwb3NlZCB0byBhZGRpbmcgdGhlIGAuZmxvYXQtLWxlZnRgIGNsYXNzIHRvIHRoZSBtYXJrdXAuXG4gKlxuICogQSBsb3Qgb2YgdGhlc2UgY2xhc3NlcyBjYXJyeSBgIWltcG9ydGFudGAgYXMgeW91IHdpbGwgYWx3YXlzIHdhbnQgdGhlbSB0byB3aW5cbiAqIG91dCBvdmVyIG90aGVyIHNlbGVjdG9ycy5cbiAqL1xuLyoqXG4gKiBBZGQvcmVtb3ZlIGZsb2F0c1xuICovXG4uZmxvYXQtLXJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH1cblxuLmZsb2F0LS1sZWZ0IHtcbiAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfVxuXG4uZmxvYXQtLW5vbmUge1xuICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICogVGV4dCBhbGlnbm1lbnRcbiAqL1xuLnRleHQtLWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0ICAhaW1wb3J0YW50OyB9XG5cbi50ZXh0LS1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfVxuXG4udGV4dC0tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICogRm9udCB3ZWlnaHRzXG4gKi9cbi53ZWlnaHQtLWxpZ2h0IHtcbiAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50OyB9XG5cbi53ZWlnaHQtLW5vcm1hbCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsgfVxuXG4ud2VpZ2h0LS1zZW1pYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIEFkZC9yZW1vdmUgbWFyZ2luc1xuICovXG4ucHVzaCB7XG4gIG1hcmdpbjogMTVweCAhaW1wb3J0YW50OyB9XG5cbi5wdXNoLS10b3Age1xuICBtYXJnaW4tdG9wOiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtLXJpZ2h0IHtcbiAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsgfVxuXG4ucHVzaC0tbGVmdCB7XG4gIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtLWVuZHMge1xuICBtYXJnaW4tdG9wOiAxNXB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsgfVxuXG4ucHVzaC0tc2lkZXMge1xuICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsgfVxuXG4ucHVzaC1oYWxmIHtcbiAgbWFyZ2luOiA3LjVweCAhaW1wb3J0YW50OyB9XG5cbi5wdXNoLWhhbGYtLXRvcCB7XG4gIG1hcmdpbi10b3A6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtaGFsZi0tcmlnaHQge1xuICBtYXJnaW4tcmlnaHQ6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtaGFsZi0tYm90dG9tIHtcbiAgbWFyZ2luLWJvdHRvbTogNy41cHggIWltcG9ydGFudDsgfVxuXG4ucHVzaC1oYWxmLS1sZWZ0IHtcbiAgbWFyZ2luLWxlZnQ6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtaGFsZi0tZW5kcyB7XG4gIG1hcmdpbi10b3A6IDcuNXB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnB1c2gtaGFsZi0tc2lkZXMge1xuICBtYXJnaW4tcmlnaHQ6IDcuNXB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiA3LjVweCAhaW1wb3J0YW50OyB9XG5cbi5mbHVzaCB7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50OyB9XG5cbi5mbHVzaC0tdG9wIHtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9XG5cbi5mbHVzaC0tcmlnaHQge1xuICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfVxuXG4uZmx1c2gtLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4uZmx1c2gtLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9XG5cbi5mbHVzaC0tZW5kcyB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XG5cbi5mbHVzaC0tc2lkZXMge1xuICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIEFkZC9yZW1vdmUgcGFkZGluZ3NcbiAqL1xuLnNvZnQge1xuICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50OyB9XG5cbi5zb2Z0LS1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMTVweCAhaW1wb3J0YW50OyB9XG5cbi5zb2Z0LS1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtLWVuZHMge1xuICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogMTVweCAhaW1wb3J0YW50OyB9XG5cbi5zb2Z0LS1zaWRlcyB7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtaGFsZiB7XG4gIHBhZGRpbmc6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtaGFsZi0tdG9wIHtcbiAgcGFkZGluZy10b3A6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtaGFsZi0tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiA3LjVweCAhaW1wb3J0YW50OyB9XG5cbi5zb2Z0LWhhbGYtLWJvdHRvbSB7XG4gIHBhZGRpbmctYm90dG9tOiA3LjVweCAhaW1wb3J0YW50OyB9XG5cbi5zb2Z0LWhhbGYtLWxlZnQge1xuICBwYWRkaW5nLWxlZnQ6IDcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLnNvZnQtaGFsZi0tZW5kcyB7XG4gIHBhZGRpbmctdG9wOiA3LjVweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogNy41cHggIWltcG9ydGFudDsgfVxuXG4uc29mdC1oYWxmLS1zaWRlcyB7XG4gIHBhZGRpbmctcmlnaHQ6IDcuNXB4ICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctbGVmdDogNy41cHggIWltcG9ydGFudDsgfVxuXG4uaGFyZCB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuXG4uaGFyZC0tdG9wIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4uaGFyZC0tcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLmhhcmQtLWJvdHRvbSB7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxuLmhhcmQtLWxlZnQge1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4uaGFyZC0tZW5kcyB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxuLmhhcmQtLXNpZGVzIHtcbiAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIFB1bGwgaXRlbXMgZnVsbCB3aWR0aCBvZiBgLmlzbGFuZGAgcGFyZW50cy5cbiAqL1xuLmZ1bGwtYmxlZWQge1xuICBtYXJnaW4tcmlnaHQ6IC0xNXB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAtMTVweCAhaW1wb3J0YW50OyB9XG4gIC5pc2xldCAuZnVsbC1ibGVlZCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNy41cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW4tbGVmdDogLTcuNXB4ICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gKiBBZGQgYSBoZWxwIGN1cnNvciB0byBhbnkgZWxlbWVudCB0aGF0IGdpdmVzIHRoZSB1c2VyIGV4dHJhIGluZm9ybWF0aW9uIG9uXG4gKiBgOmhvdmVyYC5cbiAqL1xuLmluZm9ybWF0aXZlIHtcbiAgY3Vyc29yOiBoZWxwICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gKiBNdXRlIGFuIG9iamVjdCBieSByZWR1Y2luZyBpdHMgb3BhY2l0eS5cbiAqL1xuLm11dGVkIHtcbiAgb3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCkgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIEFsaWduIGl0ZW1zIHRvIHRoZSByaWdodCB3aGVyZSB0aGV5IGltcGx5IHByb2dyZXNzaW9uL21vdmVtZW50IGZvcndhcmQsIGUuZy46XG4gKlxuICAgPHAgY2xhc3M9cHJvY2VlZD48YSBocmVmPSM+UmVhZCBtb3JlLi4uPC9hPjwvcD5cbiAqXG4gKi9cbi5wcm9jZWVkIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIEFkZCBhIHJpZ2h0LWFuZ2xlZCBxdW90ZSB0byBsaW5rcyB0aGF0IGltcGx5IG1vdmVtZW50LCBlLmcuOlxuICpcbiAgIDxhIGhyZWY9IyBjbGFzcz1nbz5SZWFkIG1vcmU8L2E+XG4gKlxuICovXG4uZ286YWZ0ZXIge1xuICBjb250ZW50OiBcIsKgXCIgXCLCu1wiICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gKiBBcHBseSBjYXBpdGFsIGNhc2UgdG8gYW4gZWxlbWVudCAodXN1YWxseSBhIGBzdHJvbmdgKS5cbiAqL1xuLmNhcHMge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gKiBIaWRlIGNvbnRlbnQgb2ZmLXNjcmVlbiB3aXRob3V0IHJlc29ydGluZyB0byBgZGlzcGxheTpub25lO2AsIGFsc28gcHJvdmlkZVxuICogYnJlYWtwb2ludCBzcGVjaWZpYyBoaWRkZW4gZWxlbWVudHMuXG4gKi9cbi5hY2Nlc3NpYmlsaXR5LFxuLnZpc3VhbGx5aGlkZGVuIHtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50OyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmFjY2Vzc2liaWxpdHktLXBhbG0sXG4gIC52aXN1YWxseWhpZGRlbi0tcGFsbSB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5hY2Nlc3NpYmlsaXR5LS1sYXAsXG4gIC52aXN1YWxseWhpZGRlbi0tbGFwIHtcbiAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmFjY2Vzc2liaWxpdHktLWxhcC1hbmQtdXAsXG4gIC52aXN1YWxseWhpZGRlbi0tbGFwLWFuZC11cCB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuYWNjZXNzaWJpbGl0eS0tcG9ydGFibGUsXG4gIC52aXN1YWxseWhpZGRlbi0tcG9ydGFibGUge1xuICAgIGJvcmRlcjogMCAhaW1wb3J0YW50O1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogLTFweCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI1cHgpIHtcbiAgLmFjY2Vzc2liaWxpdHktLWRlc2ssXG4gIC52aXN1YWxseWhpZGRlbi0tZGVzayB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0NDBweCkge1xuICAuYWNjZXNzaWJpbGl0eS0tZGVzay13aWRlLFxuICAudmlzdWFsbHloaWRkZW4tLWRlc2std2lkZSB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IH0gfVxuXG4vKiBlbmRpZiAqL1xuLmZvbnQtLWJhc2UsIGJvZHkge1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4OyB9XG5cbi5mb250LS1iYXNlLS1pbXBvcnRhbnQge1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiAhaW1wb3J0YW50OyB9XG5cbi5mb250LS1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cblxuLmZvbnQtLW5vcm1hbCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsgfVxuXG4uZm9udC0taXRhbGljIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qXG4uZm9udC0tYnJhbmQge1xuXHRmb250LWZhbWlseTogJ2FjdG9wb2xpc3JlZ3VsYXInIWltcG9ydGFudDtcbn1cbiovXG4vKiBIJ3MgKi9cbmgyLCAuYmV0YSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi5mb250LS1wb3NpdGl2ZSB7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi5mb250LS1uZWdhdGl2ZSB7XG4gIGNvbG9yOiAjZmZmOyB9XG5cbi51cHBlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG5cbi50ZXh0LWFsaWduLS1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLnRleHQtYWxpZ24tLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLmRpc3BsYXktLWlubGluZS1ibG9jayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5oaWRlLS1wYWxtIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjVweCkge1xuICAuaGlkZS0tZGVzayB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuaGlkZS0tbGFwIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG4uc3ByaXRlLS1pbmxpbmUtYmxvY2ssIC5zdmctaWNvbiwgLmZsZXgtbmV4dCwgLmZsZXgtcHJldiB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4uaWNvbi0tcm91bmRlZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAycHggc29saWQgIzQ0YzhmNTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9XG5cbi5zdmctaWNvbi1kb3dubG9hZCB7XG4gIG1hcmdpbi10b3A6IDRweDtcbiAgZm9udC1zaXplOiAwICFpbXBvcnRhbnQ7IH1cblxuLmJnLXdpcmVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gIC5iZy13aXJlcy0tcGFsbS1wb3J0IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gIC5iZy13aXJlcy0tcGFsbS1sYW5kIHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9IH1cblxuLnJvdGF0ZWQtLTkwLCAucGctbW9kdWxlLWJveF9fZm9vdGVyX19idG4uY2xvc2VkID4gKiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuXG4ucm90YXRlZC0tMTgwIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuXG4ucm90YXRlZC0tMjcwLCAucGctbW9kdWxlLWJveF9fZm9vdGVyX19idG4ub3BlbiA+ICosIC5wZy1tb2R1bGUtYm94LS1vcGVuIC5wZy1tb2R1bGUtYm94X19mb290ZXJfX2J0biA+ICoge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG5cbiN3cmFwVHlwNCB7XG4gIG1pbi13aWR0aDogaW5oZXJpdDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICN3cmFwVHlwNCB7XG4gICAgICBib3JkZXItd2lkdGg6IDVweDtcbiAgICAgIHRvcDogMDsgfSB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgI2NvbnRlbnQgPiAuYXJ0aWtlbHVzY2hyaWZ0LCAjY29udGVudCA+IC5hcnRpa2VsdGV4dCB7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7IH0gfVxuXG4uYnUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiA5cHg7XG4gIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICBtYXJnaW4tdG9wOiA1cHg7IH1cblxuaDMsIC5nYW1tYSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50OyB9XG5cbi5lbGVtZW50LWRlc2NyaXB0aW9uIHtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDA7XG4gIHBhZGRpbmctdG9wOiAzMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMzBweDsgfVxuXG4uYXJ0aWtlbHRleHQge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgbWluLXdpZHRoOiBpbmhlcml0OyB9XG5cbi5uYXZpLWZvb3RlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMXB4O1xuICB6LWluZGV4OiAxMDAwMDtcbiAgaGVpZ2h0OiAyNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBsZWZ0OiA1MHB4O1xuICByaWdodDogNTBweDtcbiAgYm9yZGVyOiAycHggc29saWQgIzAwY2FmMjtcbiAgYm9yZGVyLXJhZGl1czogN3B4O1xuICBjb2xvcjogIzAwMDtcbiAgbGluZS1oZWlnaHQ6IDIzcHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7IH1cblxuLm5hdmktZm9vdGVyIGEge1xuICBjb2xvcjogIzAwMDsgfVxuXG5kaXYuZ2ktbGlnaHRib3gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyOiA1cHggbm9uZSAjZmZmO1xuICBib3JkZXItcmFkaXVzOiAzNHB4OyB9XG5cbiNmYW5jeWJveC1vdXRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH1cblxuLnN2Zy1hcnJvdy1kb3duLCAuc3ByYWNoZHJvcGRvd246YWZ0ZXIsIC5zdmctaWNvbi1hYnNjaGx1c3MsIC5zdmctaWNvbi1hcnJvdy0tY2ktc2Vjb25kLCAuZmxleC1uZXh0LCAuZmxleC1wcmV2LCAuc3ZnLWljb24tYXJyb3ctLW5lZ2F0aXZlLCAuc3ZnLWljb24tYXJyb3ctLXBvc2l0aXZlLCAuc3ZnLWljb24tYXVzc3RlbGx1bmcsIC5zdmctaWNvbi1iYW5kZXJvbGUsIC5wZy1zbGlkZXJfX2JhbmQsIC5zdmctaWNvbi1iaWxkdW5nLCAuc3ZnLWljb24tZG93bmxvYWQsIC5zdmctaWNvbi1lbmVyZ2llLCAuc3ZnLWljb24tZm9yc2NodW5nLCAuc3ZnLWljb24taG9yaXpvbnQsIC5zdmctaWNvbi1pbmZvcm1hdGlrLCAuc3ZnLWljb24ta29tbXVuaWthdGlvbiwgLnN2Zy1pY29uLWtyZXV6LCAjZmFuY3lib3gtY2xvc2UsIC5zdmctaWNvbi1sb2dvLWVyZmluZGVybGFuZCwgLnN2Zy1pY29uLWx1cGUsIC5zdmctaWNvbi1tYXJrZXItZ3J1ZW4sIC5zdmctaWNvbi1tYXJrZXItdmlvbGV0LCAuc3ZnLWljb24tbWFya2VyLXZpb2xldC0tbGVmdCwgLnN2Zy1pY29uLW1hdGVyaWFsLCAuc3ZnLWljb24tbWVkaXppbiwgLnN2Zy1pY29uLW1vYmlsaXRhZXQsIC5zdmctaWNvbi1ub2JlbCwgLnN2Zy1pY29uLW9wdGlrLCAuc3ZnLWljb24tcHJheGlzLCAuc3ZnLWljb24tc3ByYWNoZS1kZSwgLnN2Zy1pY29uLXNwcmFjaGUtZW4sIC5zdmctaWNvbi1zcHJhY2hlbiwgLnN2Zy1pY29uLXN0dWRpZXJlbiwgLnN2Zy1pY29uLXZpb2xldC1tYXNrLCAucGctbW9kdWxlLW1hcF9fZmxhZ19faW5mbzpiZWZvcmUge1xuICBiYWNrZ3JvdW5kOiB1cmwoc3ZnL3Nwcml0ZS5jc3MtMTExZjcxYmMuc3ZnKSBuby1yZXBlYXQ7IH1cblxuLnN2Zy1hcnJvdy1kb3duLCAuc3ByYWNoZHJvcGRvd246YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4OC40NjE3NTc5MzY1ODM0MiUgNzQuODY3ODkyOTkxMTQ2NDMlO1xuICB3aWR0aDogOS44NDNweDtcbiAgaGVpZ2h0OiA4LjUyNHB4OyB9XG5cbi5zdmctaWNvbi1hYnNjaGx1c3Mge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5OS45MTYxMjA5MDY4MDEwMSUgNDUuMDI2MTc4MDEwNDcxMjA2JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tYXJyb3ctLWNpLXNlY29uZCwgLmZsZXgtbmV4dCwgLmZsZXgtcHJldiB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDg4LjkwNDQ2MDEzODE5MDc0JSA3OC44NTM1NTU1NTU1NTU1NiU7XG4gIHdpZHRoOiAxMS4zMzNweDtcbiAgaGVpZ2h0OiAxOHB4OyB9XG5cbi5zdmctaWNvbi1hcnJvdy0tbmVnYXRpdmUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4Ni41MDE3MDU2NTI1MDQ4NSUgNzguODUzNTU1NTU1NTU1NTYlO1xuICB3aWR0aDogMTEuMzMzcHg7XG4gIGhlaWdodDogMThweDsgfVxuXG4uc3ZnLWljb24tYXJyb3ctLXBvc2l0aXZlIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogODQuMDk4OTUxMTY2ODE4OTglIDc4Ljg1MzU1NTU1NTU1NTU2JTtcbiAgd2lkdGg6IDExLjMzM3B4O1xuICBoZWlnaHQ6IDE4cHg7IH1cblxuLnN2Zy1pY29uLWF1c3N0ZWxsdW5nIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDMuMzI0OTM3MDI3NzA3ODElIDU0Ljc5OTQ3NjQzOTc5MDU4JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tYmFuZGVyb2xlLCAucGctc2xpZGVyX19iYW5kIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAuMzM2MzExMjM5MTkzMDklIDA7XG4gIHdpZHRoOiAxMzZweDtcbiAgaGVpZ2h0OiAxMjlweDsgfVxuXG4uc3ZnLWljb24tYmlsZHVuZyB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDc4LjI1MzY1MjM5Mjk0NzEyJSAyMi41MTMwODkwMDUyMzU2MDMlO1xuICB3aWR0aDogODZweDtcbiAgaGVpZ2h0OiA4NnB4OyB9XG5cbi5zdmctaWNvbi1kb3dubG9hZCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDg2LjAyNTQ5NTMzMjk0MDA4JSA3NS4yNDczNDI4MjgyMDYzOCU7XG4gIHdpZHRoOiAyMS44OTZweDtcbiAgaGVpZ2h0OiAxMC44NDFweDsgfVxuXG4uc3ZnLWljb24tZW5lcmdpZSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgNzcuMzEyNTY1NDQ1MDI2MTglO1xuICB3aWR0aDogODZweDtcbiAgaGVpZ2h0OiA4NnB4OyB9XG5cbi5zdmctaWNvbi1mb3JzY2h1bmcge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMS42NjI0Njg1MTM4NTM5MDYlIDc3LjMxMjU2NTQ0NTAyNjE4JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24taG9yaXpvbnQge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMS42NjI0Njg1MTM4NTM5MDYlIDk5LjgyNTY1NDQ1MDI2MTc4JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24taW5mb3JtYXRpayB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDY0Ljk4NzQwNTU0MTU2MTcxJSA3Ny4zMTI1NjU0NDUwMjYxOCU7XG4gIHdpZHRoOiA4NnB4O1xuICBoZWlnaHQ6IDg2cHg7IH1cblxuLnN2Zy1pY29uLWtvbW11bmlrYXRpb24ge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5OS45MTYxMjA5MDY4MDEwMSUgMDtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24ta3JldXosICNmYW5jeWJveC1jbG9zZSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDc0LjcyNzA4ODAzNjExNzM4JSA4OS4wOTY3Mjg5NzE5NjI2MiU7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7IH1cblxuLnN2Zy1pY29uLWxvZ28tZXJmaW5kZXJsYW5kIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICB3aWR0aDogMTc0LjY2N3B4O1xuICBoZWlnaHQ6IDIwOS4zMzRweDsgfVxuXG4uc3ZnLWljb24tbHVwZSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDc5LjQ0NTcyNzQ4MjY3ODk5JSA3MC42NTQwNjY5ODU2NDU5NCU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7IH1cblxuLnN2Zy1pY29uLW1hcmtlci1ncnVlbiB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDQwLjU2OTk2MDc3NDUwODg2JSA5Ny44NTkyNDcxNjk0NDMzNCU7XG4gIHdpZHRoOiA1OS4wNDFweDtcbiAgaGVpZ2h0OiA3OC4zMjRweDsgfVxuXG4uc3ZnLWljb24tbWFya2VyLXZpb2xldCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDQxLjE5OTAzMTAzODM3ODcxJSAzMy4xMDQ0MjUyMTQ3OTM4MyU7XG4gIHdpZHRoOiA1OS4wNDFweDtcbiAgaGVpZ2h0OiA3OC4zMjRweDsgfVxuXG4uc3ZnLWljb24tbWFya2VyLXZpb2xldC0tbGVmdCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDU1LjEyNTE0MTgxNzk1ODgxJSAzMy4xMDQ0MjUyMTQ3OTM4MyU7XG4gIHdpZHRoOiA1OS4wNDFweDtcbiAgaGVpZ2h0OiA3OC4zMjRweDsgfVxuXG4uc3ZnLWljb24tbWF0ZXJpYWwge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDk5LjgyNTY1NDQ1MDI2MTc4JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tbWVkaXppbiB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDc4LjI1MzY1MjM5Mjk0NzEyJSAwO1xuICB3aWR0aDogODZweDtcbiAgaGVpZ2h0OiA4NnB4OyB9XG5cbi5zdmctaWNvbi1tb2JpbGl0YWV0IHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogOTkuOTE2MTIwOTA2ODAxMDElIDY3LjUzOTI2NzAxNTcwNjgxJTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tbm9iZWwge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5OS45MTYxMjA5MDY4MDEwMSUgMjIuNTEzMDg5MDA1MjM1NjAzJTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tb3B0aWsge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA3OC4yNTM2NTIzOTI5NDcxMiUgNDUuMDI2MTc4MDEwNDcxMjA2JTtcbiAgd2lkdGg6IDg2cHg7XG4gIGhlaWdodDogODZweDsgfVxuXG4uc3ZnLWljb24tcHJheGlzIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMjEuNjYyNDY4NTEzODUzOTA2JSA1NC43OTk0NzY0Mzk3OTA1OCU7XG4gIHdpZHRoOiA4NnB4O1xuICBoZWlnaHQ6IDg2cHg7IH1cblxuLnN2Zy1pY29uLXNwcmFjaGUtZGUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1My4zNTgxOTg2MTQzMTg3JSA4OS4wOTY3Mjg5NzE5NjI2MiU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDQwcHg7IH1cblxuLnN2Zy1pY29uLXNwcmFjaGUtZW4ge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2NC45MDU1NDI3MjUxNzMyJSA4OS4wOTY3Mjg5NzE5NjI2MiU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDQwcHg7IH1cblxuLnN2Zy1pY29uLXNwcmFjaGVuIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCA1NC43OTk0NzY0Mzk3OTA1OCU7XG4gIHdpZHRoOiA4NnB4O1xuICBoZWlnaHQ6IDg2cHg7IH1cblxuLnN2Zy1pY29uLXN0dWRpZXJlbiB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDQzLjMyNDkzNzAyNzcwNzgxJSA3Ny4zMTI1NjU0NDUwMjYxOCU7XG4gIHdpZHRoOiA4NnB4O1xuICBoZWlnaHQ6IDg2cHg7IH1cblxuLnN2Zy1pY29uLXZpb2xldC1tYXNrLCAucGctbW9kdWxlLW1hcF9fZmxhZ19faW5mbzpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1Ni43MzcwODk1NjMyMzQzNyUgNTMuNDI0ODM1ODMzOTk5MDIlO1xuICB3aWR0aDogMjguMjcxcHg7XG4gIGhlaWdodDogNzYuMTcxcHg7IH1cblxuLnBnLW1vZHVsZSwgLnBnLW1vZHVsZS0tdW5wYWRkZWQge1xuICBwYWRkaW5nOiAxNXB4O1xuICBsaW5lLWhlaWdodDogMjBweDsgfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjVweCkge1xuICAucGctbW9kdWxlLS11bnBhZGRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH0gfVxuXG4ucGctaW1nIHtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgcGFkZGluZy10b3A6IDNweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5wZy1pbWcgPiBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiA3LjVweDsgfVxuICAucGctaW1nID4gLnBnLWltZ19fZGVzYyB7XG4gICAgY29sb3I6ICM0NGM4ZjU7IH1cblxuLnN2Zy1pY29uLWx1cGUge1xuICBtYXJnaW4tdG9wOiAtNjFweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbG9hdDogcmlnaHQ7IH1cblxuLnBnLW1vZHVsZS1tYXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLnBnLW1vZHVsZS1tYXAgPiBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bzsgfVxuXG4ucGctdmlkZW8gPiAqIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLnBnLW1vZHVsZS1tYXBfX2ZsYWdfX2FjdGl2ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAxcHg7XG4gIGxlZnQ6IDVweDsgfVxuICAucGctbW9kdWxlLW1hcF9fZmxhZ19fYWN0aXZlID4gLnN2Zy1pY29uLCAucGctbW9kdWxlLW1hcF9fZmxhZ19fYWN0aXZlID4gLmZsZXgtbmV4dCwgLnBnLW1vZHVsZS1tYXBfX2ZsYWdfX2FjdGl2ZSA+IC5mbGV4LXByZXYge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7IH1cblxuLnBnLW1vZHVsZS1tYXBfX2ZsYWdfX21hcmtlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAwOyB9XG5cbi5wZy1tb2R1bGUtbWFwX19mbGFnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4OyB9XG4gIC5wZy1tb2R1bGUtbWFwX19mbGFnOmhvdmVyIHtcbiAgICB6LWluZGV4OiA5NjY7IH1cbiAgICAucGctbW9kdWxlLW1hcF9fZmxhZzpob3ZlciA+IC5wZy1tb2R1bGUtbWFwX19mbGFnX19hY3RpdmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICAucGctbW9kdWxlLW1hcF9fZmxhZzpob3ZlciA+IC5wZy1tb2R1bGUtbWFwX19mbGFnX19tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuXG4ucGctbW9kdWxlLW1hcF9fZmxhZ19faW5mbyB7XG4gIGNvbG9yOiAjZmZmO1xuICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNzdweDtcbiAgbGVmdDogMzdweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZy1sZWZ0OiAyMnB4OyB9XG4gIC5wZy1tb2R1bGUtbWFwX19mbGFnX19pbmZvOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTdweDsgfVxuICAucGctbW9kdWxlLW1hcF9fZmxhZ19faW5mbyA+IGRpdiB7XG4gICAgcGFkZGluZy10b3A6IDdweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogN3B4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDdweDtcbiAgICBtYXJnaW4tbGVmdDogLTFweDtcbiAgICBiYWNrZ3JvdW5kOiAjNkYyMTYwOyB9XG5cbi5mYW5jeS1iZyB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLnBnLWxpZ2h0Ym94LWNvbnRlbnQge1xuICBwYWRkaW5nOiAzNy41cHggMTVweCAxNXB4IDE1cHg7XG4gIG1heC13aWR0aDogNTEwcHg7IH1cbiAgLnBnLWxpZ2h0Ym94LWNvbnRlbnQuaW1hZ2Utb25seSB7XG4gICAgbWF4LXdpZHRoOiA4MDBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnBnLWxpZ2h0Ym94LWNvbnRlbnQge1xuICAgICAgcGFkZGluZzogNy41cHg7IH0gfVxuICAucGctbGlnaHRib3gtY29udGVudCBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIC5wZy1saWdodGJveC1jb250ZW50IGltZyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7IH0gfVxuXG4ucGctbW9kdWxlLWJveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxuICAucGctbW9kdWxlLWJveC5wZy1tb2R1bGUtYm94LS1pY29uLW9mZnNldCB7XG4gICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG4gIC5wZy1tb2R1bGUtYm94IC5pY29uLS1yb3VuZGVkIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMzBweDtcbiAgICByaWdodDogMTVweDsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIC5wZy1tb2R1bGUtYm94IC5pY29uLS1yb3VuZGVkIHtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQ7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTsgfSB9XG5cbi5wZy1tb2R1bGUtYm94X19oZWFkIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qXG5cdD4gaDIge1xuXHRcdGNvbG9yOiAkY29sb3ItY2ktMm5kO1xuXHRcdG1hcmdpbi10b3A6IDFlbTtcblx0XHRwYWRkaW5nLXRvcDogJGJhc2Utc3BhY2luZy11bml0O1xuXHR9XG4qLyB9XG4gIC5wZy1tb2R1bGUtYm94X19oZWFkIC5ncmlkIHtcbiAgICBtYXJnaW4tbGVmdDogLTMwcHg7IH1cbiAgICAucGctbW9kdWxlLWJveF9faGVhZCAuZ3JpZCA+ICoge1xuICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4OyB9XG4gIC5wZy1tb2R1bGUtYm94LS1pY29uLW9mZnNldCA+IC5wZy1tb2R1bGUtYm94X19oZWFkIHtcbiAgICBtYXJnaW4tdG9wOiAtNDBweDsgfVxuICAgIC5wZy1tb2R1bGUtYm94LS1pY29uLW9mZnNldCA+IC5wZy1tb2R1bGUtYm94X19oZWFkIC5wZy1tb2R1bGUtYm94X19oZWFkX190eHQge1xuICAgICAgcGFkZGluZy10b3A6IDQwcHg7IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICAgLnBnLW1vZHVsZS1ib3gtLWljb24tb2Zmc2V0ID4gLnBnLW1vZHVsZS1ib3hfX2hlYWQgLnBnLW1vZHVsZS1ib3hfX2hlYWRfX3R4dCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsgfSB9XG4gICAgICAucGctbW9kdWxlLWJveC0taWNvbi1vZmZzZXQgPiAucGctbW9kdWxlLWJveF9faGVhZCAucGctbW9kdWxlLWJveF9faGVhZF9fdHh0ID4gKiB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDg1cHg7IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICAgLnBnLW1vZHVsZS1ib3gtLWljb24tb2Zmc2V0ID4gLnBnLW1vZHVsZS1ib3hfX2hlYWQgLnBnLW1vZHVsZS1ib3hfX2hlYWRfX3R4dCA+IGgxLCAucGctbW9kdWxlLWJveC0taWNvbi1vZmZzZXQgPiAucGctbW9kdWxlLWJveF9faGVhZCAucGctbW9kdWxlLWJveF9faGVhZF9fdHh0ID4gaDIsIC5wZy1tb2R1bGUtYm94LS1pY29uLW9mZnNldCA+IC5wZy1tb2R1bGUtYm94X19oZWFkIC5wZy1tb2R1bGUtYm94X19oZWFkX190eHQgPiBoMywgLnBnLW1vZHVsZS1ib3gtLWljb24tb2Zmc2V0ID4gLnBnLW1vZHVsZS1ib3hfX2hlYWQgLnBnLW1vZHVsZS1ib3hfX2hlYWRfX3R4dCA+IGg0IHtcbiAgICAgICAgICBmb250LXNpemU6IDEuM2VtOyB9IH1cbiAgLnBnLW1vZHVsZS1ib3gtLWZpeGVkLWhlaWdodCA+IC5wZy1tb2R1bGUtYm94X19oZWFkIHtcbiAgICBoZWlnaHQ6IDIwMHB4OyB9XG5cbi5wZy1tb2R1bGUtYm94X19pbm5lciB7XG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzO1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLnBnLW1vZHVsZS1ib3gtLW9wZW4gLnBnLW1vZHVsZS1ib3hfX2lubmVyIHtcbiAgICBoZWlnaHQ6IGluaGVyaXQ7IH1cblxuLnBnLW1vZHVsZS1ib3hfX2NvbnRlbnQge1xuICBwYWRkaW5nLWJvdHRvbTogMTVweDsgfVxuXG4ucGctbW9kdWxlLWJveF9fY29udGVudF9faGVhZGxpbmUge1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzQ0YzhmNTtcbiAgbWFyZ2luLWJvdHRvbTogNy41cHg7IH1cbiAgLnBnLW1vZHVsZS1ib3hfX2NvbnRlbnRfX2hlYWRsaW5lID4gKiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4ucGctbW9kdWxlLWJveF9fZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICM0NGM4ZjU7IH1cbiAgLnBnLW1vZHVsZS1ib3hfX2Zvb3Rlci5hbGlnbi0tcmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbi5wZy1tb2R1bGUtYm94X19mb290ZXJfX2J0biB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjNDRjOGY1O1xuICBtYXJnaW4tYm90dG9tOiAtMTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5wZy1tb2R1bGUtYm94X19mb290ZXJfX2J0biAqIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICNmZmY7IH1cbiAgICAucGctbW9kdWxlLWJveF9fZm9vdGVyX19idG4gKjpob3ZlciB7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG5cbi8qXG4gKiBqUXVlcnkgRmxleFNsaWRlciB2MS44XG4gKiBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vZmxleHNsaWRlci9cbiAqXG4gKiBDb3B5cmlnaHQgMjAxMiBXb29UaGVtZXNcbiAqIEZyZWUgdG8gdXNlIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gKi9cbi8qIEJyb3dzZXIgUmVzZXRzICovXG4uZmxleC1jb250YWluZXIgYTphY3RpdmUsXG4uZmxleHNsaWRlciBhOmFjdGl2ZSxcbi5mbGV4LWNvbnRhaW5lciBhOmZvY3VzLFxuLmZsZXhzbGlkZXIgYTpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuLnNsaWRlcyxcbi5mbGV4LWNvbnRyb2wtbmF2LFxuLmZsZXgtZGlyZWN0aW9uLW5hdiB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vKiBGbGV4U2xpZGVyIE5lY2Vzc2FyeSBTdHlsZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi5mbGV4c2xpZGVyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi5mbGV4c2xpZGVyIC5zbGlkZXMgPiBsaSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyB9XG5cbi8qIEhpZGUgdGhlIHNsaWRlcyBiZWZvcmUgdGhlIEpTIGlzIGxvYWRlZC4gQXZvaWRzIGltYWdlIGp1bXBpbmcgKi9cbi5mbGV4c2xpZGVyIC5zbGlkZXMgaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4uZmxleC1wYXVzZXBsYXkgc3BhbiB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbi8qIENsZWFyZml4IGZvciB0aGUgLnNsaWRlcyBlbGVtZW50ICovXG4uc2xpZGVzOmFmdGVyIHtcbiAgY29udGVudDogXCIuXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjbGVhcjogYm90aDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICBsaW5lLWhlaWdodDogMDtcbiAgaGVpZ2h0OiAwOyB9XG5cbmh0bWxbeG1sbnNdIC5zbGlkZXMge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4qIGh0bWwgLnNsaWRlcyB7XG4gIGhlaWdodDogMSU7IH1cblxuLyogTm8gSmF2YVNjcmlwdCBGYWxsYmFjayAqL1xuLyogSWYgeW91IGFyZSBub3QgdXNpbmcgYW5vdGhlciBzY3JpcHQsIHN1Y2ggYXMgTW9kZXJuaXpyLCBtYWtlIHN1cmUgeW91XG4gKiBpbmNsdWRlIGpzIHRoYXQgZWxpbWluYXRlcyB0aGlzIGNsYXNzIG9uIHBhZ2UgbG9hZCAqL1xuLm5vLWpzIC5zbGlkZXMgPiBsaTpmaXJzdC1jaGlsZCB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qIEZsZXhTbGlkZXIgRGVmYXVsdCBUaGVtZVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLmZsZXhzbGlkZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDRweCBzb2xpZCAjZmZmO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4O1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDtcbiAgLW8tYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHpvb206IDE7IH1cblxuLmZsZXhzbGlkZXIgLnNsaWRlcyB7XG4gIHpvb206IDE7IH1cblxuLmZsZXhzbGlkZXIgLnNsaWRlcyA+IGxpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi8qIFN1Z2dlc3RlZCBjb250YWluZXIgZm9yIFwiU2xpZGVcIiBhbmltYXRpb24gc2V0dXBzLiBDYW4gcmVwbGFjZSB0aGlzIHdpdGggeW91ciBvd24sIGlmIHlvdSB3aXNoICovXG4uZmxleC1jb250YWluZXIge1xuICB6b29tOiAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLyogQ2FwdGlvbiBzdHlsZSAqL1xuLyogSUUgcmdiYSgpIGhhY2sgKi9cbi5mbGV4LWNhcHRpb24ge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jNEMwMDAwMDAsZW5kQ29sb3JzdHI9IzRDMDAwMDAwKTtcbiAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jNEMwMDAwMDAsZW5kQ29sb3JzdHI9IzRDMDAwMDAwKTtcbiAgem9vbTogMTsgfVxuXG4uZmxleC1jYXB0aW9uIHtcbiAgd2lkdGg6IDk2JTtcbiAgcGFkZGluZzogMiU7XG4gIG1hcmdpbjogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7IH1cblxuLyogRGlyZWN0aW9uIE5hdiAqL1xuLmZsZXgtZGlyZWN0aW9uLW5hdiB7XG4gIGhlaWdodDogMDsgfVxuXG4uZmxleC1kaXJlY3Rpb24tbmF2IGxpIGEge1xuICB3aWR0aDogNTJweDtcbiAgaGVpZ2h0OiA1MnB4O1xuICBtYXJnaW46IC0xM3B4IDAgMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6IHVybCh0aGVtZS9iZ19kaXJlY3Rpb25fbmF2LnBuZykgbm8tcmVwZWF0O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtaW5kZW50OiAtOTk5ZW07IH1cblxuLmZsZXgtZGlyZWN0aW9uLW5hdiBsaSAubmV4dCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IC01MnB4IDA7XG4gIHJpZ2h0OiAtMjFweDsgfVxuXG4uZmxleC1kaXJlY3Rpb24tbmF2IGxpIC5wcmV2IHtcbiAgbGVmdDogLTIwcHg7IH1cblxuLmZsZXgtZGlyZWN0aW9uLW5hdiBsaSAuZGlzYWJsZWQge1xuICBvcGFjaXR5OiAuMztcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTtcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XG5cbi8qIENvbnRyb2wgTmF2ICovXG4uZmxleC1jb250cm9sLW5hdiB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4uZmxleC1jb250cm9sLW5hdiBsaSB7XG4gIG1hcmdpbjogMCAwIDAgNXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHpvb206IDE7XG4gICpkaXNwbGF5OiBpbmxpbmU7IH1cblxuLmZsZXgtY29udHJvbC1uYXYgbGk6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW46IDA7IH1cblxuLmZsZXgtY29udHJvbC1uYXYgbGkgYSB7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kOiB1cmwodGhlbWUvYmdfY29udHJvbF9uYXYucG5nKSBuby1yZXBlYXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1pbmRlbnQ6IC05OTllbTsgfVxuXG4uZmxleC1jb250cm9sLW5hdiBsaSBhOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTNweDsgfVxuXG4uZmxleC1jb250cm9sLW5hdiBsaSBhLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgLTI2cHg7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4uZmxleHNsaWRlciB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDsgfVxuXG4uZmxleC1jb250cm9sLW5hdiB7XG4gIHBvc2l0aW9uOiBpbmhlcml0OyB9XG5cbi5wZy1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7IH1cblxuLnBnLXNsaWRlci1uYXZpZ2F0aW9uIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogNy41cHg7XG4gIHBhZGRpbmctYm90dG9tOiA3LjVweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM5NmM5M2Y7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTZjOTNmOyB9XG5cbi5wZy1zbGlkZXItY29udHJvbHMtY29udGFpbmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBwYWRkaW5nOiAwIDQwcHggMCA0MHB4O1xuICBtYXgtd2lkdGg6IDgwJTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnBnLXNsaWRlci1jb250cm9scy1jb250YWluZXIge1xuICAgICAgcGFkZGluZzogMDsgfSB9XG4gIC5wZy1zbGlkZXItY29udHJvbHMtY29udGFpbmVyID4gLmZsZXgtY29udHJvbC1uYXYgPiAqIHtcbiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgICAucGctc2xpZGVyLWNvbnRyb2xzLWNvbnRhaW5lciA+IC5mbGV4LWNvbnRyb2wtbmF2ID4gKiA+IGEge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjtcbiAgICAgIHBhZGRpbmc6IDVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDI3cHg7XG4gICAgICBoZWlnaHQ6IDI3cHg7XG4gICAgICBmb250LXNpemU6IDA7IH1cbiAgICAgIC5wZy1zbGlkZXItY29udHJvbHMtY29udGFpbmVyID4gLmZsZXgtY29udHJvbC1uYXYgPiAqID4gYS5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM5NmM5M2Y7IH1cbiAgICAgICAgLnBnLXNsaWRlci1jb250cm9scy1jb250YWluZXIgPiAuZmxleC1jb250cm9sLW5hdiA+ICogPiBhLmFjdGl2ZTpiZWZvcmUge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5NmM5M2Y7IH1cbiAgICAgIC5wZy1zbGlkZXItY29udHJvbHMtY29udGFpbmVyID4gLmZsZXgtY29udHJvbC1uYXYgPiAqID4gYTpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjNDRjOGY1OyB9XG5cbi5mbGV4LW5leHQsIC5mbGV4LXByZXYge1xuICBmb250LXNpemU6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLmZsZXgtbmV4dCwgLmZsZXgtcHJldiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLmZsZXgtcHJldiB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cblxuLmZsZXgtY2FwdGlvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA3LjVweDtcbiAgbGVmdDogNjAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiA0MCU7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6ICM0NGM4ZjU7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBsaW5lLWhlaWdodDogMThweDsgfVxuICAuZmxleC1jYXB0aW9uICoge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLmZsZXgtY2FwdGlvbiB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5mbGV4LWNhcHRpb24ge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbiNmYW5jeWJveC1jbG9zZSB7XG4gIHdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICB0b3A6IDVweCAhaW1wb3J0YW50O1xuICByaWdodDogLTIxcHggIWltcG9ydGFudDtcbiAgd2lkdGg6IDMwcHggIWltcG9ydGFudDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOyB9XG5cbmRpdi5naS1saWdodGJveCB7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG5cbi5mbGV4LWNhcHRpb24uZmxleC1jYXB0aW9uLS1tb2JpbGUge1xuICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICB3aWR0aDogMTAwJTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLmZsZXgtY2FwdGlvbi5mbGV4LWNhcHRpb24tLW1vYmlsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgICBwYWRkaW5nOiA4cHg7XG4gICAgICBmbG9hdDogbGVmdDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAuZmxleC1jYXB0aW9uLmZsZXgtY2FwdGlvbi0tbW9iaWxlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICBwb3NpdGlvbjogc3RhdGljOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI1cHgpIHtcbiAgICAuZmxleC1jYXB0aW9uLmZsZXgtY2FwdGlvbi0tbW9iaWxlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbi5zbGlkZXMgPiAqID4gaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4ucGctc2xpZGVyX19iYW5kIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA5MDAwO1xuICByaWdodDogLTEycHg7XG4gIHRvcDogMThweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnBnLXNsaWRlcl9fYmFuZCB7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodDtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsgfSB9XG5cbi5wZy1zbGlkZXJfX2JhbmRfX2ljb24ge1xuICBwYWRkaW5nLXRvcDogMjRweDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4OyB9XG5cbi5sb2dvIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcmlnaHQ6IDEzN3B4O1xuICBib3JkZXI6IDJweCBzb2xpZCAjNDRjOGY1O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiAxNXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5sb2dvIHtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgbWFyZ2luOiAxNXB4IDcuNXB4O1xuICAgICAgcG9zaXRpb246IGluaGVyaXQ7XG4gICAgICBwYWRkaW5nOiAwOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5sb2dvIHtcbiAgICAgIHdpZHRoOiAzMyU7XG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogMTZweDsgfSB9XG5cbi5vYmVyZU5hdmlUeXA0IHtcbiAgcmlnaHQ6IDEycHg7XG4gIHRvcDogMzBweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLm9iZXJlTmF2aVR5cDQge1xuICAgICAgcmlnaHQ6IDIwcHg7XG4gICAgICB0b3A6IDFweDsgfSB9XG5cbi5zcHJhY2hkcm9wZG93biB7XG4gIHBhZGRpbmc6IDVweDtcbiAgYmFja2dyb3VuZDogIzQ0YzhmNTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgbWFyZ2luLXRvcDogLTRweDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIC5zcHJhY2hkcm9wZG93bjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEzcHg7XG4gICAgdG9wOiAyMHB4OyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAuc3ByYWNoZHJvcGRvd24ge1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAuc3ByYWNoZHJvcGRvd24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTlweDtcbiAgICAgIG1hcmdpbi10b3A6IC03cHg7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7IH1cbiAgICAgIC5zcHJhY2hkcm9wZG93bjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5sYW5ndWFnZXNlbGVjdG9yRm9ybSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1NC4xNTNweDtcbiAgICBoZWlnaHQ6IDQ5LjgxMXB4OyB9IH1cblxuLmxhbmd1YWdlc2VsZWN0b3JGb3JtOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0xMDAlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAubGFuZ3VhZ2VzZWxlY3RvckZvcm06YWZ0ZXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi5sYW5ndWFnZXNlbGVjdG9yU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgd2lkdGg6IDEwOHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM0NGM4ZjU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5sYW5ndWFnZXNlbGVjdG9yU2VsZWN0IHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB3aWR0aDogNTBweDtcbiAgICAgIGhlaWdodDogNTBweDsgfSB9XG5cbiN3cmFwY29udGVudFR5cDQge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4jaGVhZGVyVHlwNCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBtYXgtd2lkdGg6IDk4MHB4O1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGluaGVyaXQ7XG4gIG1hcmdpbi10b3A6IDMwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICNoZWFkZXJUeXA0IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIG1hcmdpbi10b3A6IDA7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgI2hlYWRlclR5cDQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcGFkZGluZzogMCAxNXB4IDAgMTVweDsgfSB9XG5cbi5oYXVwdG5hdmlKb2tlcjIge1xuICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2xvZ28tZXJmaW5kZXJsYW5kLnBuZykgbm8tcmVwZWF0O1xuICB3aWR0aDogMTc1cHg7XG4gIGhlaWdodDogMjA5cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiA5MDAwO1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC5oYXVwdG5hdmlKb2tlcjIge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAuaGF1cHRuYXZpSm9rZXIyIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH0gfVxuXG4ubG9nb0pva2VyMSB7XG4gIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvbG9nby1lcmZpbmRlcmxhbmQucG5nKSBuby1yZXBlYXQ7XG4gIHdpZHRoOiAxNzVweDtcbiAgaGVpZ2h0OiAyMDlweDtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luOiAyMHB4IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLmxvZ29Kb2tlcjEge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4uaGF1cHRuYXZpSm9rZXIzIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIHotaW5kZXg6IDUwMDA7XG4gIGRpc3BsYXk6IG5vbmU7IH1cbiAgLmhhdXB0bmF2aUpva2VyMy5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbiNoYXVwdG5hdmkge1xuICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIG1heC13aWR0aDogaW5oZXJpdDtcbiAgbGVmdDogaW5oZXJpdDtcbiAgei1pbmRleDogNzAwMDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgI2hhdXB0bmF2aSB7XG4gICAgICBtaW4taGVpZ2h0OiBpbmhlcml0O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgI2hhdXB0bmF2aSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMzMlO1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfSB9XG4gICNoYXVwdG5hdmkgPiB1bCB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICM0NGM4ZjU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDE3JTtcbiAgICB0b3A6IDE2MHB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgI2hhdXB0bmF2aSA+IHVsIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0b3A6IGF1dG87IH0gfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICNoYXVwdG5hdmkgPiB1bCB7XG4gICAgICAgIGhlaWdodDogMzNweDtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiA4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gICAgICAgIHotaW5kZXg6IDcwMDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHRvcDogYXV0bzsgfVxuICAgICAgICAjaGF1cHRuYXZpID4gdWwuYWN0aXZlIHtcbiAgICAgICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDMwcHg7XG4gICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDMwcHg7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfVxuICAgICAgICAgICNoYXVwdG5hdmkgPiB1bC5hY3RpdmUgPiBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICAjaGF1cHRuYXZpID4gdWw6aG92ZXIgbGkge1xuICAgICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgICAjaGF1cHRuYXZpID4gdWwgPiBsaSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBwYWRkaW5nOiAwIDhweCAwIDhweDtcbiAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyOyB9XG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICAgICNoYXVwdG5hdmkgPiB1bCA+IGxpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgICAjaGF1cHRuYXZpID4gdWwgPiBsaSB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQ0YzhmNTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxuICAgICAgICAgICNoYXVwdG5hdmkgPiB1bCA+IGxpID4gYSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgICAgICAgI2hhdXB0bmF2aSA+IHVsID4gbGkuYWN0aXZlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNXB4KSB7XG4gICAgICAgICNoYXVwdG5hdmkgPiB1bCA+IGxpIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTE4cHg7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDRjOGY1O1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0gfVxuICAgICAgI2hhdXB0bmF2aSA+IHVsID4gbGk6aG92ZXIge1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgYmFja2dyb3VuZDogIzk2YzkzZjsgfVxuICAgICAgI2hhdXB0bmF2aSA+IHVsID4gbGkuYWN0aXZlIHtcbiAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwIDhweCAwIDhweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgfVxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgI2hhdXB0bmF2aSA+IHVsID4gbGkuYWN0aXZlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xOHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzk2YzkzZjsgfSB9XG4gICAgICAgICNoYXVwdG5hdmkgPiB1bCA+IGxpLmFjdGl2ZSA+IGEsICNoYXVwdG5hdmkgPiB1bCA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiAjZmZmOyB9XG4gICAgICAjaGF1cHRuYXZpID4gdWwgPiBsaSA+IGEge1xuICAgICAgICBsaW5lLWhlaWdodDogMjtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICBjb2xvcjogI2ZmZjsgfVxuIiwiLy8gQWRkIHlvdXIgc2V0dGluZ3MgaGVyZVxuXG4kYmFzZS1mb250LXNpemU6ICAgIDE1cHg7XG4kYmFzZS1saW5lLWhlaWdodDogIDIwcHg7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiRiYXNlLXVpLWNvbG9yOiAgICAgI2NjYyFkZWZhdWx0O1xuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkUkVTUE9OU0lWRVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBUZWxsIGludWl0LmNzcyB3aGVuIGJyZWFrcG9pbnRzIHN0YXJ0LlxuICovXG4kbGFwLXN0YXJ0OiAgICAgICAgIDc2OHB4O1xuJGRlc2stc3RhcnQ6ICAgICAgICAxMDI1cHg7XG4kZGVzay13aWRlLXN0YXJ0OiAgIDE0NDBweDtcblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJEZPTlQtU0laRVNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEZvbnQtc2l6ZXMgKGluIHBpeGVscykuIFJlZmVyIHRvIHJlbGV2YW50IHNlY3Rpb25zIGZvciB0aGVpciBpbXBsZW1lbnRhdGlvbnMuXG4gKi9cbiRnaWdhLXNpemU6ICAgICAgICAgOTZweCFkZWZhdWx0O1xuJG1lZ2Etc2l6ZTogICAgICAgICA3MnB4IWRlZmF1bHQ7XG4ka2lsby1zaXplOiAgICAgICAgIDQ4cHghZGVmYXVsdDtcblxuJGgxLXNpemU6ICAgICAgICAgICAzM3B4IWRlZmF1bHQ7IC8vIC5hbHBoYVxuJGgyLXNpemU6ICAgICAgICAgICAyNXB4IWRlZmF1bHQ7IC8vIC5iZXRhXG4kaDMtc2l6ZTogICAgICAgICAgIDIzcHghZGVmYXVsdDsgLy8gLmdhbW1hXG4kaDQtc2l6ZTogICAgICAgICAgIDIycHghZGVmYXVsdDsgLy8gLmRlbHRhXG4kaDUtc2l6ZTogICAgICAgICAgIDE2cHghZGVmYXVsdDsgLy8gLmVwc2lsb25cbiRoNi1zaXplOiAgICAgICAgICAgMTVweCFkZWZhdWx0OyAvLyAuemV0YVxuXG4kbWlsbGktc2l6ZTogICAgICAgIDEycHghZGVmYXVsdDtcbiRtaWNyby1zaXplOiAgICAgICAgOHB4IWRlZmF1bHQ7XG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRCUkFORFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogQnJhbmQgc3R1ZmZcbiAqL1xuJGJyYW5kLWNvbG9yOiAgICAgICAjMDBjZTVlIWRlZmF1bHQ7XG4kYnJhbmQtZmFjZTogICAgICAgIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZiFkZWZhdWx0O1xuXG4vKipcbiAqIEhvdyBiaWcgd291bGQgeW91IGxpa2Ugcm91bmQgY29ybmVycyB0byBiZSBieSBkZWZhdWx0P1xuICovXG4kYnJhbmQtcm91bmQ6ICAgICAgICA0cHghZGVmYXVsdDtcblxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRPQkpFQ1RTIEFORCBBQlNUUkFDVElPTlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFdoaWNoIG9iamVjdHMgYW5kIGFic3RyYWN0aW9ucyB3b3VsZCB5b3UgbGlrZSB0byB1c2U/XG4gKi9cbiR1c2UtZ3JpZHM6ICAgICAgICAgdHJ1ZTtcbiR1c2UtZmxleGJveDogICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtY29sdW1uczogICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbmF2OiAgICAgICAgICAgdHJ1ZTtcbiR1c2Utb3B0aW9uczogICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtcGFnaW5hdGlvbjogICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtYnJlYWRjcnVtYjogICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbWVkaWE6ICAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbWFyZ2luYWxpYTogICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtaXNsYW5kOiAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtYmxvY2stbGlzdDogICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbWF0cml4OiAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2Utc3BsaXQ6ICAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtdGhpcy1vci10aGlzOiAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbGluay1jb21wbGV4OiAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtZmx5b3V0OiAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtYXJyb3dzOiAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2Utc3ByaXRlOiAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtaWNvbi10ZXh0OiAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtYmVhdXRvbnM6ICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtbG96ZW5nZXM6ICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtcnVsZXM6ICAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2Utc3RhdHM6ICAgICAgICAgZmFsc2UhZGVmYXVsdDtcbiR1c2UtZ3JleWJveDogICAgICAgZmFsc2UhZGVmYXVsdDtcblxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRGUkFNRVdPUktcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGludWl0LmNzcyB3aWxsIHdvcmsgdGhlc2UgbmV4dCBvbmVzIG91dCBmb3IgdXNlIHdpdGhpbiB0aGUgZnJhbWV3b3JrLlxuICpcbiAqIEFzc2lnbiBvdXIgYCRiYXNlLWxpbmUtaGVpZ2h0YCB0byBhIG5ldyBzcGFjaW5nIHZhciBmb3IgbW9yZSB0cmFuc3BhcmVuY3kuXG4gKi9cbiRiYXNlLXNwYWNpbmctdW5pdDogMTVweDtcbiRoYWxmLXNwYWNpbmctdW5pdDogJGJhc2Utc3BhY2luZy11bml0IC8gMjtcbiRsaW5lLWhlaWdodC1yYXRpbzogJGJhc2UtbGluZS1oZWlnaHQgLyAkYmFzZS1mb250LXNpemU7XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBMT0NBTCBWQVJTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqXG4qIENPTE9SU1xuKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiRjb2xvci1jaTogIzQ0YzhmNSFkZWZhdWx0O1xuJGNvbG9yLWNpLTJuZDogIzk2YzkzZiFkZWZhdWx0O1xuJGNvbG9yLWJsYWNrOiAjMDAwIWRlZmF1bHQ7XG4kY29sb3Itd2hpdGU6ICNmZmYhZGVmYXVsdDtcbiRjb2xvci10eHQ6ICRjb2xvci1ibGFjaztcbiRjb2xvci1oaWdobGlnaHQ6ICM3OTE2NjchZGVmYXVsdDtcbiRjb2xvci1ncmV5LWxpZ2h0OiAjZTRlNmU3IWRlZmF1bHQ7XG5cbiRjb2xvcnM6IChcblx0Yy0tY2kgJGNvbG9yLWNpLFxuXHRjLS1jaS0ybmQgJGNvbG9yLWNpLTJuZCxcblx0Yy0tYmxhY2sgJGNvbG9yLWJsYWNrLFxuXHRjLS13aGl0ZSAkY29sb3Itd2hpdGUsXG5cdGMtLXR4dCAkY29sb3ItdHh0LFxuXHRjLS1oaWdobGlnaHQgJGNvbG9yLWhpZ2hsaWdodCxcblx0Yy0tZ3JleS1saWdodCAkY29sb3ItZ3JleS1saWdodFxuKTtcblxuXG5AZWFjaCAkY29sb3IgaW4gJGNvbG9ycyB7XG4gICAgLiN7bnRoKCRjb2xvciwgMSl9IHtcbiAgICAgIGNvbG9yOiBudGgoJGNvbG9yLCAyKTtcbiAgICB9XG5cdC5iZy0je250aCgkY29sb3IsIDEpfSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJGNvbG9yLCAyKTtcbiAgICB9XG59XG5cblxuXG5cblxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkREVGQVVMVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIGludWl0LmNzc+KAmSBkZWZhdWx0IHZhcmlhYmxlcy4gUmVkZWZpbmUgdGhlc2UgaW4geW91ciBgX3ZhcnMuc2Nzc2AgZmlsZSAoZm91bmRcbiAqIGluIHRoZSBpbnVpdC5jc3Mtd2ViLXRlbXBsYXRlKSB0byBvdmVycmlkZSB0aGVtLlxuICovXG5cblxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkREVCVUdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIERlYnVnIG1vZGUgd2lsbCB2aXN1YWxseSBoaWdobGlnaHQgYW55IHBvdGVudGlhbCBtYXJrdXAvYWNjZXNzaWJpbGl0eSBxdWlya3NcbiAqIGluIHRoZSBicm93c2VyLiBTZXQgdG8gYHRydWVgIG9yIGBmYWxzZWAuXG4gKi9cbiRkZWJ1Zy1tb2RlOiAgICAgICAgZmFsc2UhZGVmYXVsdDtcblxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRCT1JERVItQk9YXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBEbyB5b3Ugd2FudCBhbGwgZWxlbWVudHMgdG8gYWRvcHQgYGJveC1zaXppbmc6Ym9yZGVyLWJveDtgIGFzIHBlclxuICogcGF1bGlyaXNoLmNvbS8yMDEyL2JveC1zaXppbmctYm9yZGVyLWJveC1mdHcgP1xuICovXG4kZ2xvYmFsLWJvcmRlci1ib3g6IHRydWUhZGVmYXVsdDtcblxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRCQVNFXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBCYXNlIHN0dWZmXG4gKi9cbiRiYXNlLWZvbnQtc2l6ZTogICAgMTZweCFkZWZhdWx0O1xuJGJhc2UtbGluZS1oZWlnaHQ6ICAyNHB4IWRlZmF1bHQ7XG5cbi8qKlxuICogQmFzZSBmb250LWZhbWlseS5cbiAqL1xuJGJhc2UtZm9udC1mYW1pbHk6ICBzYW5zLXNlcmlmIWRlZmF1bHQ7XG5cbi8qKlxuICogRGVmYXVsdCBjb2xvdXIgZm9yIG9iamVjdHPigJkgYm9yZGVycyBldGMuXG4gKi9cbiRiYXNlLXVpLWNvbG9yOiAgICAgI2NjYyFkZWZhdWx0O1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFJFU1BPTlNJVkVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFJlc3BvbnNpdmVuZXNzP1xuICovXG4kcmVzcG9uc2l2ZTogICAgICAgIHRydWUhZGVmYXVsdDtcblxuLyoqXG4gKiBSZXNwb25zaXZlbmVzcyBmb3Igd2lkZXNjcmVlbi9oaWdoIHJlc29sdXRpb24gZGVza3RvcCBtb25pdG9ycyBhbmQgYmV5b25kP1xuICogTm90ZTogYCRyZXNwb25zaXZlYCB2YXJpYWJsZSBhYm92ZSBtdXN0IGJlIHNldCB0byB0cnVlIGJlZm9yZSBlbmFibGluZyB0aGlzLlxuICovXG4kcmVzcG9uc2l2ZS1leHRyYTogIGZhbHNlIWRlZmF1bHQ7XG5cbi8qKlxuICogUmVzcG9uc2l2ZSBwdXNoIGFuZCBwdWxsIHByb2R1Y2UgYSBMT1Qgb2YgY29kZSwgb25seSB0dXJuIHRoZW0gb24gaWYgeW91XG4gKiBkZWZpbml0ZWx5IG5lZWQgdGhlbS5cbiAqL1xuJHB1c2g6ICAgICAgICAgICAgICBmYWxzZSFkZWZhdWx0O1xuLyoqXG4gKiBOb3RlOiBgJHB1c2hgIHZhcmlhYmxlIGFib3ZlIG11c3QgYmUgc2V0IHRvIHRydWUgYmVmb3JlIGVuYWJsaW5nIHRoZXNlLlxuICovXG4kcGFsbS1wdXNoOiAgICAgICAgIGZhbHNlIWRlZmF1bHQ7XG4kbGFwLXB1c2g6ICAgICAgICAgIGZhbHNlIWRlZmF1bHQ7XG4kbGFwLWFuZC11cC1wdXNoOiAgIGZhbHNlIWRlZmF1bHQ7XG4kcG9ydGFibGUtcHVzaDogICAgIGZhbHNlIWRlZmF1bHQ7XG4kZGVzay1wdXNoOiAgICAgICAgIGZhbHNlIWRlZmF1bHQ7XG5cbiRwdWxsOiAgICAgICAgICAgICAgZmFsc2UhZGVmYXVsdDtcbi8qKlxuICogTm90ZTogYCRwdWxsYCB2YXJpYWJsZSBhYm92ZSBtdXN0IGJlIHNldCB0byB0cnVlIGJlZm9yZSBlbmFibGluZyB0aGVzZS5cbiAqL1xuJHBhbG0tcHVsbDogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJGxhcC1wdWxsOiAgICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJGxhcC1hbmQtdXAtcHVsbDogICBmYWxzZSFkZWZhdWx0O1xuJHBvcnRhYmxlLXB1bGw6ICAgICBmYWxzZSFkZWZhdWx0O1xuJGRlc2stcHVsbDogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuXG4vKipcbiAqIFRlbGwgaW51aXQuY3NzIHdoZW4gYnJlYWtwb2ludHMgc3RhcnQuXG4gKi9cbiRsYXAtc3RhcnQ6ICAgICAgICAgNDgxcHghZGVmYXVsdDtcbiRkZXNrLXN0YXJ0OiAgICAgICAgMTAyNHB4IWRlZmF1bHQ7XG4kZGVzay13aWRlLXN0YXJ0OiAgIDEyMDBweCFkZWZhdWx0O1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJEZPTlQtU0laRVNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEZvbnQtc2l6ZXMgKGluIHBpeGVscykuIFJlZmVyIHRvIHJlbGV2YW50IHNlY3Rpb25zIGZvciB0aGVpciBpbXBsZW1lbnRhdGlvbnMuXG4gKi9cbiRnaWdhLXNpemU6ICAgICAgICAgOTZweCFkZWZhdWx0O1xuJG1lZ2Etc2l6ZTogICAgICAgICA3MnB4IWRlZmF1bHQ7XG4ka2lsby1zaXplOiAgICAgICAgIDQ4cHghZGVmYXVsdDtcblxuJGgxLXNpemU6ICAgICAgICAgICAzNnB4IWRlZmF1bHQ7IC8vIC5hbHBoYVxuJGgyLXNpemU6ICAgICAgICAgICAzMHB4IWRlZmF1bHQ7IC8vIC5iZXRhXG4kaDMtc2l6ZTogICAgICAgICAgIDI0cHghZGVmYXVsdDsgLy8gLmdhbW1hXG4kaDQtc2l6ZTogICAgICAgICAgIDIwcHghZGVmYXVsdDsgLy8gLmRlbHRhXG4kaDUtc2l6ZTogICAgICAgICAgIDE2cHghZGVmYXVsdDsgLy8gLmVwc2lsb25cbiRoNi1zaXplOiAgICAgICAgICAgMTRweCFkZWZhdWx0OyAvLyAuemV0YVxuXG4kbWlsbGktc2l6ZTogICAgICAgIDEycHghZGVmYXVsdDtcbiRtaWNyby1zaXplOiAgICAgICAgMTBweCFkZWZhdWx0O1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFFVT1RFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRW5nbGlzaCBxdW90ZSBtYXJrcz9cbiAqL1xuJGVuZ2xpc2gtcXVvdGVzOiAgICB0cnVlIWRlZmF1bHQ7XG5cbi8qKlxuICogSWYgeW91IHdhbnQgRW5nbGlzaCBxdW90ZXMgdGhlbiBwbGVhc2UgZG8gbm90IGVkaXQgdGhlc2U7IHRoZXnigJlyZSBvbmx5IGhlcmVcbiAqIGJlY2F1c2UgU2FzcyBuZWVkcyB0aGVtLlxuICovXG4kb3Blbi1xdW90ZTogICAgbnVsbDtcbiRjbG9zZS1xdW90ZTogICBudWxsO1xuXG4vKipcbiAqIElmIHlvdSBuZWVkIG5vbi1FbmdsaXNoIHF1b3RlcywgcGxlYXNlIGFsdGVyIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFjY29yZGluZ2x5OlxuICovXG5AaWYgJGVuZ2xpc2gtcXVvdGVzICE9IHRydWV7XG4gICAgJG9wZW4tcXVvdGU6ICAgIFxcMDBBQjtcbiAgICAkY2xvc2UtcXVvdGU6ICAgXFwwMEJCO1xufVxuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJEJSQU5EXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBCcmFuZCBzdHVmZlxuICovXG4kYnJhbmQtY29sb3I6ICAgICAgICM0YThlYzIhZGVmYXVsdDtcbiRicmFuZC1mYWNlOiAgICAgICAgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmIWRlZmF1bHQ7XG5cbi8qKlxuICogSG93IGJpZyB3b3VsZCB5b3UgbGlrZSByb3VuZCBjb3JuZXJzIHRvIGJlIGJ5IGRlZmF1bHQ/XG4gKi9cbiRicmFuZC1yb3VuZDogICAgICAgIDRweCFkZWZhdWx0O1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJE9CSkVDVFMgQU5EIEFCU1RSQUNUSU9OU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2hpY2ggb2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zIHdvdWxkIHlvdSBsaWtlIHRvIHVzZT9cbiAqL1xuJHVzZS1ncmlkczogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1mbGV4Ym94OiAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1jb2x1bW5zOiAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1uYXY6ICAgICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1vcHRpb25zOiAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1wYWdpbmF0aW9uOiAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1icmVhZGNydW1iOiAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1tZWRpYTogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1tYXJnaW5hbGlhOiAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1pc2xhbmQ6ICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1ibG9jay1saXN0OiAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1tYXRyaXg6ICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1zcGxpdDogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS10aGlzLW9yLXRoaXM6ICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1saW5rLWNvbXBsZXg6ICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1mbHlvdXQ6ICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1hcnJvd3M6ICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1zcHJpdGU6ICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1pY29uLXRleHQ6ICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1iZWF1dG9uczogICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1sb3plbmdlczogICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1ydWxlczogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1zdGF0czogICAgICAgICBmYWxzZSFkZWZhdWx0O1xuJHVzZS1ncmV5Ym94OiAgICAgICBmYWxzZSFkZWZhdWx0O1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJEZSQU1FV09SS1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogaW51aXQuY3NzIHdpbGwgd29yayB0aGVzZSBuZXh0IG9uZXMgb3V0IGZvciB1c2Ugd2l0aGluIHRoZSBmcmFtZXdvcmsuXG4gKlxuICogQXNzaWduIG91ciBgJGJhc2UtbGluZS1oZWlnaHRgIHRvIGEgbmV3IHNwYWNpbmcgdmFyIGZvciBtb3JlIHRyYW5zcGFyZW5jeS5cbiAqL1xuJGJhc2Utc3BhY2luZy11bml0OiAkYmFzZS1saW5lLWhlaWdodCFkZWZhdWx0O1xuJGhhbGYtc3BhY2luZy11bml0OiAkYmFzZS1zcGFjaW5nLXVuaXQgLyAyIWRlZmF1bHQ7XG4kbGluZS1oZWlnaHQtcmF0aW86ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplO1xuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICBJTlVJVC5DU1NcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKiEqXG4gKlxuICogaW51aXRjc3MuY29tIC0tIEBpbnVpdGNzcyAtLSBAY3Nzd2l6YXJkcnlcbiAqXG4gKi9cbi8qKlxuICogaW51aXQuY3NzIGFjdHMgYXMgYSBiYXNlIHN0eWxlc2hlZXQgd2hpY2ggeW91IHNob3VsZCBleHRlbmQgd2l0aCB5b3VyIG93blxuICogdGhlbWUgc3R5bGVzaGVldC5cbiAqXG4gKiBpbnVpdC5jc3MgYWltcyB0byBkbyB0aGUgaGVhdnkgbGlmdGluZzsgc29ydGluZyBvYmplY3RzIGFuZCBhYnN0cmFjdGlvbnMsXG4gKiBkZXNpZ24gcGF0dGVybnMgYW5kIGZpZGRseSBiaXRzIG9mIENTUywgd2hpbHN0IGxlYXZpbmcgYXMgbXVjaCBkZXNpZ24gYXNcbiAqIHBvc3NpYmxlIHRvIHlvdS4gaW51aXQuY3NzIGlzIHRoZSBzY2FmZm9sZGluZyB0byB5b3VyIGRlY29yYXRvci5cbiAqXG4gKiBUaGlzIHN0eWxlc2hlZXQgaXMgaGVhdmlseSBkb2N1bWVudGVkIGFuZCBjb250YWlucyBsb3RzIG9mIGNvbW1lbnRzLCBwbGVhc2VcbiAqIHRha2UgY2FyZSB0byByZWFkIGFuZCByZWZlciB0byB0aGVtIGFzIHlvdSBidWlsZC4gRm9yIGZ1cnRoZXIgc3VwcG9ydCBwbGVhc2VcbiAqIHR3ZWV0IGF0IEBpbnVpdGNzcy5cbiAqXG4gKiBPd2luZyB0byB0aGUgYW1vdW50IG9mIGNvbW1lbnRzIHBsZWFzZSBvbmx5IGV2ZXIgdXNlIG1pbmlmaWVkIENTUyBpblxuICogcHJvZHVjdGlvbi4gVGhpcyBmaWxlIGlzIHB1cmVseSBhIGRldiBkb2N1bWVudC5cbiAqXG4gKiBUaGUgdGFibGUgb2YgY29udGVudHMgYmVsb3cgbWFwcyB0byBzZWN0aW9uIHRpdGxlcyBvZiB0aGUgc2FtZSBuYW1lLCB0byBqdW1wXG4gKiB0byBhbnkgc2VjdGlvbiBzaW1wbHkgcnVuIGEgZmluZCBmb3IgJFtTRUNUSU9OLVRJVExFXS5cbiAqXG4gKiBNb3N0IG9iamVjdHMgYW5kIGFic3RyYWN0aW9ucyBjb21lIHdpdGggYSBjaHVuayBvZiBtYXJrdXAgdGhhdCB5b3Ugc2hvdWxkIGJlXG4gKiBhYmxlIHRvIHBhc3RlIGludG8gYW55IHZpZXcgdG8gcXVpY2tseSBzZWUgaG93IHRoZSBDU1Mgd29ya3MgaW4gY29uanVuY3Rpb25cbiAqIHdpdGggdGhlIGNvcnJlY3QgSFRNTC5cbiAqXG4gKiBpbnVpdC5jc3MgaXMgd3JpdHRlbiB0byB0aGlzIHN0YW5kYXJkOiBnaXRodWIuY29tL2Nzc3dpemFyZHJ5L0NTUy1HdWlkZWxpbmVzXG4gKlxuICogTElDRU5TRVxuICpcbiAqIENvcHlyaWdodCAyMDEzIEhhcnJ5IFJvYmVydHNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqIFRoYW5rIHlvdSBmb3IgY2hvb3NpbmcgaW51aXQuY3NzLiBNYXkgeW91ciB3ZWIgZm9udHMgcmVuZGVyIHBlcmZlY3RseS5cbiAqL1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBDT05URU5UUy4uLi4uLi4uLi4uLllvdeKAmXJlIHJlYWRpbmcgaXQhXG4gKiBXQVJOSU5HLi4uLi4uLi4uLi4uLkhlcmUgYmUgZHJhZ29ucyFcbiAqIElNUE9SVFMuLi4uLi4uLi4uLi4uQmVnaW4gaW1wb3J0aW5nIHRoZSBzZWN0aW9ucyBiZWxvd1xuICpcbiAqIE1JWElOUy4uLi4uLi4uLi4uLi4uU3VwZXItc2ltcGxlIFNhc3Mgc3R1ZmZcbiAqIE5PUk1BTElaRS4uLi4uLi4uLi4ubm9ybWFsaXplLmNzc1xuICogUkVTRVQuLi4uLi4uLi4uLi4uLi5TZXQgc29tZSBkZWZhdWx0c1xuICogQ0xFQVJGSVguLi4uLi4uLi4uLi5cbiAqIFNIQVJFRC4uLi4uLi4uLi4uLi4uU2hhcmVkIGRlY2xhcmF0aW9uc1xuICpcbiAqIE1BSU4uLi4uLi4uLi4uLi4uLi4uSGlnaC1sZXZlbCBlbGVtZW50cyBsaWtlIGBodG1sYCwgYGJvZHlgLCBldGMuXG4gKiBIRUFESU5HUy4uLi4uLi4uLi4uLkRvdWJsZS1zdHJhbmRlZCBoZWFkaW5nIGhpZXJhcmNoeVxuICogUEFSQUdSQVBIUy4uLi4uLi4uLi5cbiAqIFNNQUxMUFJJTlQuLi4uLi4uLi4uU21hbGxlciB0ZXh0IGVsZW1lbnRzIGxpa2UgYHNtYWxsYFxuICogUVVPVEVTLi4uLi4uLi4uLi4uLi5cbiAqIENPREUuLi4uLi4uLi4uLi4uLi4uXG4gKiBMSVNUUy4uLi4uLi4uLi4uLi4uLlxuICogSU1BR0VTLi4uLi4uLi4uLi4uLi5cbiAqIFRBQkxFUy4uLi4uLi4uLi4uLi4uXG4gKiBGT1JNUy4uLi4uLi4uLi4uLi4uLlxuICpcbiAqIEdSSURTLi4uLi4uLi4uLi4uLi4uRmx1aWQsIHByb3BvcnRpb25hbCBhbmQgbmVzdGFibGUgZ3JpZHNcbiAqIEZMRVhCT1guLi4uLi4uLi4uLi4uQ3J1ZGVseSBlbXVsYXRlIGZsZXhib3hcbiAqIENPTFVNTlMuLi4uLi4uLi4uLi4uQ1NTMyBjb2x1bW5zXG4gKiBOQVYuLi4uLi4uLi4uLi4uLi4uLkEgc2ltcGxlIGFic3RyYWN0aW9uIHRvIHB1dCBhIGxpc3QgaW4gaG9yaXpvbnRhbCBuYXYgbW9kZVxuICogT1BUSU9OUy4uLi4uLi4uLi4uLi5Hcm91cGVkIG5hdiBpdGVtc1xuICogUEFHSU5BVElPTi4uLi4uLi4uLi5WZXJ5IHN0cmlwcGVkIGJhY2ssIGJhc2ljIHBhZ2luYXRvclxuICogQlJFQURDUlVNQi4uLi4uLi4uLi5TaW1wbGUgYnJlYWRjcnVtYiB0cmFpbCBvYmplY3RcbiAqIE1FRElBLi4uLi4uLi4uLi4uLi4uTWVkaWEgb2JqZWN0XG4gKiBNQVJHSU5BTElBLi4uLi4uLi4uLlNpbXBsZSBtYXJnaW5hbGlhIGNvbnRlbnRcbiAqIElTTEFORC4uLi4uLi4uLi4uLi4uQm94ZWQgb2ZmIGNvbnRlbnRcbiAqIEJMT0NLLUxJU1QuLi4uLi4uLi4uQmxvY2t5IGxpc3RzIG9mIGNvbnRlbnRcbiAqIE1BVFJJWC4uLi4uLi4uLi4uLi4uR3JpZGRlZCBsaXN0c1xuICogU1BMSVQuLi4uLi4uLi4uLi4uLi5BIHNpbXBsZSBzcGxpdC1pbi10d28gb2JqZWN0XG4gKiBUSElTLU9SLVRISVMuLi4uLi4uLk9wdGlvbnMgb2JqZWN0XG4gKiBMSU5LLUNPTVBMRVguLi4uLi4uLlxuICogRkxZT1VULi4uLi4uLi4uLi4uLi5GbHlvdXQtb24taG92ZXIgb2JqZWN0XG4gKiBBUlJPV1MuLi4uLi4uLi4uLi4uLkNTUyBhcnJvd3NcbiAqIFNQUklURS4uLi4uLi4uLi4uLi4uR2VuZXJpYyBzcHJpdGluZyBlbGVtZW50XG4gKiBJQ09OLVRFWFQuLi4uLi4uLi4uLkljb24gYW5kIHRleHQgY291cGxpbmdzXG4gKiBCRUFVVE9OUy4uLi4uLi4uLi4uLlVzZSB0aGUgYmVhdXRvbnMgbWljcm8gbGlicmFyeVxuICogTE9aRU5HRVMuLi4uLi4uLi4uLi5CYXNpYyBsb3plbmdlIHN0eWxlc1xuICogUlVMRVMuLi4uLi4uLi4uLi4uLi5Ib3Jpem9udGFsIHJ1bGVzXG4gKiBTVEFUUy4uLi4uLi4uLi4uLi4uLlNpbXBsZSBzdGF0cyBvYmplY3RcbiAqIEdSRVlCT1guLi4uLi4uLi4uLi4uV2lyZWZyYW1pbmcgc3R5bGVzXG4gKlxuICogV0lEVEhTLi4uLi4uLi4uLi4uLi5XaWR0aCBjbGFzc2VzIGZvciB1c2UgYWxvbmdzaWRlIHRoZSBncmlkIHN5c3RlbSBldGMuXG4gKiBQVVNILi4uLi4uLi4uLi4uLi4uLlB1c2ggY2xhc3NlcyBmb3IgbWFuaXB1bGF0aW5nIGdyaWRzXG4gKiBQVUxMLi4uLi4uLi4uLi4uLi4uLlB1bGwgY2xhc3NlcyBmb3IgbWFuaXB1bGF0aW5nIGdyaWRzXG4gKiBCUkFORC4uLi4uLi4uLi4uLi4uLkhlbHBlciBjbGFzcyB0byBhcHBseSBicmFuZCB0cmVhdG1lbnQgdG8gZWxlbWVudHNcbiAqIEhFTFBFUi4uLi4uLi4uLi4uLi4uQSBzZXJpZXMgb2YgaGVscGVyIGNsYXNzZXMgdG8gdXNlIGFyYml0cmFyaWx5XG4gKiBERUJVRy4uLi4uLi4uLi4uLi4uLkVuYWJsZSB0byBhZGQgdmlzdWFsIGZsYWdzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXNcbiAqL1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFdBUk5JTkdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKlxuICogaW51aXQuY3NzLCBiZWluZyBhbiBPTyBmcmFtZXdvcmssIHdvcmtzIGluIGtlZXBpbmcgd2l0aCB0aGUgb3Blbi9jbG9zZWRcbiAqIHByaW5jaXBsZS4gVGhlIHZhcmlhYmxlcyB5b3Ugc2V0IHByZXZpb3VzbHkgYXJlIG5vdyBiZWluZyB1c2VkIHRocm91Z2hvdXRcbiAqIGludWl0LmNzcyB0byBzdHlsZSBldmVyeXRoaW5nIHdlIG5lZWQgZm9yIGEgYmFzZS4gQW55IGN1c3RvbSBzdHlsZXMgU0hPVUxEXG4gKiBOT1QgYmUgYWRkZWQgb3IgbW9kaWZpZWQgaW4gaW51aXQuY3NzIGRpcmVjdGx5LCBidXQgYWRkZWQgdmlhIHlvdXIgdGhlbWVcbiAqIHN0eWxlc2hlZXQgYXMgcGVyIHRoZSBvcGVuL2Nsb3NlZCBwcmluY2lwbGU6XG4gKlxuICogY3Nzd2l6YXJkcnkuY29tLzIwMTIvMDYvdGhlLW9wZW4tY2xvc2VkLXByaW5jaXBsZS1hcHBsaWVkLXRvLWNzc1xuICpcbiAqIFRyeSBub3QgdG8gZWRpdCBhbnkgQ1NTIGJleW9uZCB0aGlzIHBvaW50OyBpZiB5b3UgZmluZCB5b3UgbmVlZCB0byBkbyBzb1xuICogaXQgaXMgYSBmYWlsaW5nIG9mIHRoZSBmcmFtZXdvcmsgc28gcGxlYXNlIHR3ZWV0IGF0IEBpbnVpdGNzcy5cbiAqL1xuXG5cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJElNUE9SVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEdlbmVyaWMgdXRpbGl0eSBzdHlsZXMgZXRjLlxuICovXG5AaW1wb3J0IFwiZGVmYXVsdHNcIjtcbkBpbXBvcnQgXCJnZW5lcmljL21peGluc1wiO1xuQGltcG9ydCBcImdlbmVyaWMvbm9ybWFsaXplXCI7XG5AaW1wb3J0IFwiZ2VuZXJpYy9yZXNldFwiO1xuQGltcG9ydCBcImdlbmVyaWMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJnZW5lcmljL3NoYXJlZFwiO1xuXG5cblxuXG5cbi8qKlxuICogQmFzZSBzdHlsZXM7IHVuY2xhc3NlZCBIVE1MIGVsZW1lbnRzIGV0Yy5cbiAqL1xuQGltcG9ydCBcImJhc2UvbWFpblwiO1xuQGltcG9ydCBcImJhc2UvaGVhZGluZ3NcIjtcbkBpbXBvcnQgXCJiYXNlL3BhcmFncmFwaHNcIjtcbkBpbXBvcnQgXCJiYXNlL3NtYWxscHJpbnRcIjtcbkBpbXBvcnQgXCJiYXNlL3F1b3Rlc1wiO1xuQGltcG9ydCBcImJhc2UvY29kZVwiO1xuQGltcG9ydCBcImJhc2UvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiYmFzZS9saXN0c1wiO1xuQGltcG9ydCBcImJhc2UvdGFibGVzXCI7XG5AaW1wb3J0IFwiYmFzZS9mb3Jtc1wiO1xuXG5cblxuXG5cbi8qKlxuICogT2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zXG4gKi9cbkBpbXBvcnQgXCJvYmplY3RzL2dyaWRzXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9mbGV4Ym94XCI7XG5AaW1wb3J0IFwib2JqZWN0cy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9uYXZcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29wdGlvbnNcIjtcbkBpbXBvcnQgXCJvYmplY3RzL3BhZ2luYXRpb25cIjtcbkBpbXBvcnQgXCJvYmplY3RzL2JyZWFkY3J1bWJcIjtcbkBpbXBvcnQgXCJvYmplY3RzL21lZGlhXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9tYXJnaW5hbGlhXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9pc2xhbmRcIjtcbkBpbXBvcnQgXCJvYmplY3RzL2Jsb2NrLWxpc3RcIjtcbkBpbXBvcnQgXCJvYmplY3RzL21hdHJpeFwiO1xuQGltcG9ydCBcIm9iamVjdHMvc3BsaXRcIjtcbkBpbXBvcnQgXCJvYmplY3RzL3RoaXMtb3ItdGhpc1wiO1xuQGltcG9ydCBcIm9iamVjdHMvbGluay1jb21wbGV4XCI7XG5AaW1wb3J0IFwib2JqZWN0cy9mbHlvdXRcIjtcbkBpbXBvcnQgXCJvYmplY3RzL2Fycm93c1wiO1xuQGltcG9ydCBcIm9iamVjdHMvc3ByaXRlXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9pY29uLXRleHRcIjtcbkBpbXBvcnQgXCJvYmplY3RzL2JlYXV0b25zXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9sb3plbmdlc1wiO1xuQGltcG9ydCBcIm9iamVjdHMvcnVsZXNcIjtcbkBpbXBvcnQgXCJvYmplY3RzL3N0YXRzXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9ncmV5Ym94XCI7XG5cblxuXG5cblxuLyoqXG4gKiBTdHlsZSB0cnVtcHM7IGhlbHBlciBhbmQgYnJhbmQgY2xhc3Nlc1xuICovXG5AaW1wb3J0IFwiZ2VuZXJpYy93aWR0aHNcIjtcbkBpbXBvcnQgXCJnZW5lcmljL3B1c2hcIjtcbkBpbXBvcnQgXCJnZW5lcmljL3B1bGxcIjtcbkBpbXBvcnQgXCJnZW5lcmljL2JyYW5kXCI7XG5AaW1wb3J0IFwiZ2VuZXJpYy9oZWxwZXJcIjtcbkBpbXBvcnQgXCJnZW5lcmljL2RlYnVnXCI7XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRNSVhJTlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIENyZWF0ZSBhIGZ1bGx5IGZvcm1lZCB0eXBlIHN0eWxlIChzaXppbmcgYW5kIHZlcnRpY2FsIHJoeXRobSkgYnkgcGFzc2luZyBpbiBhXG4gKiBzaW5nbGUgdmFsdWUsIGUuZy46XG4gKlxuICAgYEBpbmNsdWRlIGZvbnQtc2l6ZSgxMHB4KTtgXG4gKlxuICogVGhhbmtzIHRvIEByZWRjbG92M3IgZm9yIHRoZSBgbGluZS1oZWlnaHRgIFNhc3M6XG4gKiB0d2l0dGVyLmNvbS9yZWRjbG92M3Ivc3RhdHVzLzI1MDMwMTUzOTMyMTc5ODY1N1xuICovXG5AbWl4aW4gZm9udC1zaXplKCRmb250LXNpemUsICRsaW5lLWhlaWdodDp0cnVlKXtcbiAgICBmb250LXNpemU6JGZvbnQtc2l6ZTtcbiAgICBmb250LXNpemU6KCRmb250LXNpemUgLyAkYmFzZS1mb250LXNpemUpKjFyZW07XG4gICAgQGlmICRsaW5lLWhlaWdodCA9PSB0cnVle1xuICAgICAgICBsaW5lLWhlaWdodDpjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgKiAoJGJhc2UtbGluZS1oZWlnaHQgLyAkZm9udC1zaXplKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBTdHlsZSBhbnkgbnVtYmVyIG9mIGhlYWRpbmdzIGluIG9uZSBmZWxsIHN3b29wLCBlLmcuOlxuICpcbiAgIC5mb297XG4gICAgICAgQGluY2x1ZGUgaGVhZGluZ3MoMSwgMyl7XG4gICAgICAgICAgIGNvbG9yOiNCQURBNTU7XG4gICAgICAgfVxuICAgIH1cbiAqXG4gKiBXaXRoIHRoYW5rcyB0byBAbGFyX3p6eiwgQHBhcmFub2lkYSwgQHJvd2FubWFubmluZyBhbmQgdWx0aW1hdGVseVxuICogQHRoaWVycnlsZW1vdWxlYyBmb3IgcmVmaW5pbmcgYW5kIGltcHJvdmluZyBteSBpbml0aWFsIG1peGluLlxuICovXG5AbWl4aW4gaGVhZGluZ3MoJGZyb206IDEsICR0bzogNil7XG4gICAgJWJhc2UtaGVhZGluZyB7XG4gICAgICAgIEBjb250ZW50XG4gICAgfVxuXG4gICAgQGlmICRmcm9tID49IDEgYW5kICR0byA8PSA2e1xuICAgICAgICBAZm9yICRpIGZyb20gJGZyb20gdGhyb3VnaCAkdG97XG4gICAgICAgICAgICBoI3skaX17XG4gICAgICAgICAgICAgICAgQGV4dGVuZCAlYmFzZS1oZWFkaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKlxuICogQ3JlYXRlIHZlbmRvci1wcmVmaXhlZCBDU1MgaW4gb25lIGdvLCBlLmcuXG4gKlxuICAgYEBpbmNsdWRlIHZlbmRvcihib3JkZXItcmFkaXVzLCA0cHgpO2BcbiAqXG4gKi9cbkBtaXhpbiB2ZW5kb3IoJHByb3BlcnR5LCAkdmFsdWUuLi4pe1xuICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiR2YWx1ZTtcbiAgICAgICAtbW96LSN7JHByb3BlcnR5fTokdmFsdWU7XG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06JHZhbHVlO1xuICAgICAgICAgLW8tI3skcHJvcGVydHl9OiR2YWx1ZTtcbiAgICAgICAgICAgICN7JHByb3BlcnR5fTokdmFsdWU7XG59XG5cblxuLyoqXG4gKiBDcmVhdGUgQ1NTIGtleWZyYW1lIGFuaW1hdGlvbnMgZm9yIGFsbCB2ZW5kb3JzIGluIG9uZSBnbywgZS5nLjpcbiAqXG4gICAuZm9ve1xuICAgICAgIEBpbmNsdWRlIHZlbmRvcihhbmltYXRpb24sIHNocmluayAzcyk7XG4gICB9XG5cbiAgIEBpbmNsdWRlIGtleWZyYW1lKHNocmluayl7XG4gICAgICAgZnJvbXtcbiAgICAgICAgICAgZm9udC1zaXplOjVlbTtcbiAgICAgICB9XG4gICB9XG4gKlxuICogQ291cnRlc3kgb2YgQGludGVncmFsaXN0OiB0d2l0dGVyLmNvbS9pbnRlZ3JhbGlzdC9zdGF0dXMvMjYwNDg0MTE1MzE1NDM3NTY5XG4gKi9cbkBtaXhpbiBrZXlmcmFtZSAoJGFuaW1hdGlvbi1uYW1lKXtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgJGFuaW1hdGlvbi1uYW1le1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBALW1vei1rZXlmcmFtZXMgJGFuaW1hdGlvbi1uYW1le1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBALW1zLWtleWZyYW1lcyAkYW5pbWF0aW9uLW5hbWV7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEAtby1rZXlmcmFtZXMgJGFuaW1hdGlvbi1uYW1le1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzICRhbmltYXRpb24tbmFtZXtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG5cbi8qKlxuICogRm9yY2Ugb3Zlcmx5IGxvbmcgc3BhbnMgb2YgdGV4dCB0byB0cnVuY2F0ZSwgZS5nLjpcbiAqXG4gICBgQGluY2x1ZGUgdHJ1bmNhdGUoMTAwJSk7YFxuICpcbiAqIFdoZXJlIGAkdHJ1bmNhdGlvbi1ib3VuZGFyeWAgaXMgYSB1bml0ZWQgbWVhc3VyZW1lbnQuXG4gKi9cbkBtaXhpbiB0cnVuY2F0ZSgkdHJ1bmNhdGlvbi1ib3VuZGFyeSl7XG4gICAgbWF4LXdpZHRoOiR0cnVuY2F0aW9uLWJvdW5kYXJ5O1xuICAgIHdoaXRlLXNwYWNlOm5vd3JhcDtcbiAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzplbGxpcHNpcztcbn1cblxuXG4vKipcbiAqIENTUyBhcnJvd3MhISEgQnV0Li4uIGJlZm9yZSB5b3UgcmVhZCBvbiwgeW91IG1pZ2h0IHdhbnQgdG8gZ3JhYiBhIGNvZmZlZS4uLlxuICpcbiAqIFRoaXMgbWl4aW4gY3JlYXRlcyBhIENTUyBhcnJvdyBvbiBhIGdpdmVuIGVsZW1lbnQuIFdlIGNhbiBoYXZlIHRoZSBhcnJvd1xuICogYXBwZWFyIGluIG9uZSBvZiAxMiBsb2NhdGlvbnMsIHRodXM6XG4gKlxuICogICAgICAgMDEgICAgMDIgICAgMDNcbiAqICAgICstLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiAxMiB8ICAgICAgICAgICAgICAgICAgfCAwNFxuICogICAgfCAgICAgICAgICAgICAgICAgIHxcbiAqIDExIHwgICAgICAgICAgICAgICAgICB8IDA1XG4gKiAgICB8ICAgICAgICAgICAgICAgICAgfFxuICogMTAgfCAgICAgICAgICAgICAgICAgIHwgMDZcbiAqICAgICstLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiAgICAgICAwOSAgICAwOCAgICAwN1xuICpcbiAqIFlvdSBwYXNzIHRoaXMgcG9zaXRpb24gaW4gYWxvbmcgd2l0aCBhIGRlc2lyZWQgYXJyb3cgY29sb3IgYW5kIG9wdGlvbmFsXG4gKiBib3JkZXIgY29sb3IsIGZvciBleGFtcGxlOlxuICpcbiAqIGBAaW5jbHVkZSBhcnJvdyh0b3AsIGxlZnQsIHJlZClgXG4gKlxuICogZm9yIGp1c3QgYSBzaW5nbGUsIHJlZCBhcnJvdywgb3I6XG4gKlxuICogYEBpbmNsdWRlIGFycm93KGJvdHRvbSwgY2VudGVyLCByZWQsIGJsYWNrKWBcbiAqXG4gKiB3aGljaCB3aWxsIGNyZWF0ZSBhIHJlZCB0cmlhbmdsZSB3aXRoIGEgYmxhY2sgYm9yZGVyIHdoaWNoIHNpdHMgYXQgdGhlIGJvdHRvbVxuICogY2VudGVyIG9mIHRoZSBlbGVtZW50LiBDYWxsIHRoZSBtaXhpbiB0aHVzOlxuICpcbiAgIC5mb297XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjojQkFEQTU1O1xuICAgICAgIGJvcmRlcjoxcHggc29saWQgI0FDRTtcbiAgICAgICBAaW5jbHVkZSBhcnJvdyh0b3AsIGxlZnQsICNCQURBNTUsICNBQ0UpO1xuICAgfVxuICpcbiAqL1xuQG1peGluIGFycm93KCRhcnJvdy1lZGdlLCAkYXJyb3ctbG9jYXRpb24sICRhcnJvdy1jb2xvciwgJGJvcmRlci1jb2xvcjogJGFycm93LWNvbG9yKXtcblxuICAgIEBpZiAkYXJyb3ctZWRnZSA9PSB0b3B7XG5cbiAgICAgICAgQGV4dGVuZCAlYXJyb3ctLXRvcDtcblxuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6JGJvcmRlci1jb2xvciFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjokYXJyb3ctY29sb3IhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRhcnJvdy1sb2NhdGlvbiA9PSBsZWZ0e1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLWxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJGFycm93LWxvY2F0aW9uID09IGNlbnRlcntcbiAgICAgICAgICAgIEBleHRlbmQgJWFycm93LS1jZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJGFycm93LWxvY2F0aW9uID09IHJpZ2h0e1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLXJpZ2h0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBAaWYgJGFycm93LWVkZ2UgPT0gcmlnaHR7XG5cbiAgICAgICAgQGV4dGVuZCAlYXJyb3ctLWZhcjtcblxuICAgICAgICAmOmJlZm9yZXtcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiRib3JkZXItY29sb3IhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiRhcnJvdy1jb2xvciFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJGFycm93LWxvY2F0aW9uID09IHRvcHtcbiAgICAgICAgICAgIEBleHRlbmQgJWFycm93LS11cHBlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYXJyb3ctbG9jYXRpb24gPT0gY2VudGVye1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLW1pZGRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYXJyb3ctbG9jYXRpb24gPT0gYm90dG9te1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLWxvd2VyO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBAaWYgJGFycm93LWVkZ2UgPT0gYm90dG9te1xuXG4gICAgICAgIEBleHRlbmQgJWFycm93LS1ib3R0b207XG5cbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiRib3JkZXItY29sb3IhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6JGFycm93LWNvbG9yIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYXJyb3ctbG9jYXRpb24gPT0gbGVmdHtcbiAgICAgICAgICAgIEBleHRlbmQgJWFycm93LS1sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRhcnJvdy1sb2NhdGlvbiA9PSBjZW50ZXJ7XG4gICAgICAgICAgICBAZXh0ZW5kICVhcnJvdy0tY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRhcnJvdy1sb2NhdGlvbiA9PSByaWdodHtcbiAgICAgICAgICAgIEBleHRlbmQgJWFycm93LS1yaWdodDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgQGlmICRhcnJvdy1lZGdlID09IGxlZnR7XG5cbiAgICAgICAgQGV4dGVuZCAlYXJyb3ctLW5lYXI7XG5cbiAgICAgICAgJjpiZWZvcmV7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6JGJvcmRlci1jb2xvciFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiRhcnJvdy1jb2xvciFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJGFycm93LWxvY2F0aW9uID09IHRvcHtcbiAgICAgICAgICAgIEBleHRlbmQgJWFycm93LS11cHBlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYXJyb3ctbG9jYXRpb24gPT0gY2VudGVye1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLW1pZGRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAkYXJyb3ctbG9jYXRpb24gPT0gYm90dG9te1xuICAgICAgICAgICAgQGV4dGVuZCAlYXJyb3ctLWxvd2VyO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG4vKipcbiAqIE1lZGlhIHF1ZXJ5IG1peGluLlxuICpcbiAqIEl04oCZcyBub3QgZ3JlYXQgcHJhY3RpY2UgdG8gZGVmaW5lIHNvbGlkIGJyZWFrcG9pbnRzIHVwLWZyb250LCBwcmVmZXJyaW5nIHRvXG4gKiBtb2RpZnkgeW91ciBkZXNpZ24gd2hlbiBpdCBuZWVkcyBpdCwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgeW914oCZbGwgd2FudCBhXG4gKiBjaGFuZ2UgYXQg4oCYbW9iaWxl4oCZLiBIb3dldmVyLCBhcyBpbnVpdC5jc3MgaXMgcmVxdWlyZWQgdG8gdGFrZSBhIGhhbmRzIG9mZlxuICogYXBwcm9hY2ggdG8gZGVzaWduIGRlY2lzaW9ucywgdGhpcyBpcyB0aGUgY2xvc2VzdCB3ZSBjYW4gZ2V0IHRvIGJha2VkLWluXG4gKiByZXNwb25zaXZlbmVzcy4gSXTigJlzIGZsZXhpYmxlIGVub3VnaCB0byBhbGxvdyB5b3UgdG8gc2V0IHlvdXIgb3duIGJyZWFrcG9pbnRzXG4gKiBidXQgc29saWQgZW5vdWdoIHRvIGJlIGZyYW1ld29ya2lmaWVkLlxuICpcbiAqIFdlIGRlZmluZSBzb21lIGJyb2FkIGJyZWFrcG9pbnRzIGluIG91ciB2YXJzIGZpbGUgdGhhdCBhcmUgcGlja2VkIHVwIGhlcmVcbiAqIGZvciB1c2UgaW4gYSBzaW1wbGUgbWVkaWEgcXVlcnkgbWl4aW4uIE91ciBvcHRpb25zIGFyZTpcbiAqXG4gKiBwYWxtXG4gKiBsYXBcbiAqIGxhcC1hbmQtdXBcbiAqIHBvcnRhYmxlXG4gKiBkZXNrXG4gKiBkZXNrLXdpZGVcbiAqXG4gKiBOb3QgdXNpbmcgYSBtZWRpYSBxdWVyeSB3aWxsLCBuYXR1cmFsbHksIHNlcnZlIHN0eWxlcyB0byBhbGwgZGV2aWNlcy5cbiAqXG4gKiBgQGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSl7IFtzdHlsZXMgaGVyZV0gfWBcbiAqXG4gKiBXZSB3b3JrIG91dCB5b3VyIGVuZCBwb2ludHMgZm9yIHlvdTpcbiAqL1xuJHBhbG0tZW5kOiAgICAgICAgICAgICAgJGxhcC1zdGFydCAtIDFweDtcbiRsYXAtZW5kOiAgICAgICAgICAgICAgICRkZXNrLXN0YXJ0IC0gMXB4O1xuXG5AbWl4aW4gbWVkaWEtcXVlcnkoJG1lZGlhLXF1ZXJ5KXtcblxuICAgIEBpZiAkbWVkaWEtcXVlcnkgPT0gcGFsbXtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6JHBhbG0tZW5kKSB7IEBjb250ZW50OyB9XG5cbiAgICB9XG5cbiAgICBAaWYgJG1lZGlhLXF1ZXJ5ID09IGxhcHtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6JGxhcC1zdGFydCkgYW5kIChtYXgtd2lkdGg6JGxhcC1lbmQpIHsgQGNvbnRlbnQ7IH1cblxuICAgIH1cblxuICAgIEBpZiAkbWVkaWEtcXVlcnkgPT0gbGFwLWFuZC11cHtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6JGxhcC1zdGFydCkgeyBAY29udGVudDsgfVxuXG4gICAgfVxuXG4gICAgQGlmICRtZWRpYS1xdWVyeSA9PSBwb3J0YWJsZXtcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6JGxhcC1lbmQpIHsgQGNvbnRlbnQ7IH1cblxuICAgIH1cblxuICAgIEBpZiAkbWVkaWEtcXVlcnkgPT0gZGVza3tcblxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6JGRlc2stc3RhcnQpIHsgQGNvbnRlbnQ7IH1cblxuICAgIH1cblxuICAgIEBpZiAkbWVkaWEtcXVlcnkgPT0gZGVzay13aWRle1xuXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGRlc2std2lkZS1zdGFydCkgeyBAY29udGVudDsgfVxuXG4gICAgfVxuXG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2Mi4xLjAgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnZpZGVvIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5baGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJhc2VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuICogMi4gUHJldmVudCBpT1MgdGV4dCBzaXplIGFkanVzdCBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2UsIHdpdGhvdXQgZGlzYWJsaW5nXG4gKiAgICB1c2VyIHpvb20uXG4gKi9cblxuaHRtbCB7XG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkcmVzcyBgb3V0bGluZWAgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIENocm9tZSBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuYTpmb2N1cyB7XG4gICAgb3V0bGluZTogdGhpbiBkb3R0ZWQ7XG59XG5cbi8qXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IHdoZW4gZm9jdXNlZCBhbmQgYWxzbyBtb3VzZSBob3ZlcmVkIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUeXBvZ3JhcGh5XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LCBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLypcbiAqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSA1LCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSA1IGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmYwO1xuICAgIGNvbG9yOiAjMDAwO1xufVxuXG4vKlxuICogQ29ycmVjdCBmb250IGZhbWlseSBzZXQgb2RkbHkgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2VyaWY7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIHByZS1mb3JtYXR0ZWQgdGV4dCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG5cbi8qXG4gKiBTZXQgY29uc2lzdGVudCBxdW90ZSB0eXBlcy5cbiAqL1xuXG5xIHtcbiAgICBxdW90ZXM6IFwiXFwyMDFDXCIgXCJcXDIwMURcIiBcIlxcMjAxOFwiIFwiXFwyMDE5XCI7XG59XG5cbi8qXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gICAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICAgIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICAgIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qXG4gKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS5cbiAqL1xuXG5pbWcge1xuICAgIGJvcmRlcjogMDtcbn1cblxuLypcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgZGlzcGxheWVkIG9kZGx5IGluIElFIDkuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGaWd1cmVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkgNS5cbiAqL1xuXG5maWd1cmUge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgIG1hcmdpbjogMCAycHg7XG4gICAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKlxuICogMS4gQ29ycmVjdCBmb250IGZhbWlseSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgZm9udCBzaXplIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gYWxsIGJyb3dzZXJzLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSwgYW5kIENocm9tZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMiAqL1xuICAgIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQge1xuICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBDaHJvbWUsIFNhZmFyaSA1KywgYW5kIElFIDgrLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94IDQrIGFuZCBPcGVyYS5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gICAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXG59XG5cbi8qXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIDUgYW5kIENocm9tZVxuICogICAgKGluY2x1ZGUgYC1tb3pgIHRvIGZ1dHVyZS1wcm9vZikuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLypcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lXG4gKiBvbiBPUyBYLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKlxuICogMS4gUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS5cbiAqIDIuIEltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIGFsaWdubWVudCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxudGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvOyAvKiAxICovXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgLyogMiAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG5cbnRhYmxlIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkUkVTRVRcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEEgbW9yZSBjb25zaWRlcmVkIHJlc2V0OyBtb3JlIG9mIGEgcmVzdGFydC4uLlxuICogQXMgcGVyOiBjc3N3aXphcmRyeS5jb20vMjAxMS8xMC9yZXNldC1yZXN0YXJ0ZWRcbiAqL1xuXG5AaWYgJGdsb2JhbC1ib3JkZXItYm94ID09IHRydWV7XG4gICAgLyoqXG4gICAgKiBMZXTigJlzIG1ha2UgdGhlIGJveCBtb2RlbCBhbGwgbmljZSwgc2hhbGwgd2UuLi4/XG4gICAgKi9cbiAgICAqe1xuICAgICAgICAmLFxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlcntcbiAgICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcihib3gtc2l6aW5nLCBib3JkZXItYm94KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgdXN1YWwuLi5cbiAqL1xuaDEsaDIsaDMsaDQsaDUsaDYsXG5wLGJsb2NrcXVvdGUscHJlLFxuZGwsZGQsb2wsdWwsXG5mb3JtLGZpZWxkc2V0LGxlZ2VuZCxcbnRhYmxlLHRoLHRkLGNhcHRpb24sXG5ocntcbiAgICBtYXJnaW46MDtcbiAgICBwYWRkaW5nOjA7XG59XG5cbi8qKlxuICogR2l2ZSBhIGhlbHAgY3Vyc29yIHRvIGVsZW1lbnRzIHRoYXQgZ2l2ZSBleHRyYSBpbmZvIG9uIGA6aG92ZXJgLlxuICovXG5hYmJyW3RpdGxlXSxkZm5bdGl0bGVde1xuICAgIGN1cnNvcjpoZWxwO1xufVxuXG4vKipcbiAqIFJlbW92ZSB1bmRlcmxpbmVzIGZyb20gcG90ZW50aWFsbHkgdHJvdWJsZXNvbWUgZWxlbWVudHMuXG4gKi9cbnUsaW5ze1xuICAgIHRleHQtZGVjb3JhdGlvbjpub25lO1xufVxuXG4vKipcbiAqIEFwcGx5IGZhdXggdW5kZXJsaW5lIHZpYSBgYm9yZGVyLWJvdHRvbWAuXG4gKi9cbmluc3tcbiAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZDtcbn1cblxuLyoqXG4gKiBTbyB0aGF0IGBhbHRgIHRleHQgaXMgdmlzdWFsbHkgb2Zmc2V0IGlmIGltYWdlcyBkb27igJl0IGxvYWQuXG4gKi9cbmltZ3tcbiAgICBmb250LXN0eWxlOml0YWxpYztcbn1cblxuLyoqXG4gKiBHaXZlIGZvcm0gZWxlbWVudHMgc29tZSBjdXJzb3IgaW50ZXJhY3Rpb25zLi4uXG4gKi9cbmxhYmVsLFxuaW5wdXQsXG50ZXh0YXJlYSxcbmJ1dHRvbixcbnNlbGVjdCxcbm9wdGlvbntcbiAgICBjdXJzb3I6cG9pbnRlcjtcbn1cbiAgICAudGV4dC1pbnB1dDphY3RpdmUsXG4gICAgLnRleHQtaW5wdXQ6Zm9jdXMsXG4gICAgdGV4dGFyZWE6YWN0aXZlLFxuICAgIHRleHRhcmVhOmZvY3Vze1xuICAgICAgICBjdXJzb3I6dGV4dDtcbiAgICAgICAgb3V0bGluZTpub25lO1xuICAgIH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENMRUFSRklYXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBNaWNybyBjbGVhcmZpeCwgYXMgcGVyOiBjc3MtMTAxLm9yZy9hcnRpY2xlcy9jbGVhcmZpeC9sYXRlc3QtbmV3LWNsZWFyZml4LXNvLWZhci5waHBcbiAqIEV4dGVuZCB0aGUgY2xlYXJmaXggY2xhc3Mgd2l0aCBTYXNzIHRvIGF2b2lkIHRoZSBgLmNmYCBjbGFzcyBhcHBlYXJpbmcgb3ZlclxuICogYW5kIG92ZXIgaW4geW91ciBtYXJrdXAuXG4gKi9cbi5jZntcbiAgICAmOmFmdGVye1xuICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgIGRpc3BsYXk6dGFibGU7XG4gICAgICAgIGNsZWFyOmJvdGg7XG4gICAgfVxufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkU0hBUkVEXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBXaGVyZSBgbWFyZ2luLWJvdHRvbWAgaXMgY29uY2VybmVkLCB0aGlzIHZhbHVlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlXG4gKiBiYXNlIGxpbmUtaGVpZ2h0LiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIGEgY29uc2lzdGVudCB2ZXJ0aWNhbCByaHl0aG0uXG4gKiBBcyBwZXI6IGNzc3dpemFyZHJ5LmNvbS8yMDEyLzA2L3NpbmdsZS1kaXJlY3Rpb24tbWFyZ2luLWRlY2xhcmF0aW9uc1xuICovXG4vKipcbiAqIEJhc2UgZWxlbWVudHNcbiAqL1xuaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLFxudWwsb2wsZGwsXG5ibG9ja3F1b3RlLHAsYWRkcmVzcyxcbnRhYmxlLFxuZmllbGRzZXQsZmlndXJlLFxucHJlLFxuLyoqXG4gKiBPYmplY3RzIGFuZCBhYnN0cmFjdGlvbnNcbiAqL1xuJXNhc3MtbWFyZ2luLWJvdHRvbSxcbi5tZWRpYSxcbi5pc2xhbmQsXG4uaXNsZXR7XG4gICAgbWFyZ2luLWJvdHRvbTokYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgbWFyZ2luLWJvdHRvbTooJGJhc2Utc3BhY2luZy11bml0IC8gJGJhc2UtZm9udC1zaXplKSoxcmVtO1xuXG4gICAgLmlzbGV0ICZ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206JGJhc2Utc3BhY2luZy11bml0IC8gMjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTooKCRiYXNlLXNwYWNpbmctdW5pdCAvICRiYXNlLWZvbnQtc2l6ZSkgLyAyKSoxcmVtO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIERvdWJsZWQgdXAgYG1hcmdpbi1ib3R0b21gIGhlbHBlciBjbGFzcy5cbiAqL1xuLmxhbmRtYXJre1xuICAgIG1hcmdpbi1ib3R0b206MiAqICRiYXNlLXNwYWNpbmctdW5pdDtcbiAgICBtYXJnaW4tYm90dG9tOigyICogJGJhc2Utc3BhY2luZy11bml0IC8gJGJhc2UtZm9udC1zaXplKSoxcmVtO1xufVxuXG5cbi8qKlxuICogYGhyYCBlbGVtZW50cyBvbmx5IHRha2UgdXAgYSBmZXcgcGl4ZWxzLCBzbyB3ZSBuZWVkIHRvIGdpdmUgdGhlbSBzcGVjaWFsXG4gKiB0cmVhdG1lbnQgcmVnYXJkaW5nIHZlcnRpY2FsIHJoeXRobS5cbiAqL1xuaHJ7XG4gICAgbWFyZ2luLWJvdHRvbTokYmFzZS1zcGFjaW5nLXVuaXQgLSAycHg7XG4gICAgbWFyZ2luLWJvdHRvbTooKCRiYXNlLXNwYWNpbmctdW5pdCAtIDJweCkgLyAkYmFzZS1mb250LXNpemUpKjFyZW07XG59XG5cblxuLyoqXG4gKiBXaGVyZSBgbWFyZ2luLWxlZnRgIGlzIGNvbmNlcm5lZCB3ZSB3YW50IHRvIHRyeSBhbmQgaW5kZW50IGNlcnRhaW4gZWxlbWVudHNcbiAqIGJ5IGEgY29uc2lzdGVudCBhbW91bnQuIERlZmluZSB0aGF0IGFtb3VudCBvbmNlLCBoZXJlLlxuICovXG51bCxvbCxkZHtcbiAgICBtYXJnaW4tbGVmdDoyICogJGJhc2Utc3BhY2luZy11bml0O1xuICAgIG1hcmdpbi1sZWZ0OigyICogJGJhc2Utc3BhY2luZy11bml0IC8gJGJhc2UtZm9udC1zaXplKSoxcmVtO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkTUFJTlxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmh0bWx7XG4gICAgZm9udDojeygkYmFzZS1mb250LXNpemUvMTZweCkqMWVtfS8jeyRsaW5lLWhlaWdodC1yYXRpb30gJGJhc2UtZm9udC1mYW1pbHk7XG4gICAgb3ZlcmZsb3cteTpzY3JvbGw7XG4gICAgbWluLWhlaWdodDoxMDAlO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkSEVBRElOR1NcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEFzIHBlcjogY3Nzd2l6YXJkcnkuY29tLzIwMTIvMDIvcHJhZ21hdGljLXByYWN0aWNhbC1mb250LXNpemluZy1pbi1jc3NcbiAqXG4gKiBXaGVuIHdlIGRlZmluZSBhIGhlYWRpbmcgd2UgYWxzbyBkZWZpbmUgYSBjb3JyZXNwb25kaW5nIGNsYXNzIHRvIGdvIHdpdGggaXQuXG4gKiBUaGlzIGFsbG93cyB1cyB0byBhcHBseSwgc2F5LCBgY2xhc3M9YWxwaGFgIHRvIGEgYGgzYDsgYSBkb3VibGUtc3RyYW5kZWRcbiAqIGhlYWRpbmcgaGllcmFyY2h5LlxuICovXG5oMSwuYWxwaGF7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRoMS1zaXplKTtcbn1cbmgyLC5iZXRhe1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDItc2l6ZSk7XG59XG5oMywuZ2FtbWF7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRoMy1zaXplKTtcbn1cbmg0LC5kZWx0YXtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGg0LXNpemUpO1xufVxuaDUsLmVwc2lsb257XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRoNS1zaXplKTtcbn1cbmg2LC56ZXRhe1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDYtc2l6ZSk7XG59XG5cblxuLyoqXG4gKiBIZWFkaW5nIGdyb3VwcyBhbmQgZ2VuZXJpYyBhbnktaGVhZGluZyBjbGFzcy5cbiAqIFRvIHRhcmdldCBhbnkgaGVhZGluZyBvZiBhbnkgbGV2ZWwgc2ltcGx5IGFwcGx5IGEgY2xhc3Mgb2YgYC5oTmAsIGUuZy46XG4gKlxuICAgPGhncm91cD5cbiAgICAgICA8aDEgY2xhc3M9aE4+aW51aXQuY3NzPC9oMT5cbiAgICAgICA8aDIgY2xhc3M9aE4+QmVzdC4gRnJhbWV3b3JrLiBFdmVyITwvaDI+XG4gICA8L2hncm91cD5cbiAqXG4gKi9cbi5oTntcbn1cbmhncm91cCAuaE57XG4gICAgbWFyZ2luLWJvdHRvbTowO1xufVxuXG5cbi8qKlxuICogQSBzZXJpZXMgb2YgY2xhc3NlcyBmb3Igc2V0dGluZyBtYXNzaXZlIHR5cGU7IGZvciB1c2UgaW4gaGVyb2VzLCBtYXN0aGVhZHMsXG4gKiBwcm9tb3MsIGV0Yy5cbiAqL1xuLmdpZ2F7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRnaWdhLXNpemUpO1xufVxuLm1lZ2F7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRtZWdhLXNpemUpO1xufVxuLmtpbG97XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRraWxvLXNpemUpO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkUEFSQUdSQVBIU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogVGhlIGAubGVkZWAgY2xhc3MgaXMgdXNlZCB0byBtYWtlIHRoZSBpbnRyb2R1Y3RvcnkgdGV4dCAodXN1YWxseSBhIHBhcmFncmFwaClcbiAqIG9mIGEgZG9jdW1lbnQgc2xpZ2h0bHkgbGFyZ2VyLlxuICovXG4ubGVkZSxcbi5sZWFke1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYmFzZS1mb250LXNpemUgKiAxLjEyNSk7XG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRTTUFMTFBSSU5UXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBBIHNlcmllcyBvZiBjbGFzc2VzIGZvciBzZXR0aW5nIHRpbnkgdHlwZTsgZm9yIHVzZSBpbiBzbWFsbHByaW50IGV0Yy5cbiAqL1xuLnNtYWxscHJpbnQsXG4ubWlsbGl7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRtaWxsaS1zaXplKTtcbn1cbi5taWNyb3tcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJG1pY3JvLXNpemUpO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkUVVPVEVTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBJZiBFbmdsaXNoIHF1b3RlcyBhcmUgc2V0IGluIGBfdmFycy5zY3NzYCwgZGVmaW5lIHRoZW0gaGVyZS5cbiAqL1xuQGlmICRlbmdsaXNoLXF1b3RlcyA9PSB0cnVle1xuICAgICRvcGVuLXF1b3RlOiAgICBcXDIwMUMgIWdsb2JhbDtcbiAgICAkY2xvc2UtcXVvdGU6ICAgXFwyMDFEICFnbG9iYWw7XG59XG5cblxuLyoqXG4gKiBCaWcgdXAgQGJvYmxldDogaHRtbDVkb2N0b3IuY29tL2Jsb2NrcXVvdGUtcS1jaXRlXG4gKi9cblxuLyoqXG4gKiBJbmxpbmUgcXVvdGVzLlxuICovXG5xe1xuICAgIHF1b3RlczpcIlxcMjAxOFwiIFwiXFwyMDE5XCIgXCIjeyRvcGVuLXF1b3RlfVwiIFwiI3skY2xvc2UtcXVvdGV9XCI7XG5cbiAgICAmOmJlZm9yZXtcbiAgICAgICAgY29udGVudDpcIlxcMjAxOFwiO1xuICAgICAgICBjb250ZW50Om9wZW4tcXVvdGU7XG4gICAgfVxuICAgICY6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6XCJcXDIwMTlcIjtcbiAgICAgICAgY29udGVudDpjbG9zZS1xdW90ZTtcbiAgICB9XG5cbiAgICBxOmJlZm9yZXtcbiAgICAgICAgY29udGVudDpcIlxcMjAxQ1wiO1xuICAgICAgICBjb250ZW50Om9wZW4tcXVvdGU7XG4gICAgfVxuICAgIHE6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6XCJcXDIwMURcIjtcbiAgICAgICAgY29udGVudDpjbG9zZS1xdW90ZTtcbiAgICB9XG59XG5cbmJsb2NrcXVvdGV7XG4gICAgcXVvdGVzOlwiI3skb3Blbi1xdW90ZX1cIiBcIiN7JGNsb3NlLXF1b3RlfVwiO1xuXG4gICAgcDpiZWZvcmV7XG4gICAgICAgIGNvbnRlbnQ6XCIjeyRvcGVuLXF1b3RlfVwiO1xuICAgICAgICBjb250ZW50Om9wZW4tcXVvdGU7XG4gICAgfVxuICAgIHA6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgY29udGVudDpuby1jbG9zZS1xdW90ZTtcbiAgICB9XG4gICAgcDpsYXN0LW9mLXR5cGU6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6XCIjeyRjbG9zZS1xdW90ZX1cIjtcbiAgICAgICAgY29udGVudDpjbG9zZS1xdW90ZTtcbiAgICB9XG5cbiAgICBxOmJlZm9yZXtcbiAgICAgICAgY29udGVudDpcIlxcMjAxOFwiO1xuICAgICAgICBjb250ZW50Om9wZW4tcXVvdGU7XG4gICAgfVxuICAgIHE6YWZ0ZXJ7XG4gICAgICAgIGNvbnRlbnQ6XCJcXDIwMTlcIjtcbiAgICAgICAgY29udGVudDpjbG9zZS1xdW90ZTtcbiAgICB9XG59XG5cblxuLyoqXG4gKlxuICAgPGJsb2NrcXVvdGU+XG4gICAgICAgPHA+SW5zYW5pdHk6IGRvaW5nIHRoZSBzYW1lIHRoaW5nIG92ZXIgYW5kIG92ZXIgYWdhaW4gYW5kIGV4cGVjdGluZ1xuICAgICAgIGRpZmZlcmVudCByZXN1bHRzLjwvcD5cbiAgICAgICA8YiBjbGFzcz1zb3VyY2U+QWxiZXJ0IEVpbnN0ZWluPC9iPlxuICAgPC9ibG9ja3F1b3RlPlxuICpcbiAqL1xuYmxvY2txdW90ZXtcbiAgICAvKipcbiAgICAgKiAuNGVtIGlzIHJvdWdobHkgZXF1YWwgdG8gdGhlIHdpZHRoIG9mIHRoZSBvcGVuaW5nIOKAnCB0aGF0IHdlIHdpc2ggdG8gaGFuZy5cbiAgICAgKi9cbiAgICB0ZXh0LWluZGVudDotMC40MWVtO1xuXG4gICAgcDpsYXN0LW9mLXR5cGV7XG4gICAgICAgIG1hcmdpbi1ib3R0b206MDtcbiAgICB9XG59XG5cbi5zb3VyY2V7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICB0ZXh0LWluZGVudDowO1xuXG4gICAgJjpiZWZvcmV7XG4gICAgICAgIGNvbnRlbnQ6XCJcXDIwMTRcIjtcbiAgICB9XG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT0RFXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBVc2UgYW4gZXhwbGljaXQgZm9udCBzdGFjayB0byBlbnN1cmUgYnJvd3NlcnMgcmVuZGVyIGNvcnJlY3QgYGxpbmUtaGVpZ2h0YC5cbiAqL1xucHJle1xuICAgIG92ZXJmbG93OmF1dG87XG59XG4gICAgcHJlIG1hcmt7XG4gICAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQ7XG4gICAgICAgIGNvbG9yOmluaGVyaXQ7XG4gICAgfVxuXG5cbi8qKlxuICogQWRkIGNvbW1lbnRzIHRvIHlvdXIgY29kZSBleGFtcGxlcywgZS5nLjpcbiAqXG4gICA8Y29kZT4mbHQ7L2RpdiZndDs8c3BhbiBjbGFzcz1jb2RlLWNvbW1lbnQ+Jmx0OyEtLSAvd3JhcHBlciAtLSZndDs8L3NwYW4+PC9jb2RlPlxuICpcbiAqL1xuLmNvZGUtY29tbWVudHtcbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSB0aGlzIHNldHRpbmcgaW4geW91ciB0aGVtZSBzdHlsZXNoZWV0XG4gICAgICovXG4gICAgb3BhY2l0eTowLjc1O1xuICAgIGZpbHRlcjphbHBoYShvcGFjaXR5PTc1KTtcbn1cblxuXG4vKipcbiAqIFlvdSBjYW4gYWRkIGxpbmUgbnVtYmVycyB0byB5b3VyIGNvZGUgZXhhbXBsZXMgYnV0IGJlIHdhcm5lZCwgaXQgcmVxdWlyZXNcbiAqIHNvbWUgcHJldHR5IGZ1bmt5IGxvb2tpbmcgbWFya3VwLCBlLmcuOlxuICpcbiAgIDxvbCBjbGFzcz1saW5lLW51bWJlcnM+XG4gICAgICAgPGxpPjxjb2RlPi5uYXZ7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICBsaXN0LXN0eWxlOm5vbmU7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICBtYXJnaW4tbGVmdDowOzwvY29kZT48L2xpPlxuICAgICAgIDxsaT48Y29kZT59PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICAubmF2ID4gbGksPC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICAgICAgLm5hdiA+IGxpID4gYXs8L2NvZGU+PC9saT5cbiAgICAgICA8bGk+PGNvZGU+ICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICAgICAgICAgKmRpc3BsYXk6aW5saW5lLWJsb2NrOzwvY29kZT48L2xpPlxuICAgICAgIDxsaT48Y29kZT4gICAgICAgICAgICB6b29tOjE7PC9jb2RlPjwvbGk+XG4gICAgICAgPGxpPjxjb2RlPiAgICAgICAgfTwvY29kZT48L2xpPlxuICAgPC9vbD5cbiAqXG4gKiAxLiBNYWtlIHRoZSBsaXN0IGxvb2sgbGlrZSBjb2RlLlxuICogMi4gR2l2ZSB0aGUgbGlzdCBmbHVzaCBudW1iZXJzIHdpdGggYSBsZWFkaW5nIHplcm8uXG4gKiAzLiBNYWtlIHN1cmUgbGluZXMgb2YgY29kZSBkb27igJl0IHdyYXAuXG4gKiA0LiBHaXZlIHRoZSBjb2RlIGZvcm0gYnkgZm9yY2luZyB0aGUgYGNvZGVgIHRvIGhvbm91ciB3aGl0ZS1zcGFjZS5cbiAqL1xuLmxpbmUtbnVtYmVyc3tcbiAgICBmb250LWZhbWlseTptb25vc3BhY2UsIHNlcmlmOyAgICAgICAgICAgLyogWzFdICovXG4gICAgbGlzdC1zdHlsZTpkZWNpbWFsLWxlYWRpbmctemVybyBpbnNpZGU7IC8qIFsyXSAqL1xuICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsgICAgICAgICAgICAgICAgICAgICAvKiBbM10gKi9cbiAgICBvdmVyZmxvdzphdXRvOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWzNdICovXG4gICAgbWFyZ2luLWxlZnQ6MDtcbn1cbiAgICAubGluZS1udW1iZXJzIGNvZGV7XG4gICAgICAgIHdoaXRlLXNwYWNlOnByZTsgICAgICAgICAgICAgICAgICAgIC8qIFs0XSAqL1xuICAgIH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJElNQUdFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL3lNdHVyXG4gKi9cbi8qKlxuICogRmx1aWQgaW1hZ2VzLlxuICovXG5pbWd7XG4gICAgbWF4LXdpZHRoOjEwMCU7XG59XG5cblxuLyoqXG4gKiBOb24tZmx1aWQgaW1hZ2VzIGlmIHlvdSBzcGVjaWZ5IGB3aWR0aGAgYW5kL29yIGBoZWlnaHRgIGF0dHJpYnV0ZXMuXG4gKi9cbmltZ1t3aWR0aF0sXG5pbWdbaGVpZ2h0XXtcbiAgICBtYXgtd2lkdGg6bm9uZTtcbn1cblxuXG4vKipcbiAqIFJvdW5kZWQgaW1hZ2VzLlxuICovXG4uaW1nLS1yb3VuZCB7IGJvcmRlci1yYWRpdXM6JGJyYW5kLXJvdW5kOyB9XG5cblxuLyoqXG4gKiBJbWFnZSBwbGFjZW1lbnQgdmFyaWF0aW9ucy5cbiAqL1xuLmltZy0tcmlnaHR7XG4gICAgZmxvYXQ6cmlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTokYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgbWFyZ2luLWxlZnQ6JGJhc2Utc3BhY2luZy11bml0O1xufVxuLmltZy0tbGVmdHtcbiAgICBmbG9hdDpsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDokYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgbWFyZ2luLWJvdHRvbTokYmFzZS1zcGFjaW5nLXVuaXQ7XG59XG4uaW1nLS1jZW50ZXJ7XG4gICAgZGlzcGxheTpibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6YXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiRiYXNlLXNwYWNpbmctdW5pdDtcbiAgICBtYXJnaW4tbGVmdDphdXRvO1xufVxuXG5cbi8qKlxuICogS2VlcCB5b3VyIGltYWdlcyBvbiB5b3VyIGJhc2VsaW5lLlxuICpcbiAqIFBsZWFzZSBub3RlLCB0aGVzZSB3aWxsIG5vdCB3b3JrIHRvbyBuaWNlbHkgd2l0aCBmbHVpZCBpbWFnZXMgYW5kIHdpbGxcbiAqIGRpc3RvcnQgd2hlbiByZXNpemVkIGJlbG93IGEgY2VydGFpbiB3aWR0aC4gVXNlIHdpdGggY2F1dGlvbi5cbiAqL1xuLmltZy0tc2hvcnR7XG4gICAgaGVpZ2h0OjUgKiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG59XG4uaW1nLS1tZWRpdW17XG4gICAgaGVpZ2h0OjEwICogJGJhc2Utc3BhY2luZy11bml0O1xufVxuLmltZy0tdGFsbHtcbiAgICBoZWlnaHQ6MTUgKiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG59XG5cblxuLyoqXG4gKiBJbWFnZXMgaW4gYGZpZ3VyZWAgZWxlbWVudHMuXG4gKi9cbmZpZ3VyZSA+IGltZ3tcbiAgICBkaXNwbGF5OmJsb2NrO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkTElTVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFJlbW92ZSB2ZXJ0aWNhbCBzcGFjaW5nIGZyb20gbmVzdGVkIGxpc3RzLlxuICovXG5saXtcbiAgICA+IHVsLFxuICAgID4gb2x7XG4gICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgIH1cbn1cblxuLyoqXG4gKiBIYXZlIGEgbnVtYmVyZWQgYHVsYCB3aXRob3V0IHRoZSBzZW1hbnRpY3MgaW1wbGllZCBieSB1c2luZyBhbiBgb2xgLlxuICovXG4vKnVsKi8ubnVtYmVyZWQtbGlzdHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6ZGVjaW1hbDtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFRBQkxFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogV2UgaGF2ZSBhIGxvdCBhdCBvdXIgZGlzcG9zYWwgZm9yIG1ha2luZyB2ZXJ5IGNvbXBsZXggdGFibGUgY29uc3RydWN0cywgZS5nLjpcbiAqXG4gICA8dGFibGUgY2xhc3M9XCJ0YWJsZS0tYm9yZGVyZWQgIHRhYmxlLS1zdHJpcGVkICB0YWJsZS0tZGF0YVwiPlxuICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICAgPGNvbCBjbGFzcz10MTA+XG4gICAgICAgICAgIDxjb2wgY2xhc3M9dDEwPlxuICAgICAgICAgICA8Y29sIGNsYXNzPXQxMD5cbiAgICAgICAgICAgPGNvbD5cbiAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49Mz5Gb288L3RoPlxuICAgICAgICAgICAgICAgPHRoPkJhcjwvdGg+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0aD5Mb3JlbTwvdGg+XG4gICAgICAgICAgICAgICA8dGg+SXBzdW08L3RoPlxuICAgICAgICAgICAgICAgPHRoIGNsYXNzPW51bWVyaWNhbD5Eb2xvcjwvdGg+XG4gICAgICAgICAgICAgICA8dGg+U2l0PC90aD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgICA8L3RoZWFkPlxuICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49Mz5TaXQ8L3RoPlxuICAgICAgICAgICAgICAgPHRkPkRvbG9yPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1udW1lcmljYWw+MDMuNzg4PC90ZD5cbiAgICAgICAgICAgICAgIDx0ZD5Mb3JlbTwvdGQ+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0ZD5Eb2xvcjwvdGQ+XG4gICAgICAgICAgICAgICA8dGQgY2xhc3M9bnVtZXJpY2FsPjMyLjIxMDwvdGQ+XG4gICAgICAgICAgICAgICA8dGQ+TG9yZW08L3RkPlxuICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICA8dGQ+RG9sb3I8L3RkPlxuICAgICAgICAgICAgICAgPHRkIGNsYXNzPW51bWVyaWNhbD40Ny43OTc8L3RkPlxuICAgICAgICAgICAgICAgPHRkPkxvcmVtPC90ZD5cbiAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49Mj5TaXQ8L3RoPlxuICAgICAgICAgICAgICAgPHRkPkRvbG9yPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1udW1lcmljYWw+MDkuNjQwPC90ZD5cbiAgICAgICAgICAgICAgIDx0ZD5Mb3JlbTwvdGQ+XG4gICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgIDx0ZD5Eb2xvcjwvdGQ+XG4gICAgICAgICAgICAgICA8dGQgY2xhc3M9bnVtZXJpY2FsPjEyLjExNzwvdGQ+XG4gICAgICAgICAgICAgICA8dGQ+TG9yZW08L3RkPlxuICAgICAgICAgICA8L3RyPlxuICAgICAgIDwvdGJvZHk+XG4gICA8L3RhYmxlPlxuICpcbiAqL1xudGFibGV7XG4gICAgd2lkdGg6MTAwJTtcbn1cbnRoLFxudGR7XG4gICAgcGFkZGluZzokYmFzZS1zcGFjaW5nLXVuaXQgLyA0O1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NDgwcHgpe1xuICAgICAgICBwYWRkaW5nOiRoYWxmLXNwYWNpbmctdW5pdDtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjpsZWZ0O1xufVxuXG5cbi8qKlxuICogQ2VsbCBhbGlnbm1lbnRzXG4gKi9cbltjb2xzcGFuXXtcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbn1cbltjb2xzcGFuPVwiMVwiXXtcbiAgICB0ZXh0LWFsaWduOmxlZnQ7XG59XG5bcm93c3Bhbl17XG4gICAgdmVydGljYWwtYWxpZ246bWlkZGxlO1xufVxuW3Jvd3NwYW49XCIxXCJde1xuICAgIHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cbi5udW1lcmljYWx7XG4gICAgdGV4dC1hbGlnbjpyaWdodDtcbn1cblxuLyoqXG4gKiBJbiB0aGUgSFRNTCBhYm92ZSB3ZSBzZWUgc2V2ZXJhbCBgY29sYCBlbGVtZW50cyB3aXRoIGNsYXNzZXMgd2hvc2UgbnVtYmVyc1xuICogcmVwcmVzZW50IGEgcGVyY2VudGFnZSB3aWR0aCBmb3IgdGhhdCBjb2x1bW4uIFdlIGxlYXZlIG9uZSBjb2x1bW4gZnJlZSBvZiBhXG4gKiBjbGFzcyBzbyB0aGF0IGNvbHVtbiBjYW4gc29hayB1cCB0aGUgZWZmZWN0cyBvZiBhbnkgYWNjaWRlbnRhbCBicmVha2FnZSBpblxuICogdGhlIHRhYmxlLlxuICovXG4udDUgICAgIHsgd2lkdGg6IDUlIH1cbi50MTAgICAgeyB3aWR0aDoxMCUgfVxuLnQxMiAgICB7IHdpZHRoOjEyLjUlIH0gICAgIC8qIDEvOCAqL1xuLnQxNSAgICB7IHdpZHRoOjE1JSB9XG4udDIwICAgIHsgd2lkdGg6MjAlIH1cbi50MjUgICAgeyB3aWR0aDoyNSUgfSAgICAgICAvKiAxLzQgKi9cbi50MzAgICAgeyB3aWR0aDozMCUgfVxuLnQzMyAgICB7IHdpZHRoOjMzLjMzMyUgfSAgIC8qIDEvMyAqL1xuLnQzNSAgICB7IHdpZHRoOjM1JSB9XG4udDM3ICAgIHsgd2lkdGg6MzcuNSUgfSAgICAgLyogMy84ICovXG4udDQwICAgIHsgd2lkdGg6NDAlIH1cbi50NDUgICAgeyB3aWR0aDo0NSUgfVxuLnQ1MCAgICB7IHdpZHRoOjUwJSB9ICAgICAgIC8qIDEvMiAqL1xuLnQ1NSAgICB7IHdpZHRoOjU1JSB9XG4udDYwICAgIHsgd2lkdGg6NjAlIH1cbi50NjIgICAgeyB3aWR0aDo2Mi41JSB9ICAgICAvKiA1LzggKi9cbi50NjUgICAgeyB3aWR0aDo2NSUgfVxuLnQ2NiAgICB7IHdpZHRoOjY2LjY2NiUgfSAgIC8qIDIvMyAqL1xuLnQ3MCAgICB7IHdpZHRoOjcwJSB9XG4udDc1ICAgIHsgd2lkdGg6NzUlIH0gICAgICAgLyogMy80Ki9cbi50ODAgICAgeyB3aWR0aDo4MCUgfVxuLnQ4NSAgICB7IHdpZHRoOjg1JSB9XG4udDg3ICAgIHsgd2lkdGg6ODcuNSUgfSAgICAgLyogNy84ICovXG4udDkwICAgIHsgd2lkdGg6OTAlIH1cbi50OTUgICAgeyB3aWR0aDo5NSUgfVxuXG5cbi8qKlxuICogQm9yZGVyZWQgdGFibGVzXG4gKi9cbi50YWJsZS0tYm9yZGVyZWR7XG5cbiAgICB0aCxcbiAgICB0ZHtcbiAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkYmFzZS11aS1jb2xvcjtcblxuICAgICAgICAmOmVtcHR5e1xuICAgICAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoe1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOjJweDtcbiAgICB9XG5cbiAgICB0Ym9keSB0ciB0aDpsYXN0LW9mLXR5cGV7XG4gICAgICAgIGJvcmRlci1yaWdodC13aWR0aDoycHg7XG4gICAgfVxufVxuXG5cbi8qKlxuICogU3RyaXBlZCB0YWJsZXNcbiAqL1xuLnRhYmxlLS1zdHJpcGVke1xuXG4gICAgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKXtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojZmZjOyAvKiBPdmVycmlkZSB0aGlzIGNvbG9yIGluIHlvdXIgdGhlbWUgc3R5bGVzaGVldCAqL1xuICAgIH1cbn1cblxuXG4vKipcbiAqIERhdGEgdGFibGVcbiAqL1xuLnRhYmxlLS1kYXRhe1xuICAgIGZvbnQ6MTJweC8xLjUgc2Fucy1zZXJpZjtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJEZPUk1TXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL01oSEhVXG4gKlxuICovXG5maWVsZHNldHtcbiAgICBwYWRkaW5nOiRiYXNlLXNwYWNpbmctdW5pdDtcbn1cblxuXG4vKipcbiAqIFRleHQgaW5wdXRzXG4gKlxuICogSW5zdGVhZCBvZiBhIGBbdHlwZV1gIHNlbGVjdG9yIGZvciBlYWNoIGtpbmQgb2YgZm9ybSBpbnB1dCwgd2UganVzdCB1c2UgYVxuICogY2xhc3MgdG8gdGFyZ2V0IGFueS9ldmVyeSBvbmUsIGUuZy46XG4gICA8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPXRleHQtaW5wdXQ+XG4gICA8aW5wdXQgdHlwZT1lbWFpbCBjbGFzcz10ZXh0LWlucHV0PlxuICAgPGlucHV0IHR5cGU9cGFzc3dvcmQgY2xhc3M9dGV4dC1pbnB1dD5cbiAqXG4gKi9cbi50ZXh0LWlucHV0LFxudGV4dGFyZWF7XG4gICAgLyoqXG4gICAgICogU3R5bGUgdGhlc2UgdmlhIHlvdXIgdGhlbWUgc3R5bGVzaGVldC5cbiAgICAgKi9cbn1cblxuXG4vKipcbiAqIEdyb3VwIHNldHMgb2YgZm9ybSBmaWVsZHMgaW4gYSBsaXN0LCBlLmcuOlxuICpcbiAgIDx1bCBjbGFzcz1mb3JtLWZpZWxkcz5cbiAgICAgICA8bGk+XG4gICAgICAgICAgIDxsYWJlbCAvPlxuICAgICAgICAgICA8aW5wdXQgLz5cbiAgICAgICA8L2xpPlxuICAgICAgIDxsaT5cbiAgICAgICAgICAgPGxhYmVsIC8+XG4gICAgICAgICAgIDxzZWxlY3QgLz5cbiAgICAgICA8L2xpPlxuICAgICAgIDxsaT5cbiAgICAgICAgICAgPGxhYmVsIC8+XG4gICAgICAgICAgIDxpbnB1dCAvPlxuICAgICAgIDwvbGk+XG4gICA8L3VsPlxuICpcbiAqL1xuLmZvcm0tZmllbGRze1xuICAgIGxpc3Qtc3R5bGU6bm9uZTtcbiAgICBtYXJnaW46MDtcbn1cbiAgICAuZm9ybS1maWVsZHMgPiBsaXtcbiAgICAgICAgQGV4dGVuZCAlc2Fzcy1tYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICAuZm9ybS1maWVsZHMgPiBsaTpsYXN0LWNoaWxke1xuICAgICAgICBtYXJnaW4tYm90dG9tOjA7XG4gICAgfVxuXG5cbi8qKlxuICogTGFiZWxzXG4gKlxuICogRGVmaW5lIGEgYC5sYWJlbGAgY2xhc3MgYXMgd2VsbCBhcyBhIGBsYWJlbGAgZWxlbWVudC4gVGhpcyBtZWFucyB3ZSBjYW4gYXBwbHlcbiAqIGxhYmVsLWxpa2Ugc3R5bGluZyB0byBtZXRhLWxhYmVscyBmb3IgZ3JvdXBzIG9mIG9wdGlvbnMgd2hlcmUgYSBgbGFiZWxgXG4gKiBlbGVtZW50IGlzIG5vdCBzdWl0YWJsZSwgZS5nLjpcbiAqXG4gICA8bGk+XG4gICAgICAgPHNwYW4gY2xhc3M9bGFiZWw+U2VsZWN0IGFuIG9wdGlvbiBiZWxvdzo8L3NwYW4+XG4gICAgICAgPHVsIGNsYXNzPVwibXVsdGktbGlzdCAgZm91ci1jb2xzXCI+XG4gICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgIDxpbnB1dCAvPiA8bGFiZWwgLz5cbiAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgPGlucHV0IC8+IDxsYWJlbCAvPlxuICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICA8aW5wdXQgLz4gPGxhYmVsIC8+XG4gICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgIDxpbnB1dCAvPiA8bGFiZWwgLz5cbiAgICAgICAgICAgPC9saT5cbiAgICAgICA8L3VsPlxuICAgPC9saT5cbiAqXG4gKi9cbmxhYmVsLFxuLmxhYmVse1xuICAgIGRpc3BsYXk6YmxvY2s7XG59XG4gICAgLyoqXG4gICAgICogRXh0cmEgaGVscCB0ZXh0IGluIGBsYWJlbGBzLCBlLmcuOlxuICAgICAqXG4gICAgICAgPGxhYmVsPkNhcmQgbnVtYmVyIDxzbWFsbCBjbGFzcz1hZGRpdGlvbmFsPk5vIHNwYWNlczwvc21hbGw+PC9sYWJlbD5cbiAgICAgKlxuICAgICAqL1xuICAgIC5hZGRpdGlvbmFse1xuICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICBmb250LXdlaWdodDpub3JtYWw7XG4gICAgfVxuXG5cbi8qXG4gKiBHcm91cHMgb2YgY2hlY2tib3hlcyBhbmQgcmFkaW9zLCBlLmcuOlxuICpcbiAgIDxsaT5cbiAgICAgICA8dWwgY2xhc3M9Y2hlY2stbGlzdD5cbiAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgPGlucHV0IC8+IDxsYWJlbCAvPlxuICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICA8aW5wdXQgLz4gPGxhYmVsIC8+XG4gICAgICAgICAgIDwvbGk+XG4gICAgICAgPC91bD5cbiAgIDwvbGk+XG4gKlxuICovXG4uY2hlY2stbGlzdHtcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gICAgbWFyZ2luOjA7XG59XG4gICAgLypcbiAgICAgKiBMYWJlbHMgaW4gY2hlY2stbGlzdHNcbiAgICAgKi9cbiAgICAuY2hlY2stbGFiZWwsXG4gICAgLmNoZWNrLWxpc3QgbGFiZWwsXG4gICAgLmNoZWNrLWxpc3QgLmxhYmVse1xuICAgICAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB9XG5cblxuLyoqXG4gKiBTcG9rZW4gZm9ybXMgYXJlIGZvciBmb3JtcyB0aGF0IHJlYWQgbGlrZSBzcG9rZW4gd29yZCwgZS5nLjpcbiAqXG4gICA8bGkgY2xhc3M9c3Bva2VuLWZvcm0+XG4gICAgICAgSGVsbG8sIG15IDxsYWJlbCBmb3I9c3Bva2VuLW5hbWU+bmFtZTwvbGFiZWw+IGlzXG4gICAgICAgPGlucHV0IHR5cGU9dGV4dCBjbGFzcz10ZXh0LWlucHV0IGlkPXNwb2tlbi1uYW1lPi4gTXkgaG9tZVxuICAgICAgIDxsYWJlbCBmb3I9Y291bnRyeT5jb3VudHJ5PC9sYWJlbD4gaXNcbiAgICAgICA8c2VsZWN0IGlkPWNvdW50cnk+XG4gICAgICAgICAgIDxvcHRpb24+VUs8L29wdGlvbj5cbiAgICAgICAgICAgPG9wdGlvbj5VUzwvb3B0aW9uPlxuICAgICAgICAgICA8b3B0aW9uPk90aGVyPC9vcHRpb24+XG4gICAgICAgPC9zZWxlY3Q+XG4gICA8L2xpPlxuICpcbiAqL1xuLnNwb2tlbi1mb3JtIGxhYmVse1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGZvbnQ6aW5oZXJpdDtcbn1cblxuXG4vKipcbiAqIEV4dHJhIGhlbHAgdGV4dCBkaXNwbGF5ZWQgYWZ0ZXIgYSBmaWVsZCB3aGVuIHRoYXQgZmllbGQgaXMgaW4gZm9jdXMsIGUuZy46XG4gKlxuICAgPGxhYmVsIGZvcj1lbWFpbD5FbWFpbDo8L2xhYmVsPlxuICAgPGlucHV0IHR5cGU9ZW1haWwgY2xhc3M9dGV4dC1pbnB1dCBpZD1lbWFpbD5cbiAgIDxzbWFsbCBjbGFzcz1leHRyYS1oZWxwPi5lZHUgZW1haWxzIG9ubHk8L3NtYWxsPlxuICpcbiAqIFdlIGxlYXZlIHRoZSBoZWxwIHRleHQgaW4gdGhlIGRvY3VtZW50IGZsb3cgYW5kIG1lcmVseSBzZXQgaXQgdG9cbiAqIGB2aXNpYmlsaXR5OmhpZGRlbjtgLiBUaGlzIG1lYW5zIHRoYXQgaXQgd29u4oCZdCBpbnRlcmZlcmUgd2l0aCBhbnl0aGluZyBvbmNlXG4gKiBpdCByZWFwcGVhcnMuXG4gKlxuICovXG4vKnNtYWxsKi8uZXh0cmEtaGVscHtcbiAgICBkaXNwbGF5OmlubGluZS1ibG9jaztcbiAgICB2aXNpYmlsaXR5OmhpZGRlbjtcbn1cbi50ZXh0LWlucHV0OmFjdGl2ZSArIC5leHRyYS1oZWxwLFxuLnRleHQtaW5wdXQ6Zm9jdXMgKyAuZXh0cmEtaGVscHtcbiAgICB2aXNpYmlsaXR5OnZpc2libGU7XG59XG4iLCJAaWYgJHVzZS1ncmlkcyA9PSB0cnVle1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRHUklEU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogRmx1aWQgYW5kIG5lc3RhYmxlIGdyaWQgc3lzdGVtLCBlLmcuOlxuICpcbiAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XG5cbiAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXRoaXJkXCI+XG4gICAgICAgICAgIDxwPk9uZSB0aGlyZCBncmlkPC9wPlxuICAgICAgIDwvZGl2PjwhLS1cblxuICAgIC0tPjxkaXYgY2xhc3M9XCJncmlkX19pdGVtICB0d28tdGhpcmRzXCI+XG4gICAgICAgICAgIDxwPlR3byB0aGlyZHMgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLWhhbGZcIj5cbiAgICAgICAgICAgPHA+T25lIGhhbGYgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXF1YXJ0ZXJcIj5cbiAgICAgICAgICAgPHA+T25lIHF1YXJ0ZXIgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj48IS0tXG5cbiAgICAtLT48ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbSAgb25lLXF1YXJ0ZXJcIj5cbiAgICAgICAgICAgPHA+T25lIHF1YXJ0ZXIgZ3JpZDwvcD5cbiAgICAgICA8L2Rpdj5cblxuICAgPC9kaXY+XG4gKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL0NMWVVDXG4gKlxuICovXG5cblxuLyoqXG4gKiBHcmlkIHdyYXBwZXJcbiAqL1xuLmdyaWR7XG4gICAgbWFyZ2luLWxlZnQ6LSRiYXNlLXNwYWNpbmctdW5pdDtcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gICAgbWFyZ2luLWJvdHRvbTowO1xufVxuXG5cbiAgICAvKipcbiAgICAgKiBWZXJ5IGluZnJlcXVlbnRseSBvY2N1cmluZyBncmlkIHdyYXBwZXJzIGFzIGNoaWxkcmVuIG9mIGdyaWQgd3JhcHBlcnMuXG4gICAgICovXG4gICAgLmdyaWQgPiAuZ3JpZHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6MDtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEdyaWRcbiAgICAgKi9cbiAgICAuZ3JpZF9faXRlbXtcbiAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICAgIHBhZGRpbmctbGVmdDokYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOnRvcDtcbiAgICAgICAgQGlmICRnbG9iYWwtYm9yZGVyLWJveCA9PSBmYWxzZXtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcihib3gtc2l6aW5nLCBib3JkZXItYm94KTtcbiAgICAgICAgfVxuICAgIH1cblxufS8vZW5kaWZcbiIsIkBpZiAkdXNlLW5hdiA9PSB0cnVlIG9yICR1c2Utb3B0aW9ucyA9PSB0cnVlIG9yICR1c2UtcGFnaW5hdGlvbiA9PSB0cnVlIG9yICR1c2UtYnJlYWRjcnVtYiA9PSB0cnVle1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICROQVZcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIE5hdiBhYnN0cmFjdGlvbiBhcyBwZXI6IGNzc3dpemFyZHJ5LmNvbS8yMDExLzA5L3RoZS1uYXYtYWJzdHJhY3Rpb25cbiAqIFdoZW4gdXNlZCBvbiBhbiBgb2xgIG9yIGB1bGAsIHRoaXMgY2xhc3MgdGhyb3dzIHRoZSBsaXN0IGludG8gaG9yaXpvbnRhbCBtb2RlXG4gKiBlLmcuOlxuICpcbiAgIDx1bCBjbGFzcz1uYXY+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Ib21lPC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5BYm91dDwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+UG9ydGZvbGlvPC9hPjwvbGk+XG4gICAgICAgPGxpPjxhIGhyZWY9Iz5Db250YWN0PC9hPjwvbGk+XG4gICA8L3VsPlxuICpcbiAqIERlbW86IGpzZmlkZGxlLm5ldC9pbnVpdGNzcy9WbnBoNFxuICpcbiAqL1xuLm5hdntcbiAgICBsaXN0LXN0eWxlOm5vbmU7XG4gICAgbWFyZ2luLWxlZnQ6MDtcbiAgICBAZXh0ZW5kIC5jZjtcblxuICAgID4gbGl7XG5cbiAgICAgICAgJixcbiAgICAgICAgPiBhe1xuICAgICAgICAgICAgZGlzcGxheTppbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICpkaXNwbGF5OmlubGluZTtcbiAgICAgICAgICAgIHpvb206MTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKipcbiAqIGAubmF2LS1zdGFja2VkYCBleHRlbmRzIGAubmF2YCBhbmQgdGhyb3dzIHRoZSBsaXN0IGludG8gdmVydGljYWwgbW9kZSwgZS5nLjpcbiAqXG4gICA8dWwgY2xhc3M9XCJuYXYgIG5hdi0tc3RhY2tlZFwiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKi9cbi5uYXYtLXN0YWNrZWR7XG5cbiAgICA+IGxpe1xuICAgICAgICBkaXNwbGF5Omxpc3QtaXRlbTtcblxuICAgICAgICA+IGF7XG4gICAgICAgICAgICBkaXNwbGF5OmJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKlxuICogYC5uYXYtLWJhbm5lcmAgZXh0ZW5kcyBgLm5hdmAgYW5kIGNlbnRyZXMgdGhlIGxpc3QsIGUuZy46XG4gKlxuICAgPHVsIGNsYXNzPVwibmF2ICBuYXYtLWJhbm5lclwiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKi9cbi5uYXYtLWJhbm5lcntcbiAgICB0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuXG4vKipcbiAqIEdpdmUgbmF2IGxpbmtzIGEgYmlnLCBibG9ja3kgaGl0IGFyZWEuIEV4dGVuZHMgYC5uYXZgLCBlLmcuOlxuICpcbiAgIDx1bCBjbGFzcz1cIm5hdiAgbmF2LS1ibG9ja1wiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKi9cbi5uYXYtLWJsb2Nre1xuICAgIGxpbmUtaGVpZ2h0OjE7XG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHdoaXRlc3BhY2UgY2F1c2VkIGJ5IGBpbmxpbmUtYmxvY2tgLlxuICAgICAqL1xuICAgIGxldHRlci1zcGFjaW5nOi0wLjMxZW07XG4gICAgd29yZC1zcGFjaW5nOi0wLjQzZW07XG4gICAgd2hpdGUtc3BhY2U6bm93cmFwO1xuXG4gICAgPiBsaXtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6bm9ybWFsO1xuICAgICAgICB3b3JkLXNwYWNpbmc6bm9ybWFsO1xuXG4gICAgICAgID4gYXtcbiAgICAgICAgICAgIHBhZGRpbmc6JGhhbGYtc3BhY2luZy11bml0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8qKlxuICogRm9yY2UgYSBuYXYgdG8gb2NjdXB5IDEwMCUgb2YgdGhlIGF2YWlsYWJsZSB3aWR0aCBvZiBpdHMgcGFyZW50LiBFeHRlbmRzXG4gKiBgLm5hdmAsIGUuZy46XG4gKlxuICAgPHVsIGNsYXNzPVwibmF2ICBuYXYtLWZpdFwiPlxuICAgICAgIDxsaT48YSBocmVmPSM+SG9tZTwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+QWJvdXQ8L2E+PC9saT5cbiAgICAgICA8bGk+PGEgaHJlZj0jPlBvcnRmb2xpbzwvYT48L2xpPlxuICAgICAgIDxsaT48YSBocmVmPSM+Q29udGFjdDwvYT48L2xpPlxuICAgPC91bD5cbiAqXG4gKiBUaGFua3MgdG8gQHBpbXBsIGZvciB0aGlzIGlkZWEhXG4gKi9cbi5uYXYtLWZpdHtcbiAgICBkaXNwbGF5OnRhYmxlO1xuICAgIHdpZHRoOjEwMCU7XG5cbiAgICA+IGxpe1xuICAgICAgICBkaXNwbGF5OnRhYmxlLWNlbGw7XG5cbiAgICAgICAgPiBhe1xuICAgICAgICAgICAgZGlzcGxheTpibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKipcbiAqIE1ha2UgYSBsaXN0IG9mIGtleXdvcmRzLiBFeHRlbmRzIGAubmF2YCwgZS5nLjpcbiAqXG4gICBgPHVsIGNsYXNzPVwibmF2ICBuYXYtLWtleXdvcmRzPmBcbiAqXG4gKi9cbi5uYXYtLWtleXdvcmRze1xuXG4gICAgPiBsaXtcblxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgICAgY29udGVudDpcIlxcMDAyQ1wiIFwiXFwwMEEwXCI7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQ6YWZ0ZXJ7XG4gICAgICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbn0vL2VuZGlmXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRXSURUSFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdC4gVGhlc2UgYXJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlclxuICogb2JqZWN0cyBhbmQgYWJzdHJhY3Rpb25zIGZvdW5kIGluIGludWl0LmNzcywgbW9zdCBjb21tb25seSB0aGUgZ3JpZCBzeXN0ZW1cbiAqIGFuZCBmYXV4IGZsZXhib3guXG4gKlxuICogV2UgaGF2ZSBhIG1peGluIHRvIGdlbmVyYXRlIG91ciB3aWR0aHMgYW5kIHRoZWlyIGJyZWFrcG9pbnQtc3BlY2lmaWNcbiAqIHZhcmlhdGlvbnMuXG4gKi9cblxuQG1peGluIGdyaWQtc2V0dXAoJG5hbWVzcGFjZTogXCJcIikge1xuICAgIC8qKlxuICAgICogV2hvbGVcbiAgICAqL1xuICAgIC4jeyRuYW1lc3BhY2V9b25lLXdob2xlICAgICAgICAgeyB3aWR0aDoxMDAlOyB9XG5cblxuICAgIC8qKlxuICAgICogSGFsdmVzXG4gICAgKi9cbiAgICAuI3skbmFtZXNwYWNlfW9uZS1oYWxmICAgICAgICAgIHsgd2lkdGg6NTAlOyB9XG5cblxuICAgIC8qKlxuICAgICogVGhpcmRzXG4gICAgKi9cbiAgICAuI3skbmFtZXNwYWNlfW9uZS10aGlyZCAgICAgICAgIHsgd2lkdGg6MzMuMzMzJTsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dHdvLXRoaXJkcyAgICAgICAgeyB3aWR0aDo2Ni42NjYlOyB9XG5cblxuICAgIC8qKlxuICAgICogUXVhcnRlcnNcbiAgICAqL1xuICAgIC4jeyRuYW1lc3BhY2V9b25lLXF1YXJ0ZXIgICAgICAgeyB3aWR0aDoyNSU7IH1cbiAgICAuI3skbmFtZXNwYWNlfXR3by1xdWFydGVycyAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfW9uZS1oYWxmOyB9XG4gICAgLiN7JG5hbWVzcGFjZX10aHJlZS1xdWFydGVycyAgICB7IHdpZHRoOjc1JTsgfVxuXG5cbiAgICAvKipcbiAgICAqIEZpZnRoc1xuICAgICovXG4gICAgLiN7JG5hbWVzcGFjZX1vbmUtZmlmdGggICAgICAgICB7IHdpZHRoOjIwJTsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dHdvLWZpZnRocyAgICAgICAgeyB3aWR0aDo0MCU7IH1cbiAgICAuI3skbmFtZXNwYWNlfXRocmVlLWZpZnRocyAgICAgIHsgd2lkdGg6NjAlOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1mb3VyLWZpZnRocyAgICAgICB7IHdpZHRoOjgwJTsgfVxuXG5cbiAgICAvKipcbiAgICAqIFNpeHRoc1xuICAgICovXG4gICAgLiN7JG5hbWVzcGFjZX1vbmUtc2l4dGggICAgICAgICB7IHdpZHRoOjE2LjY2NiU7IH1cbiAgICAuI3skbmFtZXNwYWNlfXR3by1zaXh0aHMgICAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfW9uZS10aGlyZDsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dGhyZWUtc2l4dGhzICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAuI3skbmFtZXNwYWNlfWZvdXItc2l4dGhzICAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfXR3by10aGlyZHM7IH1cbiAgICAuI3skbmFtZXNwYWNlfWZpdmUtc2l4dGhzICAgICAgIHsgd2lkdGg6ODMuMzMzJTsgfVxuXG5cbiAgICAvKipcbiAgICAqIEVpZ2h0aHNcbiAgICAqL1xuICAgIC4jeyRuYW1lc3BhY2V9b25lLWVpZ2h0aCAgICAgICAgeyB3aWR0aDoxMi41JTsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dHdvLWVpZ2h0aHMgICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9b25lLXF1YXJ0ZXI7IH1cbiAgICAuI3skbmFtZXNwYWNlfXRocmVlLWVpZ2h0aHMgICAgIHsgd2lkdGg6MzcuNSU7IH1cbiAgICAuI3skbmFtZXNwYWNlfWZvdXItZWlnaHRocyAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfW9uZS1oYWxmOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1maXZlLWVpZ2h0aHMgICAgICB7IHdpZHRoOjYyLjUlOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1zaXgtZWlnaHRocyAgICAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX10aHJlZS1xdWFydGVyczsgfVxuICAgIC4jeyRuYW1lc3BhY2V9c2V2ZW4tZWlnaHRocyAgICAgeyB3aWR0aDo4Ny41JTsgfVxuXG5cbiAgICAvKipcbiAgICAqIFRlbnRoc1xuICAgICovXG4gICAgLiN7JG5hbWVzcGFjZX1vbmUtdGVudGggICAgICAgICB7IHdpZHRoOjEwJTsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dHdvLXRlbnRocyAgICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9b25lLWZpZnRoOyB9XG4gICAgLiN7JG5hbWVzcGFjZX10aHJlZS10ZW50aHMgICAgICB7IHdpZHRoOjMwJTsgfVxuICAgIC4jeyRuYW1lc3BhY2V9Zm91ci10ZW50aHMgICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9dHdvLWZpZnRoczsgfVxuICAgIC4jeyRuYW1lc3BhY2V9Zml2ZS10ZW50aHMgICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAuI3skbmFtZXNwYWNlfXNpeC10ZW50aHMgICAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfXRocmVlLWZpZnRoczsgfVxuICAgIC4jeyRuYW1lc3BhY2V9c2V2ZW4tdGVudGhzICAgICAgeyB3aWR0aDo3MCU7IH1cbiAgICAuI3skbmFtZXNwYWNlfWVpZ2h0LXRlbnRocyAgICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfWZvdXItZmlmdGhzOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1uaW5lLXRlbnRocyAgICAgICB7IHdpZHRoOjkwJTsgfVxuXG5cbiAgICAvKipcbiAgICAqIFR3ZWxmdGhzXG4gICAgKi9cbiAgICAuI3skbmFtZXNwYWNlfW9uZS10d2VsZnRoICAgICAgIHsgd2lkdGg6OC4zMzMlOyB9XG4gICAgLiN7JG5hbWVzcGFjZX10d28tdHdlbGZ0aHMgICAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX1vbmUtc2l4dGg7IH1cbiAgICAuI3skbmFtZXNwYWNlfXRocmVlLXR3ZWxmdGhzICAgIHsgQGV4dGVuZCAuI3skbmFtZXNwYWNlfW9uZS1xdWFydGVyOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1mb3VyLXR3ZWxmdGhzICAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX1vbmUtdGhpcmQ7IH1cbiAgICAuI3skbmFtZXNwYWNlfWZpdmUtdHdlbGZ0aHMgICAgIHsgd2lkdGg6NDEuNjY2JSB9XG4gICAgLiN7JG5hbWVzcGFjZX1zaXgtdHdlbGZ0aHMgICAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX1vbmUtaGFsZjsgfVxuICAgIC4jeyRuYW1lc3BhY2V9c2V2ZW4tdHdlbGZ0aHMgICAgeyB3aWR0aDo1OC4zMzMlOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1laWdodC10d2VsZnRocyAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX10d28tdGhpcmRzOyB9XG4gICAgLiN7JG5hbWVzcGFjZX1uaW5lLXR3ZWxmdGhzICAgICB7IEBleHRlbmQgLiN7JG5hbWVzcGFjZX10aHJlZS1xdWFydGVyczsgfVxuICAgIC4jeyRuYW1lc3BhY2V9dGVuLXR3ZWxmdGhzICAgICAgeyBAZXh0ZW5kIC4jeyRuYW1lc3BhY2V9Zml2ZS1zaXh0aHM7IH1cbiAgICAuI3skbmFtZXNwYWNlfWVsZXZlbi10d2VsZnRocyAgIHsgd2lkdGg6OTEuNjY2JTsgfVxufVxuXG5AaW5jbHVkZSBncmlkLXNldHVwKCk7XG5cblxuXG4vKipcbiAqIElmIHlvdSBoYXZlIHNldCBgJHJlc3BvbnNpdmVgIHRvIOKAmHRydWXigJkgaW4gYF92YXJzLnNjc3NgIHRoZW4geW91IG5vdyBoYXZlXG4gKiBhY2Nlc3MgdG8gdGhlc2UgY2xhc3Nlcy4gWW91IGNhbiBkZWZpbmUgYXQgd2hpY2ggYnJlYWtwb2ludCB5b3XigJlkIGxpa2UgYW5cbiAqIGVsZW1lbnQgdG8gYmUgYSBjZXJ0YWluIHNpemUsIGUuZy46XG4gKlxuICogYDxkaXYgY2xhc3M9XCJnICBvbmUtcXVhcnRlciAgbGFwLW9uZS1oYWxmICBwYWxtLW9uZS13aG9sZVwiPiAuLi4gPC9kaXY+YFxuICpcbiAqIFRoaXMgd291bGQgY3JlYXRlIGEgYGRpdmAgdGhhdCwgYXQg4oCYZGVza3RvcOKAmSBzaXplcywgdGFrZXMgdXAgYSBxdWFydGVyIG9mIHRoZVxuICogaG9yaXpvbnRhbCBzcGFjZSwgYSBoYWxmIG9mIHRoYXQgc3BhY2UgYXQg4oCYdGFibGV04oCZIHNpemVzLCBhbmQgZ29lcyBmdWxsIHdpZHRoXG4gKiBhdCDigJhtb2JpbGXigJkgc2l6ZXMuXG4gKlxuICogRGVtbzoganNmaWRkbGUubmV0L2ludWl0Y3NzL1dTNEdlXG4gKlxuICovXG5cbkBpZiAkcmVzcG9uc2l2ZSA9PSB0cnVle1xuXG5AaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKXtcbiAgICBAaW5jbHVkZSBncmlkLXNldHVwKFwicGFsbS1cIik7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcCl7XG4gICAgQGluY2x1ZGUgZ3JpZC1zZXR1cChcImxhcC1cIik7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcC1hbmQtdXApe1xuICAgIEBpbmNsdWRlIGdyaWQtc2V0dXAoXCJsYXAtYW5kLXVwLVwiKTtcbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkocG9ydGFibGUpe1xuICAgIEBpbmNsdWRlIGdyaWQtc2V0dXAoXCJwb3J0YWJsZS1cIik7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spe1xuICAgIEBpbmNsdWRlIGdyaWQtc2V0dXAoXCJkZXNrLVwiKTtcbn1cblxuXG4vKipcbiAqIElmIHlvdSBoYXZlIHNldCB0aGUgYWRkaXRpb25hbCBgJHJlc3BvbnNpdmUtZXh0cmFgIHZhcmlhYmxlIHRvIOKAmHRydWXigJkgaW5cbiAqIGBfdmFycy5zY3NzYCB0aGVuIHlvdSBub3cgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBjbGFzcyBhdmFpbGFibGUgdG9cbiAqIGFjY29tb2RhdGUgbXVjaCBsYXJnZXIgc2NyZWVuIHJlc29sdXRpb25zLlxuICovXG5cbkBpZiAkcmVzcG9uc2l2ZS1leHRyYSA9PSB0cnVle1xuXG5AaW5jbHVkZSBtZWRpYS1xdWVyeShkZXNrLXdpZGUpe1xuICAgIEBpbmNsdWRlIGdyaWQtc2V0dXAoXCJkZXNrLXdpZGUtXCIpO1xufVxuXG59XG5cbn0gLyogZW5kaWYgKi9cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJFBVU0hcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFB1c2ggY2xhc3NlcywgdG8gbW92ZSBncmlkIGl0ZW1zIG92ZXIgdG8gdGhlIHJpZ2h0IGJ5IGNlcnRhaW4gYW1vdW50cy5cbiAqL1xuXG5AbWl4aW4gcHVzaC1zZXR1cCgkbmFtZXNwYWNlOiBcIlwiKSB7XG5cbiAgICAvKipcbiAgICAgKiBXaG9sZVxuICAgICAqL1xuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLXdob2xlICAgICAgICAgICB7IGxlZnQ6MTAwJTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBIYWx2ZXNcbiAgICAgKi9cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS1oYWxmICAgICAgICAgICAgeyBsZWZ0OjUwJTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlyZHNcbiAgICAgKi9cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS10aGlyZCAgICAgICAgICAgeyBsZWZ0OjMzLjMzMyU7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXR3by10aGlyZHMgICAgICAgICAgeyBsZWZ0OjY2LjY2NiU7IH1cblxuXG4gICAgLyoqXG4gICAgICogUXVhcnRlcnNcbiAgICAgKi9cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS1xdWFydGVyICAgICAgICAgeyBsZWZ0OjI1JTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXF1YXJ0ZXJzICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtaGFsZjsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dGhyZWUtcXVhcnRlcnMgICAgICB7IGxlZnQ6NzUlOyB9XG5cblxuICAgIC8qKlxuICAgICAqIEZpZnRoc1xuICAgICAqL1xuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLWZpZnRoICAgICAgICAgICB7IGxlZnQ6MjAlOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX10d28tZmlmdGhzICAgICAgICAgIHsgbGVmdDo0MCU7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLWZpZnRocyAgICAgICAgeyBsZWZ0OjYwJTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9Zm91ci1maWZ0aHMgICAgICAgICB7IGxlZnQ6ODAlOyB9XG5cblxuICAgIC8qKlxuICAgICAqIFNpeHRoc1xuICAgICAqL1xuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLXNpeHRoICAgICAgICAgICB7IGxlZnQ6MTYuNjY2JTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXNpeHRocyAgICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtdGhpcmQ7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLXNpeHRocyAgICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfWZvdXItc2l4dGhzICAgICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXRoaXJkczsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9Zml2ZS1zaXh0aHMgICAgICAgICB7IGxlZnQ6ODMuMzMzJTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBFaWdodGhzXG4gICAgICovXG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtZWlnaHRoICAgICAgICAgIHsgbGVmdDoxMi41JTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLWVpZ2h0aHMgICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtcXVhcnRlcjsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dGhyZWUtZWlnaHRocyAgICAgICB7IGxlZnQ6MzcuNSU7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfWZvdXItZWlnaHRocyAgICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfWZpdmUtZWlnaHRocyAgICAgICAgeyBsZWZ0OjYyLjUlOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1zaXgtZWlnaHRocyAgICAgICAgIHsgQGV4dGVuZCAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLXF1YXJ0ZXJzOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1zZXZlbi1laWdodGhzICAgICAgIHsgbGVmdDo4Ny41JTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUZW50aHNcbiAgICAgKi9cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS10ZW50aCAgICAgICAgICAgeyBsZWZ0OjEwJTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXRlbnRocyAgICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtZmlmdGg7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLXRlbnRocyAgICAgICAgeyBsZWZ0OjMwJTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9Zm91ci10ZW50aHMgICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX10d28tZmlmdGhzOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1maXZlLXRlbnRocyAgICAgICAgIHsgQGV4dGVuZCAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS1oYWxmOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1zaXgtdGVudGhzICAgICAgICAgIHsgQGV4dGVuZCAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLWZpZnRoczsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9c2V2ZW4tdGVudGhzICAgICAgICB7IGxlZnQ6NzAlOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1laWdodC10ZW50aHMgICAgICAgIHsgQGV4dGVuZCAucHVzaC0tI3skbmFtZXNwYWNlfWZvdXItZmlmdGhzOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1uaW5lLXRlbnRocyAgICAgICAgIHsgbGVmdDo5MCU7IH1cblxuXG4gICAgLyoqXG4gICAgICogVHdlbGZ0aHNcbiAgICAgKi9cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfW9uZS10d2VsZnRoICAgICAgICAgeyBsZWZ0OjguMzMzJTsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXR3ZWxmdGhzICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1vbmUtc2l4dGg7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXRocmVlLXR3ZWxmdGhzICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLXF1YXJ0ZXI7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfWZvdXItdHdlbGZ0aHMgICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLXRoaXJkOyB9XG4gICAgLnB1c2gtLSN7JG5hbWVzcGFjZX1maXZlLXR3ZWxmdGhzICAgICAgIHsgbGVmdDo0MS42NjYlIH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXNpeC10d2VsZnRocyAgICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfXNldmVuLXR3ZWxmdGhzICAgICAgeyBsZWZ0OjU4LjMzMyU7IH1cbiAgICAucHVzaC0tI3skbmFtZXNwYWNlfWVpZ2h0LXR3ZWxmdGhzICAgICAgeyBAZXh0ZW5kIC5wdXNoLS0jeyRuYW1lc3BhY2V9dHdvLXRoaXJkczsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9bmluZS10d2VsZnRocyAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX10aHJlZS1xdWFydGVyczsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9dGVuLXR3ZWxmdGhzICAgICAgICB7IEBleHRlbmQgLnB1c2gtLSN7JG5hbWVzcGFjZX1maXZlLXNpeHRoczsgfVxuICAgIC5wdXNoLS0jeyRuYW1lc3BhY2V9ZWxldmVuLXR3ZWxmdGhzICAgICB7IGxlZnQ6OTEuNjY2JTsgfVxufVxuXG5AaWYgJHB1c2ggPT0gdHJ1ZXtcblxuQGluY2x1ZGUgcHVzaC1zZXR1cCgpO1xuXG4vKipcbiAqIE5vdCBhIHBhcnRpY3VsYXJseSBncmVhdCBzZWxlY3RvciwgYnV0IHRoZSBEUlllc3Qgd2F5IHRvIGRvIHRoaW5ncy5cbiAqL1xuW2NsYXNzKj1cInB1c2gtLVwiXXsgcG9zaXRpb246cmVsYXRpdmU7IH1cblxuQGlmICRwYWxtLXB1c2ggPT0gdHJ1ZXtcblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pe1xuICAgICAgICBAaW5jbHVkZSBwdXNoLXNldHVwKFwicGFsbS1cIik7XG4gICAgfVxuXG59XG5cbkBpZiAkbGFwLXB1c2ggPT0gdHJ1ZXtcblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcCl7XG4gICAgICAgIEBpbmNsdWRlIHB1c2gtc2V0dXAoXCJsYXAtXCIpO1xuICAgIH1cblxufVxuXG5AaWYgJGxhcC1hbmQtdXAtcHVzaCA9PSB0cnVle1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCl7XG4gICAgICAgIEBpbmNsdWRlIHB1c2gtc2V0dXAoXCJsYXAtYW5kLXVwLVwiKTtcbiAgICB9XG5cbn1cblxuQGlmICRwb3J0YWJsZS1wdXNoID09IHRydWV7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShwb3J0YWJsZSl7XG4gICAgICAgIEBpbmNsdWRlIHB1c2gtc2V0dXAoXCJwb3J0YWJsZS1cIik7XG4gICAgfVxuXG59XG5cbkBpZiAkZGVzay1wdXNoID09IHRydWV7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShkZXNrKXtcbiAgICAgICAgQGluY2x1ZGUgcHVzaC1zZXR1cChcImRlc2stXCIpO1xuICAgIH1cblxufVxuXG59Ly9lbmRpZlxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkUFVMTFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogUHVsbCBjbGFzc2VzLCB0byBtb3ZlIGdyaWQgaXRlbXMgb3ZlciB0byB0aGUgcmlnaHQgYnkgY2VydGFpbiBhbW91bnRzLlxuICovXG5cbkBtaXhpbiBwdWxsLXNldHVwKCRuYW1lc3BhY2U6IFwiXCIpIHtcblxuICAgIC8qKlxuICAgICAqIFdob2xlXG4gICAgICovXG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtd2hvbGUgICAgICAgICAgIHsgcmlnaHQ6MTAwJTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBIYWx2ZXNcbiAgICAgKi9cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1oYWxmICAgICAgICAgICAgeyByaWdodDo1MCU7IH1cblxuXG4gICAgLyoqXG4gICAgICogVGhpcmRzXG4gICAgICovXG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtdGhpcmQgICAgICAgICAgIHsgcmlnaHQ6MzMuMzMzJTsgfVxuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9dHdvLXRoaXJkcyAgICAgICAgICB7IHJpZ2h0OjY2LjY2NiU7IH1cblxuXG4gICAgLyoqXG4gICAgICogUXVhcnRlcnNcbiAgICAgKi9cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1xdWFydGVyICAgICAgICAgeyByaWdodDoyNSU7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXR3by1xdWFydGVycyAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXRocmVlLXF1YXJ0ZXJzICAgICAgeyByaWdodDo3NSU7IH1cblxuXG4gICAgLyoqXG4gICAgICogRmlmdGhzXG4gICAgICovXG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtZmlmdGggICAgICAgICAgIHsgcmlnaHQ6MjAlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX10d28tZmlmdGhzICAgICAgICAgIHsgcmlnaHQ6NDAlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX10aHJlZS1maWZ0aHMgICAgICAgIHsgcmlnaHQ6NjAlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1mb3VyLWZpZnRocyAgICAgICAgIHsgcmlnaHQ6ODAlOyB9XG5cblxuICAgIC8qKlxuICAgICAqIFNpeHRoc1xuICAgICAqL1xuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLXNpeHRoICAgICAgICAgICB7IHJpZ2h0OjE2LjY2NiU7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXR3by1zaXh0aHMgICAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLXRoaXJkOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX10aHJlZS1zaXh0aHMgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1oYWxmOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1mb3VyLXNpeHRocyAgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfXR3by10aGlyZHM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfWZpdmUtc2l4dGhzICAgICAgICAgeyByaWdodDo4My4zMzMlOyB9XG5cblxuICAgIC8qKlxuICAgICAqIEVpZ2h0aHNcbiAgICAgKi9cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1laWdodGggICAgICAgICAgeyByaWdodDoxMi41JTsgfVxuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9dHdvLWVpZ2h0aHMgICAgICAgICB7IEBleHRlbmQgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtcXVhcnRlcjsgfVxuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9dGhyZWUtZWlnaHRocyAgICAgICB7IHJpZ2h0OjM3LjUlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1mb3VyLWVpZ2h0aHMgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1oYWxmOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1maXZlLWVpZ2h0aHMgICAgICAgIHsgcmlnaHQ6NjIuNSU7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXNpeC1laWdodGhzICAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9dGhyZWUtcXVhcnRlcnM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXNldmVuLWVpZ2h0aHMgICAgICAgeyByaWdodDo4Ny41JTsgfVxuXG5cbiAgICAvKipcbiAgICAgKiBUZW50aHNcbiAgICAgKi9cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS10ZW50aCAgICAgICAgICAgeyByaWdodDoxMCU7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXR3by10ZW50aHMgICAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLWZpZnRoOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX10aHJlZS10ZW50aHMgICAgICAgIHsgcmlnaHQ6MzAlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1mb3VyLXRlbnRocyAgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfXR3by1maWZ0aHM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfWZpdmUtdGVudGhzICAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXNpeC10ZW50aHMgICAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9dGhyZWUtZmlmdGhzOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1zZXZlbi10ZW50aHMgICAgICAgIHsgcmlnaHQ6NzAlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1laWdodC10ZW50aHMgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfWZvdXItZmlmdGhzOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1uaW5lLXRlbnRocyAgICAgICAgIHsgcmlnaHQ6OTAlOyB9XG5cblxuICAgIC8qKlxuICAgICAqIFR3ZWxmdGhzXG4gICAgICovXG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtdHdlbGZ0aCAgICAgICAgIHsgcmlnaHQ6OC4zMzMlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX10d28tdHdlbGZ0aHMgICAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfW9uZS1zaXh0aDsgfVxuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9dGhyZWUtdHdlbGZ0aHMgICAgICB7IEBleHRlbmQgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtcXVhcnRlcjsgfVxuICAgIC5wdWxsLS0jeyRuYW1lc3BhY2V9Zm91ci10d2VsZnRocyAgICAgICB7IEBleHRlbmQgLnB1bGwtLSN7JG5hbWVzcGFjZX1vbmUtdGhpcmQ7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfWZpdmUtdHdlbGZ0aHMgICAgICAgeyByaWdodDo0MS42NjYlIH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXNpeC10d2VsZnRocyAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9b25lLWhhbGY7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXNldmVuLXR3ZWxmdGhzICAgICAgeyByaWdodDo1OC4zMzMlOyB9XG4gICAgLnB1bGwtLSN7JG5hbWVzcGFjZX1laWdodC10d2VsZnRocyAgICAgIHsgQGV4dGVuZCAucHVsbC0tI3skbmFtZXNwYWNlfXR3by10aGlyZHM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfW5pbmUtdHdlbGZ0aHMgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9dGhyZWUtcXVhcnRlcnM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfXRlbi10d2VsZnRocyAgICAgICAgeyBAZXh0ZW5kIC5wdWxsLS0jeyRuYW1lc3BhY2V9Zml2ZS1zaXh0aHM7IH1cbiAgICAucHVsbC0tI3skbmFtZXNwYWNlfWVsZXZlbi10d2VsZnRocyAgICAgeyByaWdodDo5MS42NjYlOyB9XG59XG5cbkBpZiAkcHVsbCA9PSB0cnVle1xuXG4vKipcbiAqIE5vdCBhIHBhcnRpY3VsYXJseSBncmVhdCBzZWxlY3RvciwgYnV0IHRoZSBEUlllc3Qgd2F5IHRvIGRvIHRoaW5ncy5cbiAqL1xuW2NsYXNzKj1cInB1bGwtLVwiXXsgcG9zaXRpb246cmVsYXRpdmU7IH1cblxuQGluY2x1ZGUgcHVsbC1zZXR1cCgpO1xuXG5AaWYgJHBhbG0tcHVsbCA9PSB0cnVle1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSl7XG4gICAgICAgIEBpbmNsdWRlIHB1bGwtc2V0dXAoXCJwYWxtLVwiKTtcbiAgICB9XG5cbn1cblxuQGlmICRsYXAtcHVsbCA9PSB0cnVle1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKXtcbiAgICAgICAgQGluY2x1ZGUgcHVsbC1zZXR1cChcImxhcC1cIik7XG4gICAgfVxuXG59XG5cbkBpZiAkbGFwLWFuZC11cC1wdWxsID09IHRydWV7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXAtYW5kLXVwKXtcbiAgICAgICAgQGluY2x1ZGUgcHVsbC1zZXR1cChcImxhcC1hbmQtdXAtXCIpO1xuICAgIH1cblxufVxuXG5AaWYgJHBvcnRhYmxlLXB1bGwgPT0gdHJ1ZXtcblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBvcnRhYmxlKXtcbiAgICAgICAgQGluY2x1ZGUgcHVsbC1zZXR1cChcInBvcnRhYmxlLVwiKTtcbiAgICB9XG5cbn1cblxuQGlmICRkZXNrLXB1bGwgPT0gdHJ1ZXtcblxuICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spe1xuICAgICAgICBAaW5jbHVkZSBwdWxsLXNldHVwKFwiZGVzay1cIik7XG4gICAgfVxuXG59XG5cbn0vL2VuZGlmXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRCUkFORFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogYC5icmFuZGAgaXMgYSBxdWljayBhbmQgc2ltcGxlIHdheSB0byBhcHBseSB5b3VyIGJyYW5kIGZhY2UgYW5kL29yIGNvbG9yIHRvXG4gKiBhbnkgZWxlbWVudCB1c2luZyBhIGhhbmR5IGhlbHBlciBjbGFzcy5cbiAqL1xuLmJyYW5ke1xuICAgIGZvbnQtZmFtaWx5OiRicmFuZC1mYWNlICshaW1wb3J0YW50O1xuICAgIGNvbG9yOiRicmFuZC1jb2xvciArIWltcG9ydGFudDtcbn1cbi5icmFuZC1mYWNle1xuICAgIGZvbnQtZmFtaWx5OiRicmFuZC1mYWNlICshaW1wb3J0YW50O1xufVxuLmJyYW5kLWNvbG9yLFxuLmJyYW5kLWNvbG91cntcbiAgICBjb2xvcjokYnJhbmQtY29sb3IgKyFpbXBvcnRhbnQ7XG59IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkSEVMUEVSXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBBIHNlcmllcyBvZiBoZWxwZXIgY2xhc3NlcyB0byB1c2UgYXJiaXRyYXJpbHkuIE9ubHkgdXNlIGEgaGVscGVyIGNsYXNzIGlmIGFuXG4gKiBlbGVtZW50L2NvbXBvbmVudCBkb2VzbuKAmXQgYWxyZWFkeSBoYXZlIGEgY2xhc3MgdG8gd2hpY2ggeW91IGNvdWxkIGFwcGx5IHRoaXNcbiAqIHN0eWxpbmcsIGUuZy4gaWYgeW91IG5lZWQgdG8gZmxvYXQgYC5tYWluLW5hdmAgbGVmdCB0aGVuIGFkZCBgZmxvYXQ6bGVmdDtgIHRvXG4gKiB0aGF0IHJ1bGVzZXQgYXMgb3Bwb3NlZCB0byBhZGRpbmcgdGhlIGAuZmxvYXQtLWxlZnRgIGNsYXNzIHRvIHRoZSBtYXJrdXAuXG4gKlxuICogQSBsb3Qgb2YgdGhlc2UgY2xhc3NlcyBjYXJyeSBgIWltcG9ydGFudGAgYXMgeW91IHdpbGwgYWx3YXlzIHdhbnQgdGhlbSB0byB3aW5cbiAqIG91dCBvdmVyIG90aGVyIHNlbGVjdG9ycy5cbiAqL1xuXG5cbi8qKlxuICogQWRkL3JlbW92ZSBmbG9hdHNcbiAqL1xuLmZsb2F0LS1yaWdodCAgIHsgZmxvYXQ6cmlnaHQhaW1wb3J0YW50OyB9XG4uZmxvYXQtLWxlZnQgICAgeyBmbG9hdDpsZWZ0ICFpbXBvcnRhbnQ7IH1cbi5mbG9hdC0tbm9uZSAgICB7IGZsb2F0Om5vbmUgIWltcG9ydGFudDsgfVxuXG5cbi8qKlxuICogVGV4dCBhbGlnbm1lbnRcbiAqL1xuLnRleHQtLWxlZnQgICAgIHsgdGV4dC1hbGlnbjpsZWZ0ICAhaW1wb3J0YW50OyB9XG4udGV4dC0tY2VudGVyICAgeyB0ZXh0LWFsaWduOmNlbnRlciFpbXBvcnRhbnQ7IH1cbi50ZXh0LS1yaWdodCAgICB7IHRleHQtYWxpZ246cmlnaHQgIWltcG9ydGFudDsgfVxuXG5cbi8qKlxuICogRm9udCB3ZWlnaHRzXG4gKi9cbi53ZWlnaHQtLWxpZ2h0ICAgICAgeyBmb250LXdlaWdodDozMDAhaW1wb3J0YW50OyB9XG4ud2VpZ2h0LS1ub3JtYWwgICAgIHsgZm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDsgfVxuLndlaWdodC0tc2VtaWJvbGQgICB7IGZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnQ7IH1cblxuXG4vKipcbiAqIEFkZC9yZW1vdmUgbWFyZ2luc1xuICovXG4ucHVzaCAgICAgICAgICAgeyBtYXJnaW46ICAgICAgICRiYXNlLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLS10b3AgICAgICB7IG1hcmdpbi10b3A6ICAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnB1c2gtLXJpZ2h0ICAgIHsgbWFyZ2luLXJpZ2h0OiAkYmFzZS1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyB9XG4ucHVzaC0tYm90dG9tICAgeyBtYXJnaW4tYm90dG9tOiRiYXNlLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLS1sZWZ0ICAgICB7IG1hcmdpbi1sZWZ0OiAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnB1c2gtLWVuZHMgICAgIHsgbWFyZ2luLXRvcDogICAkYmFzZS1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiRiYXNlLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLS1zaWRlcyAgICB7IG1hcmdpbi1yaWdodDogJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6ICAkYmFzZS1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyB9XG5cbi5wdXNoLWhhbGYgICAgICAgICAgeyBtYXJnaW46ICAgICAgICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLWhhbGYtLXRvcCAgICAgeyBtYXJnaW4tdG9wOiAgICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLWhhbGYtLXJpZ2h0ICAgeyBtYXJnaW4tcmlnaHQ6ICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLWhhbGYtLWJvdHRvbSAgeyBtYXJnaW4tYm90dG9tOiRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLWhhbGYtLWxlZnQgICAgeyBtYXJnaW4tbGVmdDogICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5wdXNoLWhhbGYtLWVuZHMgICAgeyBtYXJnaW4tdG9wOiAgICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206JGhhbGYtc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnB1c2gtaGFsZi0tc2lkZXMgICB7IG1hcmdpbi1yaWdodDogJGhhbGYtc3BhY2luZy11bml0IWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6ICAkaGFsZi1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyB9XG5cbi5mbHVzaCAgICAgICAgICB7IG1hcmdpbjogICAgICAgMCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tdG9wICAgICB7IG1hcmdpbi10b3A6ICAgMCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tcmlnaHQgICB7IG1hcmdpbi1yaWdodDogMCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tYm90dG9tICB7IG1hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tbGVmdCAgICB7IG1hcmdpbi1sZWZ0OiAgMCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tZW5kcyAgICB7IG1hcmdpbi10b3A6ICAgMCFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206MCFpbXBvcnRhbnQ7IH1cbi5mbHVzaC0tc2lkZXMgICB7IG1hcmdpbi1yaWdodDogMCFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgMCFpbXBvcnRhbnQ7IH1cblxuXG4vKipcbiAqIEFkZC9yZW1vdmUgcGFkZGluZ3NcbiAqL1xuLnNvZnQgICAgICAgICAgIHsgcGFkZGluZzogICAgICAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLXRvcCAgICAgIHsgcGFkZGluZy10b3A6ICAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLXJpZ2h0ICAgIHsgcGFkZGluZy1yaWdodDogJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLWJvdHRvbSAgIHsgcGFkZGluZy1ib3R0b206JGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLWxlZnQgICAgIHsgcGFkZGluZy1sZWZ0OiAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLWVuZHMgICAgIHsgcGFkZGluZy10b3A6ICAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206JGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtLXNpZGVzICAgIHsgcGFkZGluZy1yaWdodDogJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OiAgJGJhc2Utc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuXG4uc29mdC1oYWxmICAgICAgICAgICB7IHBhZGRpbmc6ICAgICAgICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5zb2Z0LWhhbGYtLXRvcCAgICAgIHsgcGFkZGluZy10b3A6ICAgJGhhbGYtc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtaGFsZi0tcmlnaHQgICAgeyBwYWRkaW5nLXJpZ2h0OiAkaGFsZi1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyB9XG4uc29mdC1oYWxmLS1ib3R0b20gICB7IHBhZGRpbmctYm90dG9tOiRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cbi5zb2Z0LWhhbGYtLWxlZnQgICAgIHsgcGFkZGluZy1sZWZ0OiAgJGhhbGYtc3BhY2luZy11bml0IWltcG9ydGFudDsgfVxuLnNvZnQtaGFsZi0tZW5kcyAgICAgeyBwYWRkaW5nLXRvcDogICAkaGFsZi1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTokaGFsZi1zcGFjaW5nLXVuaXQhaW1wb3J0YW50OyB9XG4uc29mdC1oYWxmLS1zaWRlcyAgICB7IHBhZGRpbmctcmlnaHQ6ICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDogICRoYWxmLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7IH1cblxuLmhhcmQgICAgICAgICAgIHsgcGFkZGluZzogICAgICAgMCFpbXBvcnRhbnQ7IH1cbi5oYXJkLS10b3AgICAgICB7IHBhZGRpbmctdG9wOiAgIDAhaW1wb3J0YW50OyB9XG4uaGFyZC0tcmlnaHQgICAgeyBwYWRkaW5nLXJpZ2h0OiAwIWltcG9ydGFudDsgfVxuLmhhcmQtLWJvdHRvbSAgIHsgcGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7IH1cbi5oYXJkLS1sZWZ0ICAgICB7IHBhZGRpbmctbGVmdDogIDAhaW1wb3J0YW50OyB9XG4uaGFyZC0tZW5kcyAgICAgeyBwYWRkaW5nLXRvcDogICAwIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7IH1cbi5oYXJkLS1zaWRlcyAgICB7IHBhZGRpbmctcmlnaHQ6IDAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6ICAwIWltcG9ydGFudDsgfVxuXG5cbi8qKlxuICogUHVsbCBpdGVtcyBmdWxsIHdpZHRoIG9mIGAuaXNsYW5kYCBwYXJlbnRzLlxuICovXG4uZnVsbC1ibGVlZHtcbiAgICBtYXJnaW4tcmlnaHQ6LSRiYXNlLXNwYWNpbmctdW5pdCFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLWxlZnQ6IC0kYmFzZS1zcGFjaW5nLXVuaXQhaW1wb3J0YW50O1xuXG4gICAgLmlzbGV0ICZ7XG4gICAgICAgIG1hcmdpbi1yaWdodDotKCRoYWxmLXNwYWNpbmctdW5pdCkhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tbGVmdDogLSgkaGFsZi1zcGFjaW5nLXVuaXQpIWltcG9ydGFudDtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBBZGQgYSBoZWxwIGN1cnNvciB0byBhbnkgZWxlbWVudCB0aGF0IGdpdmVzIHRoZSB1c2VyIGV4dHJhIGluZm9ybWF0aW9uIG9uXG4gKiBgOmhvdmVyYC5cbiAqL1xuLmluZm9ybWF0aXZle1xuICAgIGN1cnNvcjpoZWxwIWltcG9ydGFudDtcbn1cblxuXG4vKipcbiAqIE11dGUgYW4gb2JqZWN0IGJ5IHJlZHVjaW5nIGl0cyBvcGFjaXR5LlxuICovXG4ubXV0ZWR7XG4gICAgb3BhY2l0eTowLjUhaW1wb3J0YW50O1xuICAgIGZpbHRlcjphbHBoYShvcGFjaXR5ID0gNTApIWltcG9ydGFudDtcbn1cblxuXG4vKipcbiAqIEFsaWduIGl0ZW1zIHRvIHRoZSByaWdodCB3aGVyZSB0aGV5IGltcGx5IHByb2dyZXNzaW9uL21vdmVtZW50IGZvcndhcmQsIGUuZy46XG4gKlxuICAgPHAgY2xhc3M9cHJvY2VlZD48YSBocmVmPSM+UmVhZCBtb3JlLi4uPC9hPjwvcD5cbiAqXG4gKi9cbi5wcm9jZWVke1xuICAgIHRleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O1xufVxuXG5cbi8qKlxuICogQWRkIGEgcmlnaHQtYW5nbGVkIHF1b3RlIHRvIGxpbmtzIHRoYXQgaW1wbHkgbW92ZW1lbnQsIGUuZy46XG4gKlxuICAgPGEgaHJlZj0jIGNsYXNzPWdvPlJlYWQgbW9yZTwvYT5cbiAqXG4gKi9cbi5nbzphZnRlcntcbiAgICBjb250ZW50OlwiXFwwMEEwXCIgXCJcXDAwQkJcIiFpbXBvcnRhbnQ7XG59XG5cblxuLyoqXG4gKiBBcHBseSBjYXBpdGFsIGNhc2UgdG8gYW4gZWxlbWVudCAodXN1YWxseSBhIGBzdHJvbmdgKS5cbiAqL1xuLmNhcHN7XG4gICAgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlIWltcG9ydGFudDtcbn1cblxuXG4vKipcbiAqIEhpZGUgY29udGVudCBvZmYtc2NyZWVuIHdpdGhvdXQgcmVzb3J0aW5nIHRvIGBkaXNwbGF5Om5vbmU7YCwgYWxzbyBwcm92aWRlXG4gKiBicmVha3BvaW50IHNwZWNpZmljIGhpZGRlbiBlbGVtZW50cy5cbiAqL1xuQG1peGluIGFjY2Vzc2liaWxpdHl7XG4gICAgYm9yZGVyOjAhaW1wb3J0YW50O1xuICAgIGNsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OjFweCFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOi0xcHghaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzowIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUhaW1wb3J0YW50O1xuICAgIHdpZHRoOjFweCFpbXBvcnRhbnQ7XG59XG4uYWNjZXNzaWJpbGl0eSxcbi52aXN1YWxseWhpZGRlbntcbiAgICBAaW5jbHVkZSBhY2Nlc3NpYmlsaXR5O1xufVxuQGlmICRyZXNwb25zaXZle1xuICAgIEBlYWNoICRzdGF0ZSBpbiBwYWxtLCBsYXAsIGxhcC1hbmQtdXAsIHBvcnRhYmxlLCBkZXNrLCBkZXNrLXdpZGV7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KCN7JHN0YXRlfSl7XG4gICAgICAgICAgICAuYWNjZXNzaWJpbGl0eS0tI3skc3RhdGV9LFxuICAgICAgICAgICAgLnZpc3VhbGx5aGlkZGVuLS0jeyRzdGF0ZX17XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYWNjZXNzaWJpbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAkZGVidWctbW9kZSA9PSB0cnVle1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkREVCVUdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIEVuYWJsZSB0aGlzIHN0eWxlc2hlZXQgdG8gdmlzdWFsbHkgZGV0ZWN0IGFueSBpbXByb3Blcmx5IG5lc3RlZCBvclxuICogcG90ZW50aWFsbHkgaW52YWxpZCBtYXJrdXAsIG9yIGFueSBwb3RlbnRpYWxseSBpbmFjY2Vzc2libGUgY29kZS5cbiAqXG4gKiBSZWQgICAgICAgICAgPT0gICAgICBkZWZpbml0ZSBlcnJvclxuICogWWVsbG93ICAgICAgID09ICAgICAgZG91YmxlLWNoZWNrXG4gKiBOb25lICAgICAgICAgPT0gICAgICBzaG91bGQgYmUgZmluZVxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb2YgY2hlY2tpbmcgbWFya3VwIHF1YWxpdHkgc2hvdWxkIG5vdCBiZSByZWxpZWRcbiAqIHVwb24gZW50aXJlbHkuIFZhbGlkYXRlIHlvdXIgbWFya3VwIVxuICovXG5cblxuLyoqXG4gKiBBcmUgdGhlcmUgYW55IGVtcHR5IGVsZW1lbnRzIGluIHlvdXIgcGFnZT9cbiAqL1xuOmVtcHR5e1xuICAgIG91dGxpbmU6NXB4IHNvbGlkIHllbGxvdztcbn1cblxuXG4vKipcbiAqIEltYWdlcyByZXF1aXJlIGBhbHRgIGF0dHJpYnV0ZXMsIGVtcHR5IGBhbHRgcyBhcmUgZmluZSBidXQgc2hvdWxkIGJlXG4gKiBkb3VibGUtY2hlY2tlZCwgbm8gYGFsdGAgaXMgYmFkIGFuZCBpcyBmbGFnZ2VkIHJlZC5cbiAqL1xuaW1ne1xuICAgIG91dGxpbmU6NXB4IHNvbGlkIHJlZDtcbn1cbmltZ1thbHRde1xuICAgIG91dGxpbmU6bm9uZTtcbn1cbmltZ1thbHQ9XCJcIl17XG4gICAgb3V0bGluZTo1cHggc29saWQgeWVsbG93O1xufVxuXG5cbi8qKlxuICogTGlua3Mgc29tZXRpbWVzLCB0aG91Z2ggbm90IGFsd2F5cywgYmVuZWZpdCBmcm9tIGB0aXRsZWAgYXR0cmlidXRlcy4gTGlua3NcbiAqIHdpdGhvdXQgYXJlIG5ldmVyIGludmFsaWQgYnV0IGl04oCZcyBhIGdvb2QgaWRlYSB0byBjaGVjay5cbiAqL1xuYXtcbiAgICBvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5hW3RpdGxlXXtcbiAgICBvdXRsaW5lOm5vbmU7XG59XG5cblxuLyoqXG4gKiBEb3VibGUtY2hlY2sgYW55IGxpbmtzIHdob3NlIGBocmVmYCBpcyBzb21ldGhpbmcgcXVlc3Rpb25hYmxlLlxuICovXG5hW2hyZWY9XCIjXCJdLFxuYVtocmVmKj1cImphdmFzY3JpcHRcIl17XG4gICAgb3V0bGluZTo1cHggc29saWQgeWVsbG93O1xufVxuXG5cbi8qKlxuICogVGhlIGB0YXJnZXRgIGF0dHJpYnV0ZSBhaW7igJl0IHRvbyBuaWNlLi4uXG4gKi9cbmFbdGFyZ2V0XXtcbiAgICBvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5cblxuLyoqXG4gKiBFbnN1cmUgYW55IGxpc3RzIG9ubHkgY29udGFpbiBgbGlgcyBhcyBjaGlsZHJlbi5cbiAqL1xudWwsXG5vbHtcbiAgICA+ICo6bm90KGxpKXtcbiAgICAgICAgb3V0bGluZTo1cHggc29saWQgcmVkO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEl04oCZcyBhbHdheXMgbmljZSB0byBnaXZlIGB0aGBzIGBzY29wZWAgYXR0cmlidXRlcy5cbiAqL1xudGh7XG4gICAgb3V0bGluZTo1cHggc29saWQgeWVsbG93O1xufVxudGhbc2NvcGVde1xuICAgIG91dGxpbmU6bm9uZTtcbn1cblxuXG4vKipcbiAqIGB0cmBzIGFzIGNoaWxkcmVuIG9mIGB0YWJsZWBzIGFpbuKAmXQgZ3JlYXQsIGRpZCB5b3UgbmVlZCBhIGB0aGVhZGAvYHRib2R5YD9cbiAqL1xudGFibGUgPiB0cntcbiAgICBvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5cblxuLyoqXG4gKiBgdGZvb3RgIG5lZWRzIHRvIGNvbWUgKmJlZm9yZSogYHRib2R5YC5cbiAqL1xudGJvZHkgKyB0Zm9vdHtcbiAgICBvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5cblxuLyoqXG4gKiBGb3JtcyByZXF1aXJlIGBhY3Rpb25gIGF0dHJpYnV0ZXNcbiAqL1xuZm9ybXtcbiAgICBvdXRsaW5lOjVweCBzb2xpZCByZWQ7XG59XG5mb3JtW2FjdGlvbl17XG4gICAgb3V0bGluZTpub25lO1xufVxuXG5cbi8qKlxuICogVmFyaW91cyBmb3JtLWZpZWxkIHR5cGVzIGhhdmUgcmVxdWlyZWQgYXR0cmlidXRlcy4gYGlucHV0YHMgbmVlZCBgdHlwZWBcbiAqIGF0dHJpYnV0ZXMsIGB0ZXh0YXJlYWBzIG5lZWQgYHJvd3NgIGFuZCBgY29sc2AgYXR0cmlidXRlcyBhbmQgc3VibWl0IGJ1dHRvbnNcbiAqIG5lZWQgYSBgdmFsdWVgIGF0dHJpYnV0ZS5cbiAqL1xudGV4dGFyZWEsXG5pbnB1dHtcbiAgICBvdXRsaW5lOjVweCBzb2xpZCByZWQ7XG59XG5pbnB1dFt0eXBlXXtcbiAgICBvdXRsaW5lOm5vbmU7XG59XG50ZXh0YXJlYVtyb3dzXVtjb2xzXXtcbiAgICBvdXRsaW5lOm5vbmU7XG59XG5pbnB1dFt0eXBlPXN1Ym1pdF17XG4gICAgb3V0bGluZTo1cHggc29saWQgcmVkO1xufVxuaW5wdXRbdHlwZT1zdWJtaXRdW3ZhbHVlXXtcbiAgICBvdXRsaW5lOm5vbmU7XG59XG5cblxuLyoqXG4gKiBBdm9pZCBpbmxpbmUgc3R5bGVzIHdoZXJlIHBvc3NpYmxlLlxuICovXG5bc3R5bGVde1xuXHRvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5cblxuLyoqXG4gKiBZb3Ugc2hvdWxkIGF2b2lkIHVzaW5nIElEcyBmb3IgQ1NTLCBpcyB0aGlzIGRvaW5nIGFueSBzdHlsaW5nP1xuICovXG5baWRde1xuXHRvdXRsaW5lOjVweCBzb2xpZCB5ZWxsb3c7XG59XG5cblxuLyoqXG4gKiBBcmUgeW91IHVzaW5nIHRoZSBncmlkIHN5c3RlbSBjb3JyZWN0bHk/XG4gKi9cbi5ndyA+IDpub3QoLmcpLFxuLmdyaWQtd3JhcHBlciA+IDpub3QoLmdyaWQpLFxuLmd3LS1yZXYgPiA6bm90KC5nKSxcbi5ncmlkLXdyYXBwZXItLXJldiA+IDpub3QoLmdyaWQpe1xuXHRvdXRsaW5lOjVweCBzb2xpZCByZWQ7XG59XG5cbn0vKiBlbmRpZiAqL1xuIiwiLmZvbnQtLWJhc2Uge1xuXHRmb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Zm9udC1zaXplOiAkYmFzZS1mb250LXNpemU7XG5cdGxpbmUtaGVpZ2h0OiAkYmFzZS1saW5lLWhlaWdodDtcbn1cblxuLmZvbnQtLWJhc2UtLWltcG9ydGFudCB7XG5cdGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseSFpbXBvcnRhbnQ7XG59XG5cbi5mb250LS1ib2xkIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5mb250LS1ub3JtYWwge1xuXHRmb250LXdlaWdodDogbm9ybWFsIWltcG9ydGFudDtcbn1cblxuLmZvbnQtLWl0YWxpYyB7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLypcbi5mb250LS1icmFuZCB7XG5cdGZvbnQtZmFtaWx5OiAnYWN0b3BvbGlzcmVndWxhcichaW1wb3J0YW50O1xufVxuKi9cblxuLyogSCdzICovXG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xufVxuXG5oMiwgLmJldGEge1xuXHRsaW5lLWhlaWdodDogMTtcbn1cblxuLmZvbnQtLXBvc2l0aXZlIHtcblx0Y29sb3I6ICRjb2xvci1ibGFjaztcbn1cblxuLmZvbnQtLW5lZ2F0aXZlIHtcblx0Y29sb3I6ICRjb2xvci13aGl0ZTtcbn1cblxuLnVwcGVyY2FzZSB7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi50ZXh0LWFsaWduLS1jZW50ZXIge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi50ZXh0LWFsaWduLS1yaWdodCB7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uZGlzcGxheS0taW5saW5lLWJsb2NrIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uaGlkZS0tcGFsbSB7XG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRkaXNwbGF5OiBub25lIWltcG9ydGFudDtcblx0fVxufVxuXG4uaGlkZS0tZGVzayB7XG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spIHtcblx0XHRkaXNwbGF5OiBub25lIWltcG9ydGFudDtcblx0fVxufVxuXG4uaGlkZS0tbGFwIHtcblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKSB7XG5cdFx0ZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLnNwcml0ZS0taW5saW5lLWJsb2NrLCAuc3ZnLWljb24ge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5pY29uLS1yb3VuZGVkIHtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItY2k7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZSFpbXBvcnRhbnQ7XG59XG5cbi5zdmctaWNvbi1kb3dubG9hZCB7XG5cdG1hcmdpbi10b3A6IDRweDtcblx0Zm9udC1zaXplOiAwIWltcG9ydGFudDtcbn1cblxuLmJnLXdpcmVzIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmJnLXdpcmVzLS1wYWxtLXBvcnQge1xuXG5cdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsYXAtc3RhcnQgLSAxKSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHtcblxuXHRcdGRpc3BsYXk6IG5vbmUhaW1wb3J0YW50O1xuXG5cdH1cbn1cblxuLmJnLXdpcmVzLS1wYWxtLWxhbmQge1xuXG5cdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsYXAtc3RhcnQgLSAxKSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIHtcblxuXHRcdGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcblxuXHR9XG5cbn1cblxuLnJvdGF0ZWQtLTkwIHtcblx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuXG4ucm90YXRlZC0tMTgwIHtcblx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLnJvdGF0ZWQtLTI3MCB7XG5cdHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7XG59XG5cbiN3cmFwVHlwNCB7XG5cdG1pbi13aWR0aDogaW5oZXJpdDtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRib3JkZXItd2lkdGg6IDVweDtcblx0XHR0b3A6IDA7XG5cdH1cbn1cblxuYm9keSB7XG5cdEBleHRlbmQgLmZvbnQtLWJhc2U7XG59XG5cblxuI2NvbnRlbnQge1xuXG5cdD4gLmFydGlrZWx1c2NocmlmdCwgPiAuYXJ0aWtlbHRleHQge1xuXHRcdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRcdHBhZGRpbmctbGVmdDogJGJhc2Utc3BhY2luZy11bml0O1xuXHRcdFx0cGFkZGluZy1yaWdodDogJGJhc2Utc3BhY2luZy11bml0O1xuXHRcdH1cblx0fVxuXG59XG5cblxuLmJ1IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDlweDtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG59XG5cbmgzLCAuZ2FtbWEge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50O1xufVxuXG4uZWxlbWVudC1kZXNjcmlwdGlvbiB7XG5cdG1hcmdpbi10b3A6ICRiYXNlLXNwYWNpbmctdW5pdCoyO1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgIzAwMDtcblx0cGFkZGluZy10b3A6ICRiYXNlLXNwYWNpbmctdW5pdCoyO1xuXHRwYWRkaW5nLWJvdHRvbTogJGJhc2Utc3BhY2luZy11bml0KjI7XG5cbn1cblxuLmFydGlrZWx0ZXh0IHtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdG1pbi13aWR0aDogaW5oZXJpdDtcbn1cblxuLm5hdmktZm9vdGVyIHtcblx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgYm90dG9tOiAtMXB4O1xuXHQgIHotaW5kZXg6IDEwMDAwO1xuXHQgIGhlaWdodDogMjZweDtcblx0ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHQgIGxlZnQ6IDUwcHg7XG5cdCAgcmlnaHQ6IDUwcHg7XG5cdCAgYm9yZGVyOiAycHggc29saWQgIzAwY2FmMjtcblx0ICBib3JkZXItcmFkaXVzOiA3cHg7XG5cdCAgY29sb3I6ICMwMDA7XG5cdCAgbGluZS1oZWlnaHQ6IDIzcHghaW1wb3J0YW50O1xuXHQgIGZvbnQtc2l6ZTogMTJweCFpbXBvcnRhbnQ7XG59XG5cbi5uYXZpLWZvb3RlciBhIHtcbiAgIGNvbG9yOiAjMDAwO1xufVxuXG5kaXYuZ2ktbGlnaHRib3gge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogNXB4IG5vbmUgI2ZmZjtcbiAgICBib3JkZXItcmFkaXVzOiAzNHB4O31cblxuI2ZhbmN5Ym94LW91dGVyIHtiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O31cbiIsIiVzdmctY29tbW9uIHtcblx0YmFja2dyb3VuZDogdXJsKHN2Zy9zcHJpdGUuY3NzLTExMWY3MWJjLnN2Zykgbm8tcmVwZWF0O1xufVxuXG4uc3ZnLWFycm93LWRvd24ge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4OC40NjE3NTc5MzY1ODM0MiUgNzQuODY3ODkyOTkxMTQ2NDMlO1xuXHR3aWR0aDogOS44NDNweDtcblx0aGVpZ2h0OiA4LjUyNHB4O1xufVxuXG4uc3ZnLWljb24tYWJzY2hsdXNzIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogOTkuOTE2MTIwOTA2ODAxMDElIDQ1LjAyNjE3ODAxMDQ3MTIwNiU7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi1hcnJvdy0tY2ktc2Vjb25kIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogODguOTA0NDYwMTM4MTkwNzQlIDc4Ljg1MzU1NTU1NTU1NTU2JTtcblx0d2lkdGg6IDExLjMzM3B4O1xuXHRoZWlnaHQ6IDE4cHg7XG59XG5cbi5zdmctaWNvbi1hcnJvdy0tbmVnYXRpdmUge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4Ni41MDE3MDU2NTI1MDQ4NSUgNzguODUzNTU1NTU1NTU1NTYlO1xuXHR3aWR0aDogMTEuMzMzcHg7XG5cdGhlaWdodDogMThweDtcbn1cblxuLnN2Zy1pY29uLWFycm93LS1wb3NpdGl2ZSB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDg0LjA5ODk1MTE2NjgxODk4JSA3OC44NTM1NTU1NTU1NTU1NiU7XG5cdHdpZHRoOiAxMS4zMzNweDtcblx0aGVpZ2h0OiAxOHB4O1xufVxuXG4uc3ZnLWljb24tYXVzc3RlbGx1bmcge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0My4zMjQ5MzcwMjc3MDc4MSUgNTQuNzk5NDc2NDM5NzkwNTglO1xuXHR3aWR0aDogODZweDtcblx0aGVpZ2h0OiA4NnB4O1xufVxuXG4uc3ZnLWljb24tYmFuZGVyb2xlIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAuMzM2MzExMjM5MTkzMDklIDA7XG5cdHdpZHRoOiAxMzZweDtcblx0aGVpZ2h0OiAxMjlweDtcbn1cblxuLnN2Zy1pY29uLWJpbGR1bmcge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA3OC4yNTM2NTIzOTI5NDcxMiUgMjIuNTEzMDg5MDA1MjM1NjAzJTtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLWRvd25sb2FkIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogODYuMDI1NDk1MzMyOTQwMDglIDc1LjI0NzM0MjgyODIwNjM4JTtcblx0d2lkdGg6IDIxLjg5NnB4O1xuXHRoZWlnaHQ6IDEwLjg0MXB4O1xufVxuXG4uc3ZnLWljb24tZW5lcmdpZSB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDAgNzcuMzEyNTY1NDQ1MDI2MTglO1xuXHR3aWR0aDogODZweDtcblx0aGVpZ2h0OiA4NnB4O1xufVxuXG4uc3ZnLWljb24tZm9yc2NodW5nIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogMjEuNjYyNDY4NTEzODUzOTA2JSA3Ny4zMTI1NjU0NDUwMjYxOCU7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi1ob3Jpem9udCB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDIxLjY2MjQ2ODUxMzg1MzkwNiUgOTkuODI1NjU0NDUwMjYxNzglO1xuXHR3aWR0aDogODZweDtcblx0aGVpZ2h0OiA4NnB4O1xufVxuXG4uc3ZnLWljb24taW5mb3JtYXRpayB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDY0Ljk4NzQwNTU0MTU2MTcxJSA3Ny4zMTI1NjU0NDUwMjYxOCU7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi1rb21tdW5pa2F0aW9uIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogOTkuOTE2MTIwOTA2ODAxMDElIDA7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi1rcmV1eiB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDc0LjcyNzA4ODAzNjExNzM4JSA4OS4wOTY3Mjg5NzE5NjI2MiU7XG5cdHdpZHRoOiA0MHB4O1xuXHRoZWlnaHQ6IDQwcHg7XG59XG5cbi5zdmctaWNvbi1sb2dvLWVyZmluZGVybGFuZCB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcblx0d2lkdGg6IDE3NC42NjdweDtcblx0aGVpZ2h0OiAyMDkuMzM0cHg7XG59XG5cbi5zdmctaWNvbi1sdXBlIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNzkuNDQ1NzI3NDgyNjc4OTklIDcwLjY1NDA2Njk4NTY0NTk0JTtcblx0d2lkdGg6IDUwcHg7XG5cdGhlaWdodDogNTBweDtcbn1cblxuLnN2Zy1pY29uLW1hcmtlci1ncnVlbiB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDQwLjU2OTk2MDc3NDUwODg2JSA5Ny44NTkyNDcxNjk0NDMzNCU7XG5cdHdpZHRoOiA1OS4wNDFweDtcblx0aGVpZ2h0OiA3OC4zMjRweDtcbn1cblxuLnN2Zy1pY29uLW1hcmtlci12aW9sZXQge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0MS4xOTkwMzEwMzgzNzg3MSUgMzMuMTA0NDI1MjE0NzkzODMlO1xuXHR3aWR0aDogNTkuMDQxcHg7XG5cdGhlaWdodDogNzguMzI0cHg7XG59XG5cbi5zdmctaWNvbi1tYXJrZXItdmlvbGV0LS1sZWZ0IHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTUuMTI1MTQxODE3OTU4ODElIDMzLjEwNDQyNTIxNDc5MzgzJTtcblx0d2lkdGg6IDU5LjA0MXB4O1xuXHRoZWlnaHQ6IDc4LjMyNHB4O1xufVxuXG4uc3ZnLWljb24tbWF0ZXJpYWwge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDk5LjgyNTY1NDQ1MDI2MTc4JTtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLW1lZGl6aW4ge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA3OC4yNTM2NTIzOTI5NDcxMiUgMDtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLW1vYmlsaXRhZXQge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5OS45MTYxMjA5MDY4MDEwMSUgNjcuNTM5MjY3MDE1NzA2ODElO1xuXHR3aWR0aDogODZweDtcblx0aGVpZ2h0OiA4NnB4O1xufVxuXG4uc3ZnLWljb24tbm9iZWwge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5OS45MTYxMjA5MDY4MDEwMSUgMjIuNTEzMDg5MDA1MjM1NjAzJTtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLW9wdGlrIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNzguMjUzNjUyMzkyOTQ3MTIlIDQ1LjAyNjE3ODAxMDQ3MTIwNiU7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi1wcmF4aXMge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMS42NjI0Njg1MTM4NTM5MDYlIDU0Ljc5OTQ3NjQzOTc5MDU4JTtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLXNwcmFjaGUtZGUge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1My4zNTgxOTg2MTQzMTg3JSA4OS4wOTY3Mjg5NzE5NjI2MiU7XG5cdHdpZHRoOiA1MHB4O1xuXHRoZWlnaHQ6IDQwcHg7XG59XG5cbi5zdmctaWNvbi1zcHJhY2hlLWVuIHtcblx0QGV4dGVuZCAlc3ZnLWNvbW1vbjtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNjQuOTA1NTQyNzI1MTczMiUgODkuMDk2NzI4OTcxOTYyNjIlO1xuXHR3aWR0aDogNTBweDtcblx0aGVpZ2h0OiA0MHB4O1xufVxuXG4uc3ZnLWljb24tc3ByYWNoZW4ge1xuXHRAZXh0ZW5kICVzdmctY29tbW9uO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDU0Ljc5OTQ3NjQzOTc5MDU4JTtcblx0d2lkdGg6IDg2cHg7XG5cdGhlaWdodDogODZweDtcbn1cblxuLnN2Zy1pY29uLXN0dWRpZXJlbiB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDQzLjMyNDkzNzAyNzcwNzgxJSA3Ny4zMTI1NjU0NDUwMjYxOCU7XG5cdHdpZHRoOiA4NnB4O1xuXHRoZWlnaHQ6IDg2cHg7XG59XG5cbi5zdmctaWNvbi12aW9sZXQtbWFzayB7XG5cdEBleHRlbmQgJXN2Zy1jb21tb247XG5cdGJhY2tncm91bmQtcG9zaXRpb246IDU2LjczNzA4OTU2MzIzNDM3JSA1My40MjQ4MzU4MzM5OTkwMiU7XG5cdHdpZHRoOiAyOC4yNzFweDtcblx0aGVpZ2h0OiA3Ni4xNzFweDtcbn1cblxuIiwiXG4ucGctbW9kdWxlLCAucGctbW9kdWxlLS11bnBhZGRlZCB7XG5cdHBhZGRpbmc6ICRiYXNlLXNwYWNpbmctdW5pdDtcblx0bGluZS1oZWlnaHQ6ICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG59XG5cbi5wZy1tb2R1bGUtLXVucGFkZGVkIHtcblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkoZGVzaykge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHR9XG59XG5cbi5wZy1pbWcge1xuXHRtYXJnaW4tYm90dG9tOiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG5cdHBhZGRpbmctdG9wOiAzcHg7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XG5cdD4gaW1nIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0bWFyZ2luLWJvdHRvbTogJGhhbGYtc3BhY2luZy11bml0O1xuXHR9XG5cblxuXG5cdD4gLnBnLWltZ19fZGVzYyB7XG5cdFx0Y29sb3I6ICRjb2xvci1jaTtcblx0fVxuXG59XG5cbi5zdmctaWNvbi1sdXBlIHtcblx0ICBtYXJnaW4tdG9wOiAtNjFweDtcblx0ICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdCAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4ucGctbW9kdWxlLW1hcCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQ+IGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbi5wZy12aWRlbyB7XG5cdD4gKiB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLnBnLW1vZHVsZS1tYXBfX2ZsYWdfX2FjdGl2ZSB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Ym90dG9tOiAxcHg7XG5cdGxlZnQ6IDVweDtcblxuXHQ+IC5zdmctaWNvbiB7XG5cdFx0ICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ICBib3R0b206IDA7XG5cdH1cblxuXG59XG5cbi5wZy1tb2R1bGUtbWFwX19mbGFnX19tYXJrZXIgIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRib3R0b206IDA7XG59XG5cbi5wZy1tb2R1bGUtbWFwX19mbGFnIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHdpZHRoOiAxcHg7XG5cdGhlaWdodDogMXB4O1xuXG5cdCY6aG92ZXIge1xuXHRcdHotaW5kZXg6IDk2NjtcblxuXHRcdD4gLnBnLW1vZHVsZS1tYXBfX2ZsYWdfX2FjdGl2ZXtcblx0XHRcdGRpc3BsYXk6IGJsb2NrXG5cdFx0fVxuXG5cdFx0PiAucGctbW9kdWxlLW1hcF9fZmxhZ19fbWFya2VyICB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHR9XG59XG5cbi5wZy1tb2R1bGUtbWFwX19mbGFnX19pbmZvIHtcbiAgY29sb3I6ICNmZmY7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGhlaWdodDogYXV0bztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC03N3B4O1xuICBsZWZ0OiAzN3B4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nLWxlZnQ6IDIycHg7XG5cdFxuICAgJjpiZWZvcmUge1xuXHRcdEBleHRlbmQgLnN2Zy1pY29uLXZpb2xldC1tYXNrO1xuXHRcdCAgY29udGVudDogXCJcIjtcblx0XHQgIGRpc3BsYXk6IGJsb2NrO1xuXHRcdCAgcG9zaXRpb246IGFic29sdXRlO1xuXHRcdCAgbGVmdDogLTdweDtcblx0fVx0XG5cbiAgPiBkaXYge1xuXHQgICAgcGFkZGluZy10b3A6IDdweDtcblx0ICAgIHBhZGRpbmctYm90dG9tOiA3cHg7XG5cdCAgICBwYWRkaW5nLXJpZ2h0OiA3cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IC0xcHg7XG5cdCAgXHRiYWNrZ3JvdW5kOiAjNkYyMTYwO1xuICB9XG5cbn1cblxuLmZhbmN5LWJnIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLnBnLWxpZ2h0Ym94LWNvbnRlbnQge1xuXHRwYWRkaW5nOiAkYmFzZS1zcGFjaW5nLXVuaXQqMi41ICRiYXNlLXNwYWNpbmctdW5pdCAkYmFzZS1zcGFjaW5nLXVuaXQgJGJhc2Utc3BhY2luZy11bml0O1xuXHRtYXgtd2lkdGg6IDUxMHB4O1xuXG5cdCYuaW1hZ2Utb25seSB7XG5cdFx0bWF4LXdpZHRoOiA4MDBweDtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRwYWRkaW5nOiAkaGFsZi1zcGFjaW5nLXVuaXQ7XG5cdH1cblx0XHRcblx0XG5cdGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdFx0bWFyZ2luLXRvcDogJGJhc2Utc3BhY2luZy11bml0O1xuXHRcdH1cblx0XHRcblx0fVxufVxuIiwiLnBnLW1vZHVsZS1ib3gge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1hcmdpbi1ib3R0b206ICRiYXNlLXNwYWNpbmctdW5pdDtcblxuXHQmLnBnLW1vZHVsZS1ib3gtLWljb24tb2Zmc2V0IHtcblx0XHRtYXJnaW4tdG9wOiA0MHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQuaWNvbi0tcm91bmRlZCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogLTMwcHg7XG5cdFx0cmlnaHQ6ICRiYXNlLXNwYWNpbmctdW5pdDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuXHRcdH1cblx0fVxufVxuXG4ucGctbW9kdWxlLWJveF9faGVhZCB7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXG5cdC5ncmlkIHtcblx0XHRtYXJnaW4tbGVmdDogLTMwcHg7XG5cdFx0PiAqIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMzBweDtcblx0XHR9XHRcdFxuXHR9XG5cbiAgIC5wZy1tb2R1bGUtYm94LS1pY29uLW9mZnNldCA+ICYge1xuICAgXHRcdG1hcmdpbi10b3A6IC00MHB4O1xuXG5cdFx0IC5wZy1tb2R1bGUtYm94X19oZWFkX190eHQge1xuXHRcdFx0cGFkZGluZy10b3A6IDQwcHg7XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogJGJhc2Utc3BhY2luZy11bml0O1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQ+ICoge1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiA4NXB4O1xuXG5cdFx0XHR9XG5cblx0XHRcdD4gaDEsID4gaDIsID4gaDMsID4gaDQge1xuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRcdFx0XHRmb250LXNpemU6IDEuM2VtO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdFxuXHRcdH0gICBcdFx0XG5cblx0fVxuXG5cdC5wZy1tb2R1bGUtYm94LS1maXhlZC1oZWlnaHQgPiAmIHtcblx0XHRoZWlnaHQ6IDIwMHB4O1xuXHR9XG5cdFxuXG4vKlxuXHQ+IGgyIHtcblx0XHRjb2xvcjogJGNvbG9yLWNpLTJuZDtcblx0XHRtYXJnaW4tdG9wOiAxZW07XG5cdFx0cGFkZGluZy10b3A6ICRiYXNlLXNwYWNpbmctdW5pdDtcblx0fVxuKi9cbn1cblxuLnBnLW1vZHVsZS1ib3hfX2lubmVyIHtcblx0dHJhbnNpdGlvbjogaGVpZ2h0IDAuM3M7XG5cdGhlaWdodDogMDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHQucGctbW9kdWxlLWJveC0tb3BlbiAmIHtcblx0XHRoZWlnaHQ6IGluaGVyaXQ7XG5cdH1cbn1cblxuLnBnLW1vZHVsZS1ib3hfX2NvbnRlbnQge1xuXHRwYWRkaW5nLWJvdHRvbTogJGJhc2Utc3BhY2luZy11bml0O1xufVxuXG4ucGctbW9kdWxlLWJveF9fY29udGVudF9faGVhZGxpbmUge1xuXHRib3JkZXItYm90dG9tOiAycHggc29saWQgJGNvbG9yLWNpO1xuXHRtYXJnaW4tYm90dG9tOiAkaGFsZi1zcGFjaW5nLXVuaXQ7XG5cblx0PiAqIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHR9XG59XG5cbi5wZy1tb2R1bGUtYm94X19mb290ZXIge1xuXHRtYXJnaW4tdG9wOiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG5cdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkY29sb3ItY2k7XG5cblx0Ji5hbGlnbi0tcmlnaHQge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR9XG59XG5cbi5wZy1tb2R1bGUtYm94LS1vcGVuIHtcblxuXHQucGctbW9kdWxlLWJveF9fZm9vdGVyX19idG4ge1xuXHRcdFxuXHRcdEBleHRlbmQgLm9wZW47XG5cblx0fVxuXG59XG5cbi5wZy1tb2R1bGUtYm94X19mb290ZXJfX2J0biB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogNzBweDtcblx0aGVpZ2h0OiAyMHB4O1xuXHRiYWNrZ3JvdW5kOiAkY29sb3ItY2k7XG5cdG1hcmdpbi1ib3R0b206IC0xMnB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0Ji5vcGVuIHtcblx0XHQ+ICoge1xuXHRcdFx0QGV4dGVuZFx0LnJvdGF0ZWQtLTI3MDtcblx0XHR9XG5cdH1cblxuXHQmLmNsb3NlZCB7XG5cdFx0PiAqIHtcblx0XHRcdEBleHRlbmRcdC5yb3RhdGVkLS05MDtcblx0XHR9XG5cdH1cblxuXHQqIHtcblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cblx0XHRmb250LXNpemU6ICRoNS1zaXplO1xuXHRcdGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cdH1cbn0iLCIvKlxuICogalF1ZXJ5IEZsZXhTbGlkZXIgdjEuOFxuICogaHR0cDovL3d3dy53b290aGVtZXMuY29tL2ZsZXhzbGlkZXIvXG4gKlxuICogQ29weXJpZ2h0IDIwMTIgV29vVGhlbWVzXG4gKiBGcmVlIHRvIHVzZSB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICovXG5cbi8qIEJyb3dzZXIgUmVzZXRzICovXG4uZmxleC1jb250YWluZXIgYTphY3RpdmUsXG4uZmxleHNsaWRlciBhOmFjdGl2ZSxcbi5mbGV4LWNvbnRhaW5lciBhOmZvY3VzLFxuLmZsZXhzbGlkZXIgYTpmb2N1cyAge291dGxpbmU6IG5vbmU7fVxuLnNsaWRlcyxcbi5mbGV4LWNvbnRyb2wtbmF2LFxuLmZsZXgtZGlyZWN0aW9uLW5hdiB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBsaXN0LXN0eWxlOiBub25lO31cblxuLyogRmxleFNsaWRlciBOZWNlc3NhcnkgU3R5bGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4uZmxleHNsaWRlciB7bWFyZ2luOiAwOyBwYWRkaW5nOiAwO31cbi5mbGV4c2xpZGVyIC5zbGlkZXMgPiBsaSB7ZGlzcGxheTogbm9uZTsgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47fSAvKiBIaWRlIHRoZSBzbGlkZXMgYmVmb3JlIHRoZSBKUyBpcyBsb2FkZWQuIEF2b2lkcyBpbWFnZSBqdW1waW5nICovXG4uZmxleHNsaWRlciAuc2xpZGVzIGltZyB7bWF4LXdpZHRoOiAxMDAlOyBkaXNwbGF5OiBibG9jazt9XG4uZmxleC1wYXVzZXBsYXkgc3BhbiB7dGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7fVxuXG4vKiBDbGVhcmZpeCBmb3IgdGhlIC5zbGlkZXMgZWxlbWVudCAqL1xuLnNsaWRlczphZnRlciB7Y29udGVudDogXCIuXCI7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsgdmlzaWJpbGl0eTogaGlkZGVuOyBsaW5lLWhlaWdodDogMDsgaGVpZ2h0OiAwO31cbmh0bWxbeG1sbnNdIC5zbGlkZXMge2Rpc3BsYXk6IGJsb2NrO31cbiogaHRtbCAuc2xpZGVzIHtoZWlnaHQ6IDElO31cblxuLyogTm8gSmF2YVNjcmlwdCBGYWxsYmFjayAqL1xuLyogSWYgeW91IGFyZSBub3QgdXNpbmcgYW5vdGhlciBzY3JpcHQsIHN1Y2ggYXMgTW9kZXJuaXpyLCBtYWtlIHN1cmUgeW91XG4gKiBpbmNsdWRlIGpzIHRoYXQgZWxpbWluYXRlcyB0aGlzIGNsYXNzIG9uIHBhZ2UgbG9hZCAqL1xuLm5vLWpzIC5zbGlkZXMgPiBsaTpmaXJzdC1jaGlsZCB7ZGlzcGxheTogYmxvY2s7fVxuXG5cbi8qIEZsZXhTbGlkZXIgRGVmYXVsdCBUaGVtZVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLmZsZXhzbGlkZXIge2JhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogNHB4IHNvbGlkICNmZmY7IHBvc2l0aW9uOiByZWxhdGl2ZTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7IC1tb3otYm9yZGVyLXJhZGl1czogNXB4OyAtby1ib3JkZXItcmFkaXVzOiA1cHg7IGJvcmRlci1yYWRpdXM6IDVweDsgem9vbTogMTt9XG4uZmxleHNsaWRlciAuc2xpZGVzIHt6b29tOiAxO31cbi5mbGV4c2xpZGVyIC5zbGlkZXMgPiBsaSB7cG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVufVxuLyogU3VnZ2VzdGVkIGNvbnRhaW5lciBmb3IgXCJTbGlkZVwiIGFuaW1hdGlvbiBzZXR1cHMuIENhbiByZXBsYWNlIHRoaXMgd2l0aCB5b3VyIG93biwgaWYgeW91IHdpc2ggKi9cbi5mbGV4LWNvbnRhaW5lciB7em9vbTogMTsgcG9zaXRpb246IHJlbGF0aXZlO31cblxuLyogQ2FwdGlvbiBzdHlsZSAqL1xuLyogSUUgcmdiYSgpIGhhY2sgKi9cbi5mbGV4LWNhcHRpb24ge2JhY2tncm91bmQ6bm9uZTsgLW1zLWZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jNEMwMDAwMDAsZW5kQ29sb3JzdHI9IzRDMDAwMDAwKTtcbmZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj0jNEMwMDAwMDAsZW5kQ29sb3JzdHI9IzRDMDAwMDAwKTsgem9vbTogMTt9XG4uZmxleC1jYXB0aW9uIHt3aWR0aDogOTYlOyBwYWRkaW5nOiAyJTsgbWFyZ2luOiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IGJvdHRvbTogMDsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuMyk7IGNvbG9yOiAjZmZmOyB0ZXh0LXNoYWRvdzogMCAtMXB4IDAgcmdiYSgwLDAsMCwuMyk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE4cHg7fVxuXG4vKiBEaXJlY3Rpb24gTmF2ICovXG4uZmxleC1kaXJlY3Rpb24tbmF2IHsgaGVpZ2h0OiAwOyB9XG4uZmxleC1kaXJlY3Rpb24tbmF2IGxpIGEge3dpZHRoOiA1MnB4OyBoZWlnaHQ6IDUycHg7IG1hcmdpbjogLTEzcHggMCAwOyBkaXNwbGF5OiBibG9jazsgYmFja2dyb3VuZDogdXJsKHRoZW1lL2JnX2RpcmVjdGlvbl9uYXYucG5nKSBuby1yZXBlYXQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1pbmRlbnQ6IC05OTllbTt9XG4uZmxleC1kaXJlY3Rpb24tbmF2IGxpIC5uZXh0IHtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNTJweCAwOyByaWdodDogLTIxcHg7fVxuLmZsZXgtZGlyZWN0aW9uLW5hdiBsaSAucHJldiB7bGVmdDogLTIwcHg7fVxuLmZsZXgtZGlyZWN0aW9uLW5hdiBsaSAuZGlzYWJsZWQge29wYWNpdHk6IC4zOyBmaWx0ZXI6YWxwaGEob3BhY2l0eT0zMCk7IGN1cnNvcjogZGVmYXVsdDt9XG5cbi8qIENvbnRyb2wgTmF2ICovXG4uZmxleC1jb250cm9sLW5hdiB7d2lkdGg6IDEwMCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAtMzBweDsgdGV4dC1hbGlnbjogY2VudGVyO31cbi5mbGV4LWNvbnRyb2wtbmF2IGxpIHttYXJnaW46IDAgMCAwIDVweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB6b29tOiAxOyAqZGlzcGxheTogaW5saW5lO31cbi5mbGV4LWNvbnRyb2wtbmF2IGxpOmZpcnN0LWNoaWxkIHttYXJnaW46IDA7fVxuLmZsZXgtY29udHJvbC1uYXYgbGkgYSB7d2lkdGg6IDEzcHg7IGhlaWdodDogMTNweDsgZGlzcGxheTogYmxvY2s7IGJhY2tncm91bmQ6IHVybCh0aGVtZS9iZ19jb250cm9sX25hdi5wbmcpIG5vLXJlcGVhdDsgY3Vyc29yOiBwb2ludGVyOyB0ZXh0LWluZGVudDogLTk5OWVtO31cbi5mbGV4LWNvbnRyb2wtbmF2IGxpIGE6aG92ZXIge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTEzcHg7fVxuLmZsZXgtY29udHJvbC1uYXYgbGkgYS5hY3RpdmUge2JhY2tncm91bmQtcG9zaXRpb246IDAgLTI2cHg7IGN1cnNvcjogZGVmYXVsdDt9XG5cblxuLmZsZXhzbGlkZXIge1xuXHRtYXJnaW4tYm90dG9tOiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG5cdGJvcmRlcjogbm9uZTtcblx0Ym9yZGVyLXJhZGl1czogMDtcbn1cblxuLmZsZXgtY29udHJvbC1uYXYge1xuXHRwb3NpdGlvbjogaW5oZXJpdDtcbn1cblxuLnBnLXNsaWRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luLWJvdHRvbTogJGJhc2Utc3BhY2luZy11bml0O1xufVxuXG4ucGctc2xpZGVyLW5hdmlnYXRpb24ge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmctdG9wOiAkaGFsZi1zcGFjaW5nLXVuaXQ7XG5cdHBhZGRpbmctYm90dG9tOiAkaGFsZi1zcGFjaW5nLXVuaXQ7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3ItY2ktMm5kO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLWNpLTJuZDtcbn1cblxuLnBnLXNsaWRlci1jb250cm9scy1jb250YWluZXIge1xuXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0cGFkZGluZzogMCA0MHB4IDAgNDBweDtcblx0bWF4LXdpZHRoOiA4MCU7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQ+IC5mbGV4LWNvbnRyb2wtbmF2IHtcblxuXHRcdD4gKiB7XG5cdFx0XHR3aWR0aDogYXV0byFpbXBvcnRhbnQ7XG5cdFx0XHRtaW4td2lkdGg6IGluaGVyaXQhaW1wb3J0YW50O1xuXHRcdFx0ZmxvYXQ6IG5vbmUhaW1wb3J0YW50O1xuXG5cdFx0XHQ+IGEge1xuXG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci13aGl0ZTtcblx0XHRcdFx0cGFkZGluZzogNXB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHR3aWR0aDogMjdweDtcblx0XHRcdFx0aGVpZ2h0OiAyN3B4O1xuXHRcdFx0XHRmb250LXNpemU6IDA7XG5cblx0XHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGNvbG9yLWNpLTJuZDtcblxuXHRcdFx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1jaS0ybmQ7XG5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHR3aWR0aDogMTVweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDE1cHg7XG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICRjb2xvci1jaTtcblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0fVxuXG59XG5cbi5mbGV4LW5leHQsIC5mbGV4LXByZXYge1xuXHRmb250LXNpemU6IDA7XG5cdEBleHRlbmQgLnN2Zy1pY29uO1xuXHRAZXh0ZW5kIC5zdmctaWNvbi1hcnJvdy0tY2ktc2Vjb25kO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0QGluY2x1ZGUgIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi5mbGV4LXByZXYge1xuXHR0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuXG5cbi5mbGV4LWNhcHRpb24ge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogJGhhbGYtc3BhY2luZy11bml0O1xuICBsZWZ0OiA2MCU7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDQwJTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogJGNvbG9yLWNpO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG5cbiAgKiB7XG4gIFx0Y29sb3I6ICRjb2xvci13aGl0ZSFpbXBvcnRhbnQ7XG4gIFx0bWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcbiAgXHRkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKSB7XG4gIFx0ZGlzcGxheTogbm9uZTtcbiAgfVxuXG59XG5cbiNmYW5jeWJveC1jbG9zZSB7XG5cdEBleHRlbmQgLnN2Zy1pY29uLWtyZXV6O1xuXHQvLyBiYWNrZ3JvdW5kOiB1cmwoaHR0cHM6Ly9kbC5kcm9wYm94dXNlcmNvbnRlbnQuY29tL3MvdGZwZnF5cG0ycDlnY2FiL3Nwcml0ZS5jc3MtZWIyOWFlNWYuc3ZnKSBuby1yZXBlYXQhaW1wb3J0YW50O1xuXHQvLyBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzLyk7XG5cdC8vIGJhY2tncm91bmQtcG9zaXRpb246IDk2LjkwNDA2JSAxMS42ODIyNDI5OTA2NTQyMDYlIWltcG9ydGFudDtcblx0d2lkdGg6IDQwcHghaW1wb3J0YW50O1xuXHRoZWlnaHQ6IDQwcHghaW1wb3J0YW50O1xuXHR0b3A6IDVweCFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAtMjFweCFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAzMHB4IWltcG9ydGFudDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xufVxuXG5cbmRpdi5naS1saWdodGJveCB7XG4gXHRwYWRkaW5nOiAyMHB4OyBkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XG59XG5cbi5mbGV4LWNhcHRpb24uZmxleC1jYXB0aW9uLS1tb2JpbGUge1xuXHRsZWZ0OiAwIWltcG9ydGFudDtcblx0aGVpZ2h0OiBpbmhlcml0IWltcG9ydGFudDtcblx0d2lkdGg6IDEwMCU7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcblx0XHRwb3NpdGlvbjogaW5oZXJpdDtcblx0XHRwYWRkaW5nOiA4cHg7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXApIHtcblx0XHRkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XG5cdFx0cG9zaXRpb246IHN0YXRpYztcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spIHtcblx0XHRkaXNwbGF5OiBub25lIWltcG9ydGFudDtcblx0fVxuXG59XG5cblxuLnNsaWRlcyA+ICogPiBpbWcge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xufVxuXG4ucGctc2xpZGVyX19iYW5kIHtcblx0QGV4dGVuZCAuc3ZnLWljb24tYmFuZGVyb2xlO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHotaW5kZXg6IDkwMDA7XG5cdHJpZ2h0OiAtMTJweDtcblx0dG9wOiAxOHB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHQgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xuXHRcdCAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR9XG59XG5cbi5wZy1zbGlkZXJfX2JhbmRfX2ljb24ge1xuXHRwYWRkaW5nLXRvcDogMjRweDtcblx0cGFkZGluZy1sZWZ0OiAxNXB4O1xufVxuIiwiXG4ubG9nbyB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHJpZ2h0OiAxMzdweDtcblx0Ym9yZGVyOiAycHggc29saWQgJGNvbG9yLWNpO1xuXHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRwYWRkaW5nOiAkYmFzZS1zcGFjaW5nLXVuaXQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblxuXHRAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKSB7XG5cdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0bWFyZ2luOiAkYmFzZS1zcGFjaW5nLXVuaXQgJGhhbGYtc3BhY2luZy11bml0O1xuXHRcdHBvc2l0aW9uOiBpbmhlcml0O1xuXHRcdHBhZGRpbmc6MDtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcCkge1xuXHRcdHdpZHRoOiAzMyU7XG5cdFx0Ym90dG9tOiAwO1xuXHRcdHJpZ2h0OiAxNnB4XG5cdH1cblxufVxuXG4ub2JlcmVOYXZpVHlwNCB7XG5cdHJpZ2h0OiAxMnB4O1xuXHR0b3A6IDMwcHg7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdCAgcmlnaHQ6IDIwcHg7XG5cdFx0ICB0b3A6IDFweDtcblx0fVxufVxuXG4uc3ByYWNoZHJvcGRvd24ge1xuXHRwYWRkaW5nOiA1cHg7XG5cdGJhY2tncm91bmQ6ICRjb2xvci1jaTtcblx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0bWFyZ2luLXRvcDogLTRweDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjg1KTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0QGV4dGVuZCAuc3ZnLWFycm93LWRvd247XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiAxM3B4O1xuXHRcdHRvcDogMjBweDtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcCkge1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdG1hcmdpbi1yaWdodDogLTE5cHg7XG5cdFx0bWFyZ2luLXRvcDogLTdweDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdG92ZXJmbG93OiB2aXNpYmxlO1xuXG5cdFx0JjphZnRlciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG59XG5cbi5sYW5ndWFnZXNlbGVjdG9yRm9ybSB7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogNTQuMTUzcHg7XG4gIFx0aGVpZ2h0OiA0OS44MTFweDtcblx0fVxuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0QGV4dGVuZCAuc3ZnLWxhbmctbW9iaWxlO1xuXHRcdG1hcmdpbi10b3A6IC0xMDAlO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblxuXHRcdH1cblx0fVxufVxuXG4ubGFuZ3VhZ2VzZWxlY3RvclNlbGVjdCB7XG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdHdpZHRoOiAxMDhweDtcblx0aGVpZ2h0OiA0MHB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjNDRjOGY1O1xuXG5cdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHdpZHRoOiA1MHB4O1xuXHRcdGhlaWdodDogNTBweDtcblx0fVxufVxuXG4jd3JhcGNvbnRlbnRUeXA0IHtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cbn1cblxuI2hlYWRlclR5cDQge1xuICBtYXJnaW46IDAgYXV0bztcbiAgbWF4LXdpZHRoOiA5ODBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBpbmhlcml0O1xuICBtYXJnaW4tdG9wOiAkYmFzZS1zcGFjaW5nLXVuaXQqMjtcblxuXG4gIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KHBhbG0pIHtcbiAgXHRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIFx0dG9wOiAwO1xuXHRcdG1hcmdpbi10b3A6IDA7XG4gIH1cblxuXHRAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXApIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAwO1xuXHRcdHBhZGRpbmc6IDAgJGJhc2Utc3BhY2luZy11bml0IDAgJGJhc2Utc3BhY2luZy11bml0O1xuXHR9XG5cbn1cblxuLmhhdXB0bmF2aUpva2VyMiB7XG5cbi8vXHRiYWNrZ3JvdW5kOiB1cmwoaHR0cHM6Ly9kbC5kcm9wYm94dXNlcmNvbnRlbnQuY29tL3MvNWZ0b3c4OHlqY3Q0bnpoL2xvZ28tZXJmaW5kZXJsYW5kLnBuZykgbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2xvZ28tZXJmaW5kZXJsYW5kLnBuZykgbm8tcmVwZWF0O1xuXHR3aWR0aDogMTc1cHg7XG5cdGhlaWdodDogMjA5cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiA5MDAwO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXApIHtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuXHR9XG59XG5cbi5sb2dvSm9rZXIxIHtcbi8vXHRiYWNrZ3JvdW5kOiB1cmwoaHR0cHM6Ly9kbC5kcm9wYm94dXNlcmNvbnRlbnQuY29tL3MvNWZ0b3c4OHlqY3Q0bnpoL2xvZ28tZXJmaW5kZXJsYW5kLnBuZykgbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2xvZ28tZXJmaW5kZXJsYW5kLnBuZykgbm8tcmVwZWF0O1xuXG5cdHdpZHRoOiAxNzVweDtcblx0aGVpZ2h0OiAyMDlweDtcblx0ZGlzcGxheTogbm9uZTtcblx0bWFyZ2luOiAyMHB4IGF1dG87XG5cdGN1cnNvcjogcG9pbnRlcjtcblxuXHRAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLmhhdXB0bmF2aUpva2VyMyB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHRyaWdodDogMDtcblx0Ym90dG9tOiAwO1xuXHR6LWluZGV4OiA1MDAwO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdCYuYWN0aXZlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG59XG5cblxuXG4jaGF1cHRuYXZpIHtcblx0cG9zaXRpb246IGluaGVyaXQ7XG5cdGZsb2F0OiBub25lO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXgtd2lkdGg6IGluaGVyaXQ7XG5cdGxlZnQ6IGluaGVyaXQ7XG5cdHotaW5kZXg6IDcwMDA7XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHdpZHRoOiAzMyU7XG5cdFx0dmVydGljYWwtYWxpZ246IGJvdHRvbTtcblx0fVxuXG5cdD4gdWwge1xuXHRcdGZsb2F0OiBub25lO1xuXHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkY29sb3ItY2k7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGxlZnQ6IDE3JTtcblx0XHR0b3A6IDE2MHB4O1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwKSB7XG5cdFx0XHRib3R0b206IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRvcDogYXV0bztcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKSB7XG5cdFx0XHRoZWlnaHQ6IDMzcHg7XG5cdFx0XHR3aWR0aDogNDhweDtcblx0XHRcdHBhZGRpbmctdG9wOiAyMHB4O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogOHB4O1xuXHRcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHRcdHotaW5kZXg6IDcwMDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0dG9wOiBhdXRvO1xuXG5cdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdGhlaWdodDogaW5oZXJpdDtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRcdG1hcmdpbi10b3A6IC0yMHB4O1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblx0XHRcdFx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMzBweDtcblx0XHRcdFx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDMwcHg7XG5cdFx0XHRcdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXHRcdFx0XHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuXG5cdFx0XHRcdD4gbGkge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCY6aG92ZXIgbGkge1xuXHRcdFx0QGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdD4gbGkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdG92ZXJmbG93OiBhdXRvO1xuXHRcdFx0cGFkZGluZzogMCA4cHggMCA4cHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6ICRiYXNlLXNwYWNpbmctdW5pdDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAyO1xuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmUhaW1wb3J0YW50O1xuXHRcdFx0fVxuXG5cdFx0XHRAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXApIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1jaTtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXG5cdFx0XHRcdD4gYSB7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDEuNiFpbXBvcnRhbnQ7XG5cdFx0XHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAtMThweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWNpO1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci13aGl0ZTtcblx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yLWNpLTJuZDtcblx0XHRcdH1cblxuXHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRjbGVhcjogbGVmdDtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHBhZGRpbmc6IDAgOHB4IDAgOHB4O1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6ICRiYXNlLXNwYWNpbmctdW5pdDtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci13aGl0ZTtcblx0XHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuXHRcdFx0XHRAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXAtYW5kLXVwKSB7XG5cdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogLTE4cHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yLWNpLTJuZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdD4gYSwgJiA+IGE6aG92ZXIge1xuXHRcdFx0XHRcdGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0PiBhIHtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDI7XG5cdFx0XHRcdHBhZGRpbmc6IDAhaW1wb3J0YW50O1xuXHRcdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yLXdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */